--- /dev/null
+{
+ "version": "0.2",
+ "allowCompoundWords": true,
+ "files": [
+ "**/*.md"
+ ],
+ "flagWords": [
+ "alot",
+ "hte",
+ "langauge",
+ "reccommend",
+ "seperate",
+ "teh"
+ ],
+ "ignorePaths": [
+ "**/emojis.md",
+ "**/commands/*",
+ "**/showcase/*",
+ "**/tools/*"
+ ],
+ "ignoreRegExpList": [
+ "# cspell: ignore fenced code blocks",
+ "^(\\s*`{3,}).*[\\s\\S]*?^\\1$",
+ "# cspell: ignore words joined with dot",
+ "\\w+\\.\\w+",
+ "# cspell: ignore strings within backticks",
+ "`.+`",
+ "# cspell: ignore strings within double quotes",
+ "\".+\"",
+ "# cspell: ignore strings within brackets",
+ "\\[.+\\]",
+ "# cspell: ignore strings within parentheses",
+ "\\(.+\\)",
+ "# cspell: ignore words that begin with a slash",
+ "/\\w+",
+ "# cspell: ignore everything within action delimiters",
+ "\\{\\{.+\\}\\}",
+ "# cspell: ignore everything after a right arrow",
+ "\\s+→\\s+.+"
+ ],
+ "language": "en",
+ "words": [
+ "composability",
+ "configurators",
+ "defang",
+ "deindent",
+ "downscale",
+ "downscaling",
+ "exif",
+ "geolocalized",
+ "grayscale",
+ "marshal",
+ "marshaling",
+ "multihost",
+ "multiplatfom",
+ "performantly",
+ "preconfigured",
+ "prerendering",
+ "redirection",
+ "redirections",
+ "subexpression",
+ "suppressible",
+ "templating",
+ "transpile",
+ "unmarshal",
+ "unmarshaling",
+ "unmarshals",
+ "# ----------------------------------------------------------------------",
+ "# cspell: ignore hugo terminology",
+ "# ----------------------------------------------------------------------",
+ "attrlink",
+ "canonify",
+ "codeowners",
++ "dynacache",
+ "eturl",
+ "getenv",
+ "gohugo",
+ "gohugoio",
+ "keyvals",
+ "leftdelim",
+ "linkify",
+ "numworkermultiplier",
+ "rightdelim",
+ "shortcode",
+ "stringifier",
+ "struct",
+ "toclevels",
+ "zgotmplz",
+ "# ----------------------------------------------------------------------",
+ "# cspell: ignore foreign language words",
+ "# ----------------------------------------------------------------------",
+ "bezpieczeństwo",
++ "blatt",
+ "buch",
+ "descripción",
+ "dokumentation",
+ "erklärungen",
+ "libros",
+ "mercredi",
+ "miesiąc",
+ "miesiąc",
+ "miesiąca",
+ "miesiące",
+ "miesięcy",
+ "misérables",
+ "mittwoch",
+ "muchos",
+ "novembre",
+ "otro",
+ "pocos",
+ "produkte",
+ "projekt",
+ "prywatność",
+ "referenz",
+ "régime",
+ "# ----------------------------------------------------------------------",
+ "# cspell: ignore names",
+ "# ----------------------------------------------------------------------",
+ "Atishay",
+ "Cosette",
+ "Eliott",
+ "Furet",
+ "Gregor",
+ "Jaco",
+ "Lanczos",
+ "Ninke",
+ "Noll",
+ "Pastorius",
+ "Samsa",
+ "Stucki",
+ "Thénardier",
+ "# ----------------------------------------------------------------------",
+ "# cspell: ignore operating systems and software packages",
+ "# ----------------------------------------------------------------------",
+ "asciidoctor",
+ "brotli",
+ "cifs",
+ "corejs",
+ "disqus",
+ "docutils",
+ "dpkg",
+ "doas",
+ "eopkg",
+ "gitee",
+ "goldmark",
+ "katex",
+ "kubuntu",
+ "lubuntu",
+ "mathjax",
+ "nosql",
+ "pandoc",
+ "pkgin",
+ "rclone",
+ "xubuntu",
+ "# ----------------------------------------------------------------------",
+ "# cspell: ignore miscellaneous",
+ "# ----------------------------------------------------------------------",
+ "achristie",
+ "ddmaurier",
+ "dring",
+ "inor",
+ "jausten",
+ "jdoe",
+ "jsmith",
+ "milli",
+ "rgba",
+ "rsmith",
+ "tdewolff",
+ "tjones",
+ "wcag",
+ "xfeff"
+ ]
+}
--- /dev/null
--- /dev/null
++<svg width="150" height="36" viewBox="0 0 150 36" fill="none" xmlns="http://www.w3.org/2000/svg">
++<path fill-rule="evenodd" clip-rule="evenodd" d="M38.9337 13.4895H41.1147C41.4378 13.4895 41.8417 13.4895 42.1648 13.4895C42.5686 13.4895 42.8917 13.4087 43.2148 13.2472C43.5379 13.0856 43.7803 12.9241 43.9418 12.6818C44.1034 12.4394 44.2649 12.0355 44.2649 11.6317C44.2649 11.2278 44.1841 10.8239 44.0226 10.5816C43.861 10.3393 43.6187 10.0969 43.3764 10.0162C43.1341 9.85461 42.811 9.77384 42.4879 9.77384C42.1648 9.69306 41.7609 9.69306 41.4378 9.69306H39.0145V13.4895H38.9337ZM35.2181 6.46204H41.7609C42.6494 6.46204 43.4572 6.54282 44.1841 6.70437C44.9919 6.86592 45.6381 7.18902 46.2035 7.51212C46.769 7.916 47.2536 8.40065 47.5767 9.12763C47.8998 9.77384 48.0614 10.6624 48.0614 11.6317C48.0614 12.8433 47.7383 13.8934 47.0921 14.7011C46.4459 15.5089 45.5573 16.0743 44.3457 16.3166L48.6268 23.5057H44.1841L40.63 16.7205H38.7722V23.5057H35.0565V6.46204H35.2181Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M53.3926 17.6091C53.3926 18.4976 53.6349 19.2246 54.1195 19.79C54.6042 20.3554 55.3312 20.5977 56.2197 20.5977C57.1082 20.5977 57.8352 20.3554 58.3199 19.79C58.8045 19.2246 59.0468 18.4976 59.0468 17.6091C59.0468 16.7205 58.8045 15.9935 58.3199 15.4281C57.8352 14.8627 57.1082 14.6204 56.2197 14.6204C55.3312 14.6204 54.6042 14.8627 54.1195 15.4281C53.6349 16.0743 53.3926 16.7205 53.3926 17.6091ZM49.8384 17.6091C49.8384 16.6397 50 15.832 50.3231 15.105C50.6462 14.378 51.1308 13.7318 51.6963 13.1664C52.2617 12.601 52.9887 12.1971 53.7157 11.9548C54.5234 11.6317 55.3312 11.5509 56.2197 11.5509C57.1082 11.5509 57.916 11.7124 58.7237 11.9548C59.5315 12.2779 60.1777 12.6818 60.7431 13.1664C61.3086 13.7318 61.7932 14.378 62.1163 15.105C62.4394 15.832 62.601 16.7205 62.601 17.6091C62.601 18.5784 62.4394 19.3861 62.1163 20.1131C61.7932 20.8401 61.3086 21.4863 60.7431 22.0517C60.1777 22.6171 59.4507 23.021 58.7237 23.2633C57.916 23.5864 57.1082 23.6672 56.2197 23.6672C55.3312 23.6672 54.5234 23.5057 53.7157 23.2633C52.9079 22.9402 52.2617 22.5364 51.6963 22.0517C51.1308 21.4863 50.6462 20.8401 50.3231 20.1131C50 19.3861 49.8384 18.5784 49.8384 17.6091Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M75.929 23.5057H72.4556V21.8902H72.3748C72.2133 22.1325 72.0517 22.3748 71.8902 22.5364C71.7286 22.7787 71.4863 22.9403 71.1632 23.1826C70.8401 23.3441 70.517 23.5057 70.1939 23.5865C69.79 23.6672 69.4669 23.748 68.9823 23.748C68.0937 23.748 67.3668 23.5865 66.8013 23.3441C66.2359 23.1018 65.832 22.6979 65.5089 22.2133C65.1858 21.7286 65.0243 21.1632 64.8627 20.4362C64.782 19.79 64.7012 19.063 64.7012 18.2553V11.7932H68.2553V17.5283C68.2553 17.8514 68.2553 18.1745 68.2553 18.5784C68.2553 18.9015 68.3361 19.3054 68.4976 19.5477C68.6592 19.79 68.8207 20.1131 69.063 20.2747C69.3054 20.4362 69.6285 20.5978 70.1131 20.5978C70.5978 20.5978 70.9209 20.517 71.244 20.3554C71.5671 20.1939 71.7286 19.9516 71.8902 19.7092C72.0517 19.4669 72.1325 19.1438 72.2133 18.7399C72.2941 18.4168 72.2941 18.013 72.2941 17.6091V11.7932H75.929V23.5057Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M86.3489 14.7011H83.1987V18.5784C83.1987 18.9015 83.1987 19.2246 83.2794 19.4669C83.2794 19.7092 83.3602 19.9515 83.5218 20.1131C83.6026 20.2746 83.7641 20.4362 84.0064 20.5977C84.2488 20.6785 84.5719 20.7593 84.895 20.7593C85.0565 20.7593 85.2988 20.7593 85.6219 20.6785C85.945 20.6785 86.1874 20.517 86.3489 20.4362V23.4249C85.945 23.5864 85.5412 23.6672 85.1373 23.748C84.7334 23.8288 84.2488 23.8288 83.8449 23.8288C83.2795 23.8288 82.714 23.748 82.1486 23.6672C81.6639 23.5057 81.1793 23.3441 80.7754 23.021C80.3715 22.7787 80.1292 22.3748 79.8869 21.8902C79.6446 21.4055 79.5638 20.9208 79.5638 20.2746V14.7011H77.3021V11.7932H79.5638V8.31988H83.1179V11.7932H86.2681V14.7011H86.3489Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M96.1228 16.3166C96.1228 15.6704 95.9612 15.1858 95.5573 14.7819C95.1535 14.378 94.588 14.1357 93.9418 14.1357C93.5379 14.1357 93.2148 14.2165 92.8917 14.2973C92.5686 14.4588 92.3263 14.6204 92.084 14.7819C91.8417 15.0242 91.6801 15.1858 91.5993 15.5089C91.5186 15.7512 91.4378 16.0743 91.357 16.3166H96.1228ZM99.1922 21.4863C98.6268 22.2133 97.8998 22.7787 97.0113 23.1826C96.1228 23.5864 95.2342 23.748 94.2649 23.748C93.3764 23.748 92.5686 23.5864 91.7609 23.3441C90.9531 23.021 90.3069 22.6171 89.7415 22.1325C89.1761 21.567 88.6914 20.9208 88.3683 20.1939C88.0452 19.4669 87.8837 18.5784 87.8837 17.6898C87.8837 16.7205 88.0452 15.9128 88.3683 15.1858C88.6914 14.4588 89.1761 13.8126 89.7415 13.2472C90.3069 12.6817 91.0339 12.2779 91.7609 12.0355C92.5686 11.7124 93.3764 11.6317 94.2649 11.6317C95.0727 11.6317 95.8804 11.7932 96.5266 12.0355C97.1728 12.3586 97.7383 12.7625 98.2229 13.2472C98.7076 13.8126 99.0307 14.4588 99.273 15.1858C99.5153 15.9128 99.6769 16.8013 99.6769 17.6898V18.8207H91.357C91.5186 19.5477 91.8417 20.0323 92.3263 20.4362C92.811 20.8401 93.3764 21.0824 94.1034 21.0824C94.6688 21.0824 95.1535 20.9208 95.5573 20.6785C95.9612 20.4362 96.2843 20.0323 96.6074 19.6284L99.1922 21.4863Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M108.562 11.147L104.766 17.0436H108.562V11.147ZM108.562 20.1131H101.212V17.0436L108.078 6.46205H111.955V17.0436H114.136V20.1131H111.955V23.5057H108.481V20.1131H108.562Z" fill="#FFC63C"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M116.478 6.46205H122.052L126.01 17.6091L129.968 6.46205H135.541V23.5057H131.826V10.42H131.745L127.302 23.5057H124.475L120.194 10.42V23.5057H116.478V6.46205Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M146.446 16.3166C146.446 15.6704 146.284 15.1858 145.88 14.7819C145.477 14.378 144.911 14.1357 144.265 14.1357C143.861 14.1357 143.538 14.2165 143.215 14.2973C142.892 14.4588 142.649 14.6204 142.407 14.7819C142.165 15.0242 142.003 15.1858 141.922 15.5089C141.842 15.7512 141.761 16.0743 141.68 16.3166H146.446ZM149.515 21.4863C148.95 22.2133 148.223 22.7787 147.334 23.1826C146.446 23.5864 145.557 23.748 144.588 23.748C143.7 23.748 142.892 23.5864 142.084 23.3441C141.276 23.021 140.63 22.6171 140.065 22.1325C139.499 21.567 139.015 20.9208 138.691 20.1939C138.368 19.4669 138.207 18.5784 138.207 17.6898C138.207 16.7205 138.368 15.9128 138.691 15.1858C139.015 14.4588 139.499 13.8126 140.065 13.2472C140.63 12.6817 141.357 12.2779 142.084 12.0355C142.892 11.7124 143.7 11.6317 144.588 11.6317C145.396 11.6317 146.204 11.7932 146.85 12.0355C147.496 12.3586 148.061 12.7625 148.546 13.2472C149.031 13.8126 149.354 14.4588 149.596 15.1858C149.838 15.9128 150 16.8013 150 17.6898V18.8207H141.68C141.842 19.5477 142.165 20.0323 142.649 20.4362C143.134 20.8401 143.7 21.0824 144.426 21.0824C144.992 21.0824 145.477 20.9208 145.88 20.6785C146.284 20.4362 146.607 20.0323 146.931 19.6284L149.515 21.4863Z" fill="#425277"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M28.1906 1.53473C28.1906 0.646204 28.9176 0 29.7253 0C30.6139 0 31.2601 0.726979 31.2601 1.53473C31.2601 2.42326 30.5331 3.06947 29.7253 3.06947C28.9176 3.15024 28.1906 2.42326 28.1906 1.53473Z" fill="#FF6400"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M0 1.53473C0 0.726979 0.726979 0 1.53473 0C2.42326 0 3.15024 0.726979 3.15024 1.53473C3.15024 2.42326 2.42326 3.15024 1.53473 3.15024C0.726979 3.15024 0 2.42326 0 1.53473Z" fill="#FF6400"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M22.2941 33.6834C22.2941 32.7948 23.021 32.1486 23.8288 32.1486C24.7173 32.1486 25.3635 32.8756 25.3635 33.6834C25.3635 34.5719 24.6366 35.2181 23.8288 35.2181C23.021 35.2181 22.2941 34.5719 22.2941 33.6834Z" fill="#FF6400"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M20.0323 6.62363C20.2746 6.86595 20.2746 7.18906 20.0323 7.35061L17.3667 10.0162C17.1244 10.2585 17.2051 10.4201 17.5283 10.5816C19.063 11.1471 20.2746 12.3587 20.7593 13.8126C20.84 14.055 21.0824 14.1357 21.3247 13.9742L23.9903 11.3086C24.2326 11.0663 24.5557 11.0663 24.7173 11.3086L27.0598 13.6511C27.3021 13.8934 27.4636 13.8126 27.4636 13.4895V4.20036C27.4636 4.03881 27.3829 3.95804 27.2213 3.95804H17.8514C17.5282 3.95804 17.5282 4.11959 17.6898 4.36191L20.0323 6.62363ZM13.7318 10.5008C13.9741 10.4201 14.0549 10.1777 13.8934 9.93542L11.2278 7.26983C10.9854 7.0275 10.9854 6.7044 11.2278 6.54285L13.5703 4.20036C13.8126 3.95804 13.7318 3.79649 13.4087 3.79649H4.2003C4.03875 3.95804 3.8772 4.03881 3.8772 4.20036V13.4895C3.8772 13.8126 4.03875 13.8126 4.28107 13.6511L6.62356 11.3086C6.86589 11.0663 7.18899 11.0663 7.35054 11.3086L10.0161 13.9742C10.2585 14.2165 10.42 14.1357 10.5816 13.8126C11.0662 12.2779 12.2778 11.0663 13.7318 10.5008ZM15.9127 21.1632C15.5896 21.1632 15.5089 21.4055 15.5896 21.6479L17.1244 25.0404C17.2051 25.2828 17.1244 25.6059 16.882 25.7674L13.8934 27.1406C13.651 27.3021 13.651 27.4637 13.8934 27.5445L22.6171 30.6947C22.7787 30.7755 22.9402 30.6947 22.9402 30.5332L26.1712 21.8094C26.252 21.5671 26.1712 21.4055 25.8481 21.5671L22.8594 22.9403C22.6171 23.1018 22.294 22.9403 22.1324 22.6979L20.4362 19.063C20.3554 18.8207 20.1131 18.8207 19.9515 18.9823C19.4669 19.6285 18.8207 20.1939 18.0129 20.5978C17.5282 20.8401 16.882 21.0017 16.3166 21.0824C16.3166 21.0824 16.0743 21.1632 15.9127 21.1632Z" fill="#FFC63C"/>
++<path fill-rule="evenodd" clip-rule="evenodd" d="M11.7124 15.6705C11.7124 13.4895 13.4895 11.7932 15.5896 11.7932C17.7706 11.7932 19.4668 13.5703 19.4668 15.6705C19.4668 17.8514 17.6898 19.6285 15.5896 19.6285C13.4895 19.5477 11.7124 17.8514 11.7124 15.6705Z" fill="#FF6400"/>
++</svg>
--- /dev/null
- name = "Route4Me"
- link = "https://route4me.com"
- title = "Route Planning & Route Optimization Software"
- utm_campaign = "hugosponsor"
- bgcolor = "#334799"
- link_attr = "style='color: #ffffff; font-weight: bold; text-decoration: none; text-align: center'"
+[[banners]]
+ name = "Linode"
+ link = "https://www.linode.com/"
+ logo = "images/sponsors/linode-logo.svg"
+ utm_campaign = "hugosponsor"
+ bgcolor = "#ffffff"
+
+[[banners]]
++ name = "Route4Me"
++ link = "https://route4me.com/"
++ title = "Route Planning & Route Optimization Software"
++ no_query_params = true
++ utm_campaign = "hugosponsor"
++ bgcolor = "#334799"
++ link_attr = "style='color: #ffffff; font-weight: bold; text-decoration: none; text-align: center'"
+
+[[banners]]
+ name = "Your Company?"
+ link = "https://bep.is/en/hugo-sponsor-2023-01/"
+ utm_campaign = "hugosponsor"
+ show_on_hover = true
+ bgcolor = "#4e4f4f"
+ link_attr = "style='color: #ffffff; font-weight: bold; text-decoration: none; text-align: center'"
--- /dev/null
- {{- partial "home-page-sections/showcase.html" . -}}
+{{ define "header" }}
+ {{ partial "hero.html" . }}
+ {{ partial "boxes-small-news.html" . }}
+{{ end }}
+
+{{ define "main" }}
+ <section class="w-100 ph4 ph5-ns pv4">
+ {{- partial "home-page-sections/features-icons.html" . -}}
+ </section>
+
+ {{ partial "home-page-sections/sponsors.html" (dict "cx" . "gtag" "home" ) }}
+
+ {{- partial "home-page-sections/features-single.html" . -}}
+
++ {{/*- partial "home-page-sections/showcase.html" . -*/}}
+
+ <section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-white bb bt b--light-gray">
+ {{- partial "home-page-sections/installation.html" . -}}
+ </section>
+
+ <section class="w-100 ph4 ph5-ns pv4 pv6-ns mid-gray bg-accent-color-dark">
+ {{- partial "home-page-sections/tweets.html" . -}}
+ </section>
+ <section class="w-100 ph4 ph5-ns pt4 pb5 mid-gray bg-primary-color-light bb bt b--light-gray ">
+ {{- partial "home-page-sections/open-source-involvement.html" . -}}
+ </section>
+{{ end }}
--- /dev/null
- {{ $url := printf "%s?%s%s" .link $query_params (querify "utm_source" (.utm_source | default $utmSource ) "utm_medium" "banner" "utm_campaign" (.utm_campaign | default "hugosponsor") "utm_content" (.utm_content | default "gohugoio")) | safeURL }}
+{{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }}
+{{ $gtag := .gtag | default "unknown" }}
+{{ $classes_box := "ba b--dark-gray bg-light-gray br3 flex flex-column flex-wrap items-center justify-center ph3 pv4 mb4 w-100 w-30-l " }}
+{{ $gtag := .gtag | default "unknown" }}
+{{ $isFooter := (eq $gtag "footer") }}
+{{ $utmSource := cond $isFooter "hugofooter" "hugohome" }}
+{{ with .cx.Site.Data.sponsors }}
+ <style>
+ a.show-on-hover {
+ opacity: 0;
+ }
+ a.show-on-hover:hover {
+ opacity: 1;
+ }
+ </style>
+ <section
+ class="{{ $.classes_section | default "bg-primary-color-dark b--dark-gray bb bt ph5 pv4 w-100" }}">
+ <div class="center mw9">
+ <h3 class="b f3 mv0 light-gray">Hugo Sponsors</h3>
+ <div class="flex-ns flex-wrap center justify-between pt3">
+ {{ range .banners }}
+ <div
+ class="{{ $classes_box }} o-100"
+ style="background-color: {{ .bgcolor }};">
+ {{ $query_params := .query_params | default "" }}
++ {{ $url := .link }}
++ {{ if not .no_query_params }}
++ {{ $url = printf "%s?%s%s" .link $query_params (querify "utm_source" (.utm_source | default $utmSource ) "utm_medium" "banner" "utm_campaign" (.utm_campaign | default "hugosponsor") "utm_content" (.utm_content | default "gohugoio")) | safeURL }}
++ {{ end }}
+ {{ $logo := resources.Get .logo }}
+ {{ $gtagID := printf "Sponsor %s %s" .name $gtag | title }}
+ {{ $classes := "" }}
+ {{ if .show_on_hover }}
+ {{ $classes = printf "%s show-on-hover" $classes }}
+ {{ end }}
+ {{ if $isFooter }}
+ {{ $classes = printf "%s f3" $classes }}
+ {{ else }}
+ {{ $classes = printf "%s f1" $classes }}
+ {{ end }}
+ <a
+ href="{{ $url }}"
+ title="{{ .title | default .name }}"
+ {{ if hugo.IsProduction }}
+ onclick="trackOutboundLink({{ printf "'%s', '%s'" $gtagID $url | safeJS }});"
+ {{ end }}
+ class="w-100 grow pa3 {{ $classes }}"
+ {{ with .link_attr }}{{ . | safeHTMLAttr }}{{ end }}>
+ {{ with $logo }}
+ {{ .Content | safeHTML }}
+ {{ else }}
+ {{ .name }}
+ {{ end }}
+ </a>
+ </div>
+ {{ end }}
+ </div>
+ </div>
+ </section>
+{{ end }}
--- /dev/null
- # github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52
++# github.com/gohugoio/gohugoioTheme v0.0.0-20240728210410-d42c342ce472
--- /dev/null
- [[global]]
- name = 'Showcase'
- weight = 20
- identifier = 'showcase'
- pageRef = '/showcase/'
+[[docs]]
+identifier = 'about'
+name = 'About'
+pageRef = '/about/'
+weight = 10
+
+[[docs]]
+name = 'Installation'
+weight = 20
+identifier = 'installation'
+pageRef = '/installation/'
+
+[[docs]]
+name = 'Getting started'
+weight = 30
+identifier = 'getting-started'
+pageRef = '/getting-started/'
+
+[[docs]]
+name = 'Quick reference'
+weight = 40
+identifier = 'quick-reference'
+pageRef = '/quick-reference/'
+post = 'break'
+
+[[docs]]
+name = 'Content management'
+weight = 50
+identifier = 'content-management'
+post = 'expanded'
+pageRef = '/content-management/'
+
+[[docs]]
+name = 'Templates'
+weight = 60
+identifier = 'templates'
+pageRef = '/templates/'
+
+[[docs]]
+name = 'Functions'
+weight = 70
+identifier = 'functions'
+pageRef = '/functions/'
+
+[[docs]]
+name = 'Methods'
+weight = 80
+identifier = 'methods'
+pageRef = '/methods/'
+
+[[docs]]
+name = 'Render hooks'
+weight = 90
+identifier = 'render-hooks'
+pageRef = '/render-hooks/'
+
+[[docs]]
+name = 'Hugo Modules'
+weight = 100
+identifier = 'modules'
+pageRef = '/hugo-modules/'
+
+[[docs]]
+name = 'Hugo Pipes'
+weight = 110
+identifier = 'hugo-pipes'
+pageRef = '/hugo-pipes/'
+
+[[docs]]
+name = 'CLI'
+weight = 120
+post = 'break'
+identifier = 'commands'
+pageRef = '/commands/'
+
+# Low level items
+
+[[docs]]
+name = 'Troubleshooting'
+weight = 130
+identifier = 'troubleshooting'
+pageRef = '/troubleshooting/'
+
+[[docs]]
+name = 'Developer tools'
+weight = 140
+identifier = 'developer-tools'
+pageRef = '/tools/'
+
+[[docs]]
+name = 'Hosting and deployment'
+weight = 150
+identifier = 'hosting-and-deployment'
+pageRef = '/hosting-and-deployment/'
+
+[[docs]]
+name = 'Contribute'
+weight = 160
+post = 'break'
+identifier = 'contribute'
+pageRef = '/contribute/'
+
+######## QUICKLINKS
+
+[[quicklinks]]
+identifier = 'fundamentals'
+name = 'Fundamentals'
+pageRef = '/tags/fundamentals/'
+weight = 1
+
+######## GLOBAL ITEMS TO BE SHARED WITH THE HUGO SITES
+
+[[global]]
+name = 'News'
+weight = 1
+identifier = 'news'
+pageRef = '/news/'
+
+[[global]]
+name = 'Docs'
+weight = 5
+identifier = 'docs'
+url = '/documentation/'
+
+[[global]]
+name = 'Themes'
+weight = 10
+identifier = 'themes'
+url = 'https://themes.gohugo.io/'
+
++# [[global]]
++# name = 'Showcase'
++# weight = 20
++# identifier = 'showcase'
++# pageRef = '/showcase/'
+
+# Anything with a weight > 100 gets an external icon
+
+[[global]]
+name = 'Community'
+weight = 150
+icon = true
+identifier = 'community'
+post = 'external'
+url = 'https://discourse.gohugo.io/'
+
+[[global]]
+name = 'GitHub'
+weight = 200
+identifier = 'github'
+post = 'external'
+url = 'https://github.com/gohugoio/hugo'
--- /dev/null
- : Create templates usings variables, functions, and methods to transform your content, resources, and data into a published page. While HTML templates are the most common, you can create templates for any output format.
+---
+title: Features
+description: Hugo's rich and powerful feature set provides the framework and tools to create static sites that build in seconds, often less.
+categories: [about]
+keywords: []
+menu:
+ docs:
+ parent: about
+ weight: 30
+weight: 30
+toc: true
+---
+
+## Framework
+
+[Multiplatform]
+: Install Hugo's single executable on Linux, macOS, Windows, and more.
+
+[Multilingual]
+: Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations.
+
+[Output formats]
+: Render each page of your site to one or more output formats, with granular control by page kind, section, and path. While HTML is the default output format, you can add JSON, RSS, CSV, and more. For example, create a REST API to access content.
+
+[Templates]
-
++: Create templates using variables, functions, and methods to transform your content, resources, and data into a published page. While HTML templates are the most common, you can create templates for any output format.
+
+[Themes]
+: Reduce development time and cost by using one of the hundreds of themes contributed by the Hugo community. Themes are available for corporate sites, documentation projects, image portfolios, landing pages, personal and professional blogs, resumes, CVs, and more.
+
+[Modules]
+: Reduce development time and cost by creating or importing packaged combinations of archetypes, assets, content, data, templates, translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site.
+
+[Privacy]
+: Configure the behavior of Hugo's embedded templates and shortcodes to facilitate compliance with regional privacy regulations, including the [GDPR] and [CCPA].
+
+[Security]
+: Hugo's security model is based on the premise that template and configuration authors are trusted, but content authors are not. This model enables generation of HTML output safe against code injection. Other protections prevent "shelling out" to arbitrary applications, limit access to specific environment variables, prevent connections to arbitrary remote data sources, and more.
+
+## Content authoring
+
+[Content formats]
+: Create your content using Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, or reStructuredText. Markdown is the default content format, conforming to the [CommonMark] and [GitHub Flavored Markdown] specifications.
+
+[Markdown attributes]
+: Apply HTML attributes such as `class` and `id` to Markdown images and block elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables.
+
+[Markdown extensions]
+: Leverage the embedded Markdown extensions to create tables, definition lists, footnotes, task lists, inserted text, mark text, subscripts, superscripts, and more.
+
+[Markdown render hooks]
+: Override the conversion of Markdown to HTML when rendering fenced code blocks, headings, images, and links. For example, render every standalone image as an HTML `figure` element.
+
+[Diagrams]
+: Use fenced code blocks and Markdown render hooks to include diagrams in your content.
+
+[Mathematics]
+: Include mathematical equations and expressions in Markdown using LaTeX or TeX typesetting syntax.
+
+[Syntax highlighting]
+: Syntactically highlight code examples using Hugo's embedded syntax highlighter, enabled by default for fenced code blocks in Markdown. The syntax highlighter supports hundreds of code languages and dozens of styles.
+
+[Shortcodes]
+: Use Hugo's embedded shortcodes, or create your own, to insert complex content. For example, use shortcodes to include `audio` and `video` elements, render tables from local or remote data sources, insert snippets from other pages, and more.
+
+## Content management
+
+[Content adapters]
+: Create content adapters to dynamically add content when building your site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML.
+
+[Taxonomies]
+: Classify content to establish simple or complex logical relationships between pages. For example, create an authors taxonomy, and assign one or more authors to each page. Among other uses, the taxonomy system provides an inverted, weighted index to render a list of related pages, ordered by relevance.
+
+[Data]
+: Augment your content using local or remote data sources including CSV, JSON, TOML, YAML, and XML. For example, create a shortcode to render an HTML table from a remote CSV file.
+
+[Menus]
+: Provide rapid access to content via Hugo's menu system, configured automatically, globally, or on a page-by-page basis. The menu system is a key component of Hugo's multilingual architecture.
+
+[URL management]
+: Serve any page from any path via global configuration or on a page-by-page basis.
+
- [CSS bundling]
- : Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS.
+## Asset pipelines
+
- [Image processing]
- : Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data.
++[Image processing]
++: Convert, resize, crop, rotate, adjust colors, apply filters, overlay text and images, and extract EXIF data.
+
+[JavaScript bundling]
+: Transpile TypeScript and JSX to JavaScript, bundle, tree shake, minify, create source maps, and perform SRI hashing.
+
- [CSS bundling]: /functions/resources/tocss/
++[Sass processing]
++: Transpile Sass to CSS, bundle, tree shake, minify, create source maps, perform SRI hashing, and integrate with PostCSS.
++
++[Tailwind CSS processing]
++: Compile Tailwind CSS utility classes into standard CSS, bundle, tree shake, optimize, minify, perform SRI hashing, and integrate with PostCSS.
+
+## Performance
+
+[Caching]
+: Reduce build time and cost by rendering a partial template once then cache the result, either globally or within a given context. For example, cache the result of an asset pipeline to prevent reprocessing on every rendered page.
+
+[Segmentation]
+: Reduce build time and cost by partitioning your sites into segments. For example, render the home page and the "news section" every hour, and render the entire site once a week.
+
+[Minification]
+: Minify HTML, CSS, and JavaScript to reduce file size, bandwidth consumption, and loading times.
+
+[CCPA]: https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act
++[Sass processing]: /functions/css/Sass/
+[Caching]: /functions/partials/includecached/
+[CommonMark]: https://spec.commonmark.org/current/
+[Content adapters]: /content-management/content-adapters/
+[Content formats]: /content-management/formats/
+[Data]: /content-management/data-sources/
+[Diagrams]: /content-management/diagrams/
+[GDPR]: https://en.wikipedia.org/wiki/General_Data_Protection_Regulation
+[GitHub Flavored Markdown]: https://github.github.com/gfm/
+[Image processing]: /content-management/image-processing/
+[JavaScript bundling]: /functions/js/build/
+[Markdown attributes]: /content-management/markdown-attributes/
+[Markdown extensions]: /getting-started/configuration-markup/#goldmark-extensions
+[Markdown render hooks]: /render-hooks/introduction/
+[Mathematics]: /content-management/mathematics/
+[Menus]: /content-management/menus/
+[Minification]: /getting-started/configuration/#configure-minify
+[Modules]: https://gohugo.io/hugo-modules/
+[Multilingual]: /content-management/multilingual/
+[Multiplatform]: /installation/
+[Output formats]: /templates/output-formats/
+[Privacy]: /about/privacy/
+[Security]: /about/security/
+[Segmentation]: /getting-started/configuration/#configure-segments
+[Shortcodes]: /content-management/shortcodes/
+[Syntax highlighting]: /content-management/syntax-highlighting/
++[Tailwind CSS processing]: /functions/css/tailwindcss/
+[Taxonomies]: /content-management/taxonomies/
+[Templates]: templates/introduction/
+[Themes]: https://themes.gohugo.io/
+[URL management]: /content-management/urls/
--- /dev/null
- **Hugo is a static site generator. By using Hugo you are already standing on very solid ground. Static HTML files on disk are much easier to reason about compared to server and database driven web sites.**
+---
+title: Privacy
+linkTitle: Privacy
+description: Configure your site to facilitate compliance with regional privacy regulations.
+categories: [about]
+keywords: ["GDPR", "Privacy", "Data Protection"]
+menu:
+ docs:
+ parent: about
+ weight: 40
+weight: 40
+toc: true
+aliases: [/gdpr/,/about/hugo-and-gdpr/]
+---
+
+ General Data Protection Regulation ([GDPR](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation)) is a regulation in EU law on data protection and privacy for all individuals within the European Union and the European Economic Area. It became enforceable on 25 May 2018.
+
++ **Hugo is a static site generator. By using Hugo you are already standing on very solid ground. Static HTML files on disk are much easier to reason about compared to server and database driven websites.**
+
+ But even static websites can integrate with external services, so from version `0.41`, Hugo provides a **privacy configuration** that covers the relevant built-in templates.
+
+ Note that:
+
+ * These settings have their defaults setting set to _off_, i.e. how it worked before Hugo `0.41`. You must do your own evaluation of your site and apply the appropriate settings.
+ * These settings work with the [embedded templates](/templates/embedded/). Some theme may contain custom templates for embedding services like Google Analytics. In that case these options have no effect.
+ * We will continue this work and improve this further in future Hugo versions.
+
+## All privacy settings
+
+Below are all privacy settings and their default value. These settings need to be put in your site configuration (e.g. `hugo.toml`).
+
+{{< code-toggle file=hugo >}}
+[privacy]
+[privacy.disqus]
+disable = false
+[privacy.googleAnalytics]
+disable = false
+respectDoNotTrack = false
+[privacy.instagram]
+disable = false
+simple = false
+[privacy.twitter]
+disable = false
+enableDNT = false
+simple = false
+[privacy.vimeo]
+disable = false
+enableDNT = false
+simple = false
+[privacy.youtube]
+disable = false
+privacyEnhanced = false
+{{< /code-toggle >}}
+
+## Disable all services
+
+An example privacy configuration that disables all the relevant services in Hugo. With this configuration, the other settings will not matter.
+
+{{< code-toggle file=hugo >}}
+[privacy]
+[privacy.disqus]
+disable = true
+[privacy.googleAnalytics]
+disable = true
+[privacy.instagram]
+disable = true
+[privacy.twitter]
+disable = true
+[privacy.vimeo]
+disable = true
+[privacy.youtube]
+disable = true
+{{< /code-toggle >}}
+
+## The privacy settings explained
+
+### GoogleAnalytics
+
+respectDoNotTrack
+: Enabling this will make the GA templates respect the "Do Not Track" HTTP header.
+
+### Instagram
+
+simple
+: If simple mode is enabled, a static and no-JS version of the Instagram image card will be built. Note that this only supports image cards and the image itself will be fetched from Instagram's servers.
+
+**Note:** If you use the _simple mode_ for Instagram and a site styled with Bootstrap 4, you may want to disable the inline styles provided by Hugo:
+
+{{< code-toggle file=hugo >}}
+[services]
+[services.instagram]
+disableInlineCSS = true
+{{< /code-toggle >}}
+
+### Twitter
+
+enableDNT
+: Enabling this for the twitter/tweet shortcode, the tweet and its embedded page on your site are not used for purposes that include personalized suggestions and personalized ads.
+
+simple
+: If simple mode is enabled, a static and no-JS version of a tweet will be built.
+
+**Note:** If you use the _simple mode_ for Twitter, you may want to disable the inline styles provided by Hugo:
+
+{{< code-toggle file=hugo >}}
+[services]
+[services.twitter]
+disableInlineCSS = true
+{{< /code-toggle >}}
+
+### YouTube
+
+privacyEnhanced
+: When you turn on privacy-enhanced mode, YouTube won’t store information about visitors on your website unless the user plays the embedded video.
+
+### Vimeo
+
+enableDNT
+: Enabling this for the vimeo shortcode, the Vimeo player will be blocked from tracking any session data, including all cookies and stats.
+
+simple
+: If simple mode is enabled, the video thumbnail is fetched from Vimeo's servers and it is overlaid with a play button. If the user clicks to play the video, it will open in a new tab directly on Vimeo's website.
--- /dev/null
- [partials]: /templates/partials/
+---
+title: Comments
+description: Hugo ships with an internal Disqus template, but this isn't the only commenting system that will work with your new Hugo website.
+categories: [content management]
+keywords: [sections,content,organization]
+menu:
+ docs:
+ parent: content-management
+ weight: 220
+weight: 220
+toc: true
+aliases: [/extras/comments/]
+---
+
+Hugo ships with support for [Disqus](https://disqus.com/), a third-party service that provides comment and community capabilities to websites via JavaScript.
+
+Your theme may already support Disqus, but if not, it is easy to add to your templates via [Hugo's built-in Disqus partial][disquspartial].
+
+## Add Disqus
+
+Hugo comes with all the code you need to load Disqus into your templates. Before adding Disqus to your site, you'll need to [set up an account][disqussetup].
+
+### Configure Disqus
+
+Disqus comments require you set a single value in your [site's configuration file][configuration] like so:
+
+{{< code-toggle file=hugo >}}
+[services.disqus]
+shortname = 'your-disqus-shortname'
+{{</ code-toggle >}}
+
+For many websites, this is enough configuration. However, you also have the option to set the following in the [front matter] of a single content file:
+
+* `disqus_identifier`
+* `disqus_title`
+* `disqus_url`
+
+### Render Hugo's built-in Disqus partial template
+
+Disqus has its own [internal template](/templates/embedded/#disqus) available, to render it add the following code where you want comments to appear:
+
+```go-html-template
+{{ template "_internal/disqus.html" . }}
+```
+
+## Alternatives
+
+Commercial commenting systems:
+
+- [Emote](https://emote.com/)
+- [Graph Comment](https://graphcomment.com/)
+- [Hyvor Talk](https://talk.hyvor.com/)
+- [IntenseDebate](https://intensedebate.com/)
+- [ReplyBox](https://getreplybox.com/)
+
+Open-source commenting systems:
+
+- [Cactus Comments](https://cactus.chat/docs/integrations/hugo/)
+- [Comentario](https://gitlab.com/comentario/comentario/)
+- [Comma](https://github.com/Dieterbe/comma/)
+- [Commento](https://commento.io/)
+- [Discourse](https://meta.discourse.org/t/embed-discourse-comments-on-another-website-via-javascript/31963)
+- [Giscus](https://giscus.app/)
+- [Isso](https://isso-comments.de/)
+- [Remark42](https://remark42.com/)
+- [Staticman](https://staticman.net/)
+- [Talkyard](https://blog-comments.talkyard.io/)
+- [Utterances](https://utteranc.es/)
+
+[configuration]: /getting-started/configuration/
+[disquspartial]: /templates/embedded/#disqus
+[disqussetup]: https://disqus.com/profile/signup/
+[forum]: https://discourse.gohugo.io
+[front matter]: /content-management/front-matter/
+[kaijuissue]: https://github.com/spf13/kaiju/issues/new
+[issotutorial]: https://stiobhart.net/2017-02-24-isso-comments/
++[partials]: /templates/partial/
+[MongoDB]: https://www.mongodb.com/
--- /dev/null
- : Create a single page template to render each book review.
+---
+title: Content adapters
+description: Create content adapters to dynamically add content when building your site.
+categories: [content management]
+keywords: []
+menu:
+ docs:
+ parent: content-management
+ weight: 290
+weight: 290
+toc: true
+---
+
+{{< new-in 0.126.0 >}}
+
+## Overview
+
+A content adapter is a template that dynamically creates pages when building a site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML.
+
+Unlike templates that reside in the layouts directory, content adapters reside in the content directory, no more than one per directory per language. When a content adapter creates a page, the page's [logical path] will be relative to the content adapter.
+
+```text
+content/
+├── articles/
+│ ├── _index.md
+│ ├── article-1.md
+│ └── article-2.md
+├── books/
+│ ├── _content.gotmpl <-- content adapter
+│ └── _index.md
+└── films/
+ ├── _content.gotmpl <-- content adapter
+ └── _index.md
+```
+
+Each content adapter is named _content.gotmpl and uses the same [syntax] as templates in the layouts directory. You can use any of the [template functions] within a content adapter, as well as the methods described below.
+
+## Methods
+
+Use these methods within a content adapter.
+
+###### AddPage
+
+Adds a page to the site.
+
+{{< code file=content/books/_content.gotmpl >}}
+{{ $content := dict
+ "mediaType" "text/markdown"
+ "value" "The _Hunchback of Notre Dame_ was written by Victor Hugo."
+}}
+{{ $page := dict
+ "content" $content
+ "kind" "page"
+ "path" "the-hunchback-of-notre-dame"
+ "title" "The Hunchback of Notre Dame"
+}}
+{{ .AddPage $page }}
+{{< /code >}}
+
+###### AddResource
+
+Adds a page resource to the site.
+
+{{< code file=content/books/_content.gotmpl >}}
+{{ with resources.Get "images/a.jpg" }}
+ {{ $content := dict
+ "mediaType" .MediaType.Type
+ "value" .
+ }}
+ {{ $resource := dict
+ "content" $content
+ "path" "the-hunchback-of-notre-dame/cover.jpg"
+ }}
+ {{ $.AddResource $resource }}
+{{ end }}
+{{< /code >}}
+
+Then retrieve the new page resource with something like:
+
+{{< code file=layouts/_default/single.html >}}
+{{ with .Resources.Get "cover.jpg" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+{{ end }}
+{{< /code >}}
+
+###### Site
+
+Returns the `Site` to which the pages will be added.
+
+{{< code file=content/books/_content.gotmpl >}}
+{{ .Site.Title }}
+{{< /code >}}
+
+###### Store
+
+Returns a persistent “scratch pad” to store and manipulate data. The main use case for this is to transfer values between executions when [EnableAllLanguages](#enablealllanguages) is set. See [examples](/methods/page/store/).
+
+{{< code file=content/books/_content.gotmpl >}}
+{{ .Store.Set "key" "value" }}
+{{ .Store.Get "key" }}
+{{< /code >}}
+
+###### EnableAllLanguages
+
+By default, Hugo executes the content adapter for the language defined by the _content.gotmpl file . Use this method to activate the content adapter for all languages.
+
+{{< code file=content/books/_content.gotmpl >}}
+{{ .EnableAllLanguages }}
+{{ $content := dict
+ "mediaType" "text/markdown"
+ "value" "The _Hunchback of Notre Dame_ was written by Victor Hugo."
+}}
+{{ $page := dict
+ "content" $content
+ "kind" "page"
+ "path" "the-hunchback-of-notre-dame"
+ "title" "The Hunchback of Notre Dame"
+}}
+{{ .AddPage $page }}
+{{< /code >}}
+
+## Page map
+
+Set any [front matter field] in the map passed to the [`AddPage`](#addpage) method, excluding `markup`. Instead of setting the `markup` field, specify the `content.mediaType` as described below.
+
+This table describes the fields most commonly passed to the `AddPage` method.
+
+Key|Descripion|Required
+:--|:--|:-:
+`content.mediaType`|The content [media type]. Default is `text/markdown`. See [content formats] for examples.|
+`content.value`|The content value as a string.|
+`dates.date`|The page creation date as a `time.Time` value.|
+`dates.expiryDate`|The page expiry date as a `time.Time` value.|
+`dates.lastmod`|The page last modification date as a `time.Time` value.|
+`dates.publishDate`|The page publication date as a `time.Time` value.|
+`kind`|The [page kind]. Default is `page`.|
+`params`|A map of page parameters.|
+`path`|The page's [logical path] relative to the content adapter. Do not include a leading slash or file extension.|:heavy_check_mark:
+`title`|The page title.|
+
+{{% note %}}
+While `path` is the only required field, we recommend setting `title` as well.
+
+When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C` produces a logical path of `/section/a-b-c`.
+{{% /note %}}
+
+## Resource map
+
+Construct the map passed to the [`AddResource`](#addresource) method using the fields below.
+
+Key|Descripion|Required
+:--|:--|:-:
+`content.mediaType`|The content [media type].|:heavy_check_mark:
+`content.value`|The content value as a string or resource.|:heavy_check_mark:
+`name`|The resource name.|
+`params`|A map of resource parameters.|
+`path`|The resources's [logical path] relative to the content adapter. Do not include a leading slash.|:heavy_check_mark:
+`title`|The resource title.|
+
+{{% note %}}
+If the `content.value` is a string Hugo creates a new resource. If the `content.value` is a resource, Hugo obtains the value from the existing resource.
+
+When setting the `path`, Hugo transforms the given string to a logical path. For example, setting `path` to `A B C/cover.jpg` produces a logical path of `/section/a-b-c/cover.jpg`.
+{{% /note %}}
+
+## Example
+
+Create pages from remote data, where each page represents a book review.
+
+Step 1
+: Create the content structure.
+
+```text
+content/
+└── books/
+ ├── _content.gotmpl <-- content adapter
+ └── _index.md
+```
+
+Step 2
+: Inspect the remote data to determine how to map key-value pairs to front matter fields.
+
+: <https://gohugo.io/shared/examples/data/books.json>
+
+Step 3
+: Create the content adapter.
+
+{{< code file=content/books/_content.gotmpl copy=true >}}
+{{/* Get remote data. */}}
+{{ $data := dict }}
+{{ $url := "https://gohugo.io/shared/examples/data/books.json" }}
+{{ with resources.GetRemote $url }}
+ {{ with .Err }}
+ {{ errorf "Unable to get remote resource %s: %s" $url . }}
+ {{ else }}
+ {{ $data = . | transform.Unmarshal }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %s" $url }}
+{{ end }}
+
+{{/* Add pages and page resources. */}}
+{{ range $data }}
+
+ {{/* Add page. */}}
+ {{ $content := dict "mediaType" "text/markdown" "value" .summary }}
+ {{ $dates := dict "date" (time.AsTime .date) }}
+ {{ $params := dict "author" .author "isbn" .isbn "rating" .rating "tags" .tags }}
+ {{ $page := dict
+ "content" $content
+ "dates" $dates
+ "kind" "page"
+ "params" $params
+ "path" .title
+ "title" .title
+ }}
+ {{ $.AddPage $page }}
+
+ {{/* Add page resource. */}}
+ {{ $item := . }}
+ {{ with $url := $item.cover }}
+ {{ with resources.GetRemote $url }}
+ {{ with .Err }}
+ {{ errorf "Unable to get remote resource %s: %s" $url . }}
+ {{ else }}
+ {{ $content := dict "mediaType" .MediaType.Type "value" .Content }}
+ {{ $params := dict "alt" $item.title }}
+ {{ $resource := dict
+ "content" $content
+ "params" $params
+ "path" (printf "%s/cover.%s" $item.title .MediaType.SubType)
+ }}
+ {{ $.AddResource $resource }}
+ {{ end }}
+ {{ else }}
+ {{ errorf "Unable to get remote resource %s" $url }}
+ {{ end }}
+ {{ end }}
+
+{{ end }}
+{{< /code >}}
+
+Step 4
++: Create a single template to render each book review.
+
+{{< code file=layouts/books/single.html copy=true >}}
+{{ define "main" }}
+ <h1>{{ .Title }}</h1>
+
+ {{ with .Resources.GetMatch "cover.*" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="{{ .Params.alt }}">
+ {{ end }}
+
+ <p>Author: {{ .Params.author }}</p>
+
+ <p>
+ ISBN: {{ .Params.isbn }}<br>
+ Rating: {{ .Params.rating }}<br>
+ Review date: {{ .Date | time.Format ":date_long" }}
+ </p>
+
+ {{ with .GetTerms "tags" }}
+ <p>Tags:</p>
+ <ul>
+ {{ range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+ </ul>
+ {{ end }}
+
+ {{ .Content }}
+{{ end }}
+{{< /code >}}
+
+## Multilingual sites
+
+With multilingual sites you can:
+
+1. Create one content adapter for all languages using the [`EnableAllLanguages`](#enablealllanguages) method as described above.
+2. Create content adapters unique to each language. See the examples below.
+
+### Translations by file name
+
+With this site configuration:
+
+{{< code-toggle file=hugo >}}
+[languages.en]
+weight = 1
+
+[languages.de]
+weight = 2
+{{< /code-toggle >}}
+
+Include a language designator in the content adapter's file name.
+
+```text
+content/
+└── books/
+ ├── _content.de.gotmpl
+ ├── _content.en.gotmpl
+ ├── _index.de.md
+ └── _index.en.md
+```
+
+### Translations by content directory
+
+With this site configuration:
+
+{{< code-toggle file=hugo >}}
+[languages.en]
+contentDir = 'content/en'
+weight = 1
+
+[languages.de]
+contentDir = 'content/de'
+weight = 2
+{{< /code-toggle >}}
+
+Create a single content adapter in each directory:
+
+```text
+content/
+├── de/
+│ └── books/
+│ ├── _content.gotmpl
+│ └── _index.md
+└── en/
+ └── books/
+ ├── _content.gotmpl
+ └── _index.md
+```
+
+## Page collisions
+
+Two or more pages collide when they have the same publication path. Due to concurrency, the content of the published page is indeterminate. Consider this example:
+
+```text
+content/
+└── books/
+ ├── _content.gotmpl <-- content adapter
+ ├── _index.md
+ └── the-hunchback-of-notre-dame.md
+```
+
+If the content adapter also creates books/the-hunchback-of-notre-dame, the content of the published page is indeterminate. You can not define the processing order.
+
+To detect page collisions, use the `--printPathWarnings` flag when building your site.
+
+[content formats]: /content-management/formats/#classification
+[front matter field]: /content-management/front-matter/#fields
+[logical path]: /getting-started/glossary/#logical-path
+[media type]: https://en.wikipedia.org/wiki/Media_type
+[page kind]: /getting-started/glossary/#page-kind
+[syntax]: /templates/introduction/
+[template functions]: /functions/
--- /dev/null
- {{</* ref "document2" */>}} // <- From pages/document1.md, relative path
+---
+title: Links and cross references
+description: Shortcodes for creating links to documents.
+categories: [content management]
+keywords: [cross references,references,anchors,urls]
+menu:
+ docs:
+ parent: content-management
+ weight: 170
+weight: 170
+toc: true
+aliases: [/extras/crossreferences/]
+---
+
+The `ref` and `relref` shortcodes display the absolute and relative permalinks to a document, respectively.
+
+## Use of `ref` and `relref`
+
+The `ref` and `relref` shortcodes require a single argument: the path to a content document, with or without a file extension, with or without an anchor. Paths without a leading `/` are first resolved relative to the current page, then to the remainder of the site.
+
+```text
+.
+└── content
+ ├── about
+ | ├── _index.md
+ | └── credits.md
+ ├── pages
+ | ├── document1.md
+ | └── document2.md // has anchor #anchor
+ ├── products
+ | └── index.md
+ └── blog
+ └── my-post.md
+```
+
+The pages can be referenced as follows:
+
+```text
- {{</* ref "#anchor" */>}} // <- From pages/document2.md
- {{</* ref "/blog/my-post" */>}} // <- From anywhere, absolute path
++{{</* ref "document2" */>}} <-- From pages/document1.md, relative path
+{{</* ref "document2#anchor" */>}}
+{{</* ref "document2.md" */>}}
+{{</* ref "document2.md#anchor" */>}}
- {{</* ref "/about" */>}} // <- References /about/_index.md
- {{</* ref "/about/_index" */>}} // Raises REF_NOT_FOUND error
- {{</* ref "/about/credits.md" */>}} // <- References /about/credits.md
++{{</* ref "#anchor" */>}} <-- From pages/document2.md
++{{</* ref "/blog/my-post" */>}} <-- From anywhere, absolute path
+{{</* ref "/blog/my-post.md" */>}}
+{{</* relref "document" */>}}
+{{</* relref "document.md" */>}}
+{{</* relref "#anchor" */>}}
+{{</* relref "/blog/my-post.md" */>}}
+```
+
+index.md can be reference either by its path or by its containing folder without the ending `/`. \_index.md can be referenced only by its containing folder:
+
+```text
- {{</* ref "/products" */>}} // <- References /products/index.md
- {{</* ref "/products/index" */>}} // <- References /products/index.md
++{{</* ref "/about" */>}} <-- References /about/_index.md
++{{</* ref "/about/_index" */>}} <-- Raises REF_NOT_FOUND error
++{{</* ref "/about/credits.md" */>}} <-- References /about/credits.md
+
-
- [lists]: /templates/lists/
- [output formats]: /templates/output-formats/
- [shortcode]: /content-management/shortcodes/
++{{</* ref "/products" */>}} <-- References /products/index.md
++{{</* ref "/products/index" */>}} <-- References /products/index.md
+```
+
+To generate a hyperlink using `ref` or `relref` in Markdown:
+
+```text
+[About]({{</* ref "/about" */>}} "About Us")
+```
+
+Hugo emits an error or warning if a document cannot be uniquely resolved. The error behavior is configurable; see below.
+
+### Link to another language version
+
+Using `ref` or `relref` without specifying a language, will make the reference resolve to the language of the current content page.
+
+To link to another language version of a document, use this syntax:
+
+```text
+{{</* relref path="document.md" lang="ja" */>}}
+```
+
+### Get another output format
+
+To link to another Output Format of a document, use this syntax:
+
+```text
+{{</* relref path="document.md" outputFormat="rss" */>}}
+```
+
+### Heading IDs
+
+When using Markdown document types, Hugo generates element IDs for every heading on a page. For example:
+
+```text
+## Reference
+```
+
+produces this HTML:
+
+```html
+<h2 id="reference">Reference</h2>
+```
+
+Get the permalink to a heading by appending the ID to the path when using the `ref` or `relref` shortcodes:
+
+```text
+{{</* ref "document.md#reference" */>}}
+{{</* relref "document.md#reference" */>}}
+```
+
+Generate a custom heading ID by including an attribute. For example:
+
+```text
+## Reference A {#foo}
+## Reference B {id="bar"}
+```
+
+produces this HTML:
+
+```html
+<h2 id="foo">Reference A</h2>
+<h2 id="bar">Reference B</h2>
+```
+
+Hugo will generate unique element IDs if the same heading appears more than once on a page. For example:
+
+```text
+## Reference
+## Reference
+## Reference
+```
+
+produces this HTML:
+
+```html
+<h2 id="reference">Reference</h2>
+<h2 id="reference-1">Reference</h2>
+<h2 id="reference-2">Reference</h2>
+```
+
+## Ref and RelRef Configuration
+
+The behavior can be configured in `hugo.toml`:
+
+refLinksErrorLevel ("ERROR")
+: When using `ref` or `relref` to resolve page links and a link cannot resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`).
+
+refLinksNotFoundURL
+: URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
--- /dev/null
- See the documentation for the [`Data`] method on `Page` object for details and examples.
+---
+title: Data sources
+description: Use local and remote data sources to augment or create content.
+categories: [content management]
+keywords: [data,json,toml,yaml,xml]
+menu:
+ docs:
+ parent: content-management
+ weight: 280
+weight: 280
+toc: true
+aliases: [/extras/datafiles/,/extras/datadrivencontent/,/doc/datafiles/,/templates/data-templates/]
+---
+
+Hugo can access and [unmarshal] local and remote data sources including CSV, JSON, TOML, YAML, and XML. Use this data to augment existing content or to create new content.
+
+[unmarshal]: /getting-started/glossary/#unmarshal
+
+A data source might be a file in the data directory, a [global resource], a [page resource], or a [remote resource].
+
+[global resource]: /getting-started/glossary/#global-resource
+[page resource]: /getting-started/glossary/#page-resource
+[remote resource]: /getting-started/glossary/#remote-resource
+
+## Data directory
+
+The data directory in the root of your project may contain one or more data files, in either a flat or nested tree. Hugo merges the data files to create a single data structure, accessible with the `Data` method on a `Site` object.
+
+Hugo also merges data directories from themes and modules into this single data structure, where the data directory in the root of your project takes precedence.
+
+{{% note %}}
+Hugo reads the combined data structure into memory and keeps it there for the entire build. For data that is infrequently accessed, use global or page resources instead.
+{{% /note %}}
+
+Theme and module authors may wish to namespace their data files to prevent collisions. For example:
+
+```text
+project/
+└── data/
+ └── mytheme/
+ └── foo.json
+```
+
+{{% note %}}
+Do not place CSV files in the data directory. Access CSV files as page, global, or remote resources.
+{{% /note %}}
+
++See the documentation for the [`Data`] method on a `Site` object for details and examples.
+
+[`Data`]: /methods/site/data/
+
+## Global resources
+
+Use the `resources.Get` and `transform.Unmarshal` functions to access data files that exist as global resources.
+
+See the [`transform.Unmarshal`](/functions/transform/unmarshal/#global-resource) documentation for details and examples.
+
+## Page resources
+
+Use the `Resources.Get` method on a `Page` object combined with the `transform.Unmarshal` function to access data files that exist as page resources.
+
+See the [`transform.Unmarshal`](/functions/transform/unmarshal/#page-resource) documentation for details and examples.
+
+## Remote resources
+
+Use the `resources.GetRemote` and `transform.Unmarshal` functions to access remote data.
+
+See the [`transform.Unmarshal`](/functions/transform/unmarshal/#remote-resource) documentation for details and examples.
+
+## Augment existing content
+
+Use data sources to augment existing content. For example, create a shortcode to render an HTML table from a global CSV resource.
+
+{{< code file=assets/pets.csv >}}
+"name","type","breed","age"
+"Spot","dog","Collie","3"
+"Felix","cat","Malicious","7"
+{{< /code >}}
+
+{{< code file=content/example.md lang=text >}}
+{{</* csv-to-table "pets.csv" */>}}
+{{< /code >}}
+
+{{< code file=layouts/shortcodes/csv-to-table.html >}}
+{{ with $file := .Get 0 }}
+ {{ with resources.Get $file }}
+ {{ with . | transform.Unmarshal }}
+ <table>
+ <thead>
+ <tr>
+ {{ range index . 0 }}
+ <th>{{ . }}</th>
+ {{ end }}
+ </tr>
+ </thead>
+ <tbody>
+ {{ range after 1 . }}
+ <tr>
+ {{ range . }}
+ <td>{{ . }}</td>
+ {{ end }}
+ </tr>
+ {{ end }}
+ </tbody>
+ </table>
+ {{ end }}
+ {{ else }}
+ {{ errorf "The %q shortcode was unable to find %s. See %s" $.Name $file $.Position }}
+ {{ end }}
+{{ else }}
+ {{ errorf "The %q shortcode requires one positional argument, the path to the CSV file relative to the assets directory. See %s" .Name .Position }}
+{{ end }}
+{{< /code >}}
+
+Hugo renders this to:
+
+name|type|breed|age
+:--|:--|:--|:--
+Spot|dog|Collie|3
+Felix|cat|Malicious|7
+
+## Create new content
+
+Use [content adapters] to create new content.
+
+[content adapters]: /content-management/content-adapters/
--- /dev/null
- [sitemap templates]: /templates/sitemap-template/
+---
+title: Front matter
+description: Use front matter to add metadata to your content.
+categories: [content management]
+keywords: [front matter,yaml,toml,json,metadata,archetypes]
+menu:
+ docs:
+ parent: content-management
+ weight: 60
+weight: 60
+toc: true
+aliases: [/content/front-matter/]
+---
+
+## Overview
+
+The front matter at the top of each content file is metadata that:
+
+- Describes the content
+- Augments the content
+- Establishes relationships with other content
+- Controls the published structure of your site
+- Determines template selection
+
+Provide front matter using a serialization format, one of [JSON], [TOML], or [YAML]. Hugo determines the front matter format by examining the delimiters that separate the front matter from the page content.
+
+[json]: https://www.json.org/
+[toml]: https://toml.io/
+[yaml]: https://yaml.org/
+
+See examples of front matter delimiters by toggling between the serialization formats below.
+
+{{< code-toggle file=content/example.md fm=true >}}
+title = 'Example'
+date = 2024-02-02T04:14:54-08:00
+draft = false
+weight = 10
+[params]
+author = 'John Smith'
+{{< /code-toggle >}}
+
+Front matter fields may be [scalar], [arrays], or [maps] containing [boolean], [integer], [float], or [string] values. Note that the TOML format also supports date/time values using unquoted strings.
+
+[scalar]: /getting-started/glossary/#scalar
+[arrays]: /getting-started/glossary/#array
+[maps]: /getting-started/glossary/#map
+[boolean]: /getting-started/glossary/#boolean
+[integer]: /getting-started/glossary/#integer
+[float]: /getting-started/glossary/#float
+[string]: /getting-started/glossary/#string
+
+## Fields
+
+The most common front matter fields are `date`, `draft`, `title`, and `weight`, but you can specify metadata using any of fields below.
+
+{{% note %}}
+The field names below are reserved. For example, you cannot create a custom field named `type`. Create custom fields under the `params` key. See the [parameters] section for details.
+
+[parameters]: #parameters
+{{% /note %}}
+
+###### aliases
+
+(`string array`) An array of one or more aliases, where each alias is a relative URL that will redirect the browser to the current location. Access these values from a template using the [`Aliases`] method on a `Page` object. See the [aliases] section for details.
+
+[`aliases`]: /methods/page/aliases/
+[aliases]: /content-management/urls/#aliases
+
+###### build
+
+(`map`) A map of [build options].
+
+[build options]: /content-management/build-options/
+
+###### cascade {#cascade-field}
+
+(`map`) A map of front matter keys whose values are passed down to the page’s descendants unless overwritten by self or a closer ancestor’s cascade. See the [cascade] section for details.
+
+[cascade]: #cascade
+
+###### date
+
+(`string`) The date associated with the page, typically the creation date. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`Date`] method on a `Page` object.
+
+[`date`]: /methods/page/date/
+
+###### description
+
+(`string`) Conceptually different than the page `summary`, the description is typically rendered within a `meta` element within the `head` element of the published HTML file. Access this value from a template using the [`Description`] method on a `Page` object.
+
+[`description`]: /methods/page/description/
+
+###### draft
+
+(`bool`)
+If `true`, the page will not be rendered unless you pass the `--buildDrafts` flag to the `hugo` command. Access this value from a template using the [`Draft`] method on a `Page` object.
+
+[`draft`]: /methods/page/draft/
+
+###### expiryDate
+
+(`string`) The page expiration date. On or after the expiration date, the page will not be rendered unless you pass the `--buildExpired` flag to the `hugo` command. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`ExpiryDate`] method on a `Page` object.
+
+[`expirydate`]: /methods/page/expirydate/
+
+###### headless
+
+(`bool`) Applicable to [leaf bundles], if `true` this value sets the `render` and `list` [build options] to `never`, creating a headless bundle of [page resources].
+
+[leaf bundles]: /content-management/page-bundles/#leaf-bundles
+[page resources]: /content-management/page-resources/
+
+###### isCJKLanguage
+
+(`bool`) Set to `true` if the content language is in the [CJK] family. This value determines how Hugo calculates word count, and affects the values returned by the [`WordCount`], [`FuzzyWordCount`], [`ReadingTime`], and [`Summary`] methods on a `Page` object.
+
+[`fuzzywordcount`]: /methods/page/wordcount/
+[`readingtime`]: /methods/page/readingtime/
+[`summary`]: /methods/page/summary/
+[`wordcount`]: /methods/page/wordcount/
+[cjk]: /getting-started/glossary/#cjk
+
+###### keywords
+
+(`string array`) An array of keywords, typically rendered within a `meta` element within the `head` element of the published HTML file, or used as a [taxonomy] to classify content. Access these values from a template using the [`Keywords`] method on a `Page` object.
+
+[`keywords`]: /methods/page/keywords/
+[taxonomy]: /getting-started/glossary/#taxonomy
+
+<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
+<!--
+kind
+: The kind of page, e.g. "page", "section", "home" etc. This is usually derived from the content path.
+-->
+
+<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
+<!--
+lang
+: The language code for this page. This is usually derived from the module mount or filename.
+-->
+
+###### lastmod
+
+(`string`) The date that the page was last modified. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`Lastmod`] method on a `Page` object.
+
+[`lastmod`]: /methods/page/date/
+
+###### layout
+
+(`string`) Provide a template name to [target a specific template], overriding the default [template lookup order]. Set the value to the base file name of the template, excluding its extension. Access this value from a template using the [`Layout`] method on a `Page` object.
+
+[`layout`]: /methods/page/layout/
+[template lookup order]: /templates/lookup-order/
+[target a specific template]: templates/lookup-order/#target-a-template
+
+###### linkTitle
+
+(`string`) Typically a shorter version of the `title`. Access this value from a template using the [`LinkTitle`] method on a `Page` object.
+
+[`linktitle`]: /methods/page/linktitle/
+
+###### markup
+
+(`string`) An identifier corresponding to one of the supported [content formats]. If not provided, Hugo determines the content renderer based on the file extension.
+
+[content formats]: /content-management/formats/#classification
+
+###### menus
+
+(`string`,`string array`, or `map`) If set, Hugo adds the page to the given menu or menus. See the [menus] page for details.
+
+[menus]: /content-management/menus/#define-in-front-matter
+
+###### outputs
+
+(`string array`) The [output formats] to render.
+
+[output formats]: /templates/output-formats/
+
+<!-- Added in v0.123.0 but purposefully omitted from documentation. -->
+<!--
+path
+: The canonical page path.
+-->
+
+###### params
+
+{{< new-in 0.123.0 >}}
+
+(`map`) A map of custom [page parameters].
+
+[page parameters]: #parameters
+
+###### publishDate
+
+(`string`) The page publication date. Before the publication date, the page will not be rendered unless you pass the `--buildFuture` flag to the `hugo` command. Note that the TOML format also supports date/time values using unquoted strings. Access this value from a template using the [`PublishDate`] method on a `Page` object.
+
+[`publishdate`]: /methods/page/publishdate/
+
+###### resources
+
+(`map array`) An array of maps to provide metadata for [page resources].
+
+[page-resources]: /content-management/page-resources/#page-resources-metadata
+
+###### sitemap
+
+(`map`) A map of sitemap options. See the [sitemap templates] page for details. Access these values from a template using the [`Sitemap`] method on a `Page` object.
+
++[sitemap templates]: /templates/sitemap/
+[`sitemap`]: /methods/page/sitemap/
+
+###### slug
+
+(`string`) Overrides the last segment of the URL path. Not applicable to section pages. See the [URL management] page for details. Access this value from a template using the [`Slug`] method on a `Page` object.
+
+[`slug`]: /methods/page/slug/
+[URL management]: /content-management/urls/#slug
+
+###### summary
+
+(`string`) Conceptually different than the page `description`, the summary either summarizes the content or serves as a teaser to encourage readers to visit the page. Access this value from a template using the [`Summary`] method on a `Page` object.
+
+[`Summary`]: /methods/page/summary/
+
+###### title
+
+(`string`) The page title. Access this value from a template using the [`Title`] method on a `Page` object.
+
+[`title`]: /methods/page/title/
+
+###### translationKey
+
+(`string`) An arbitrary value used to relate two or more translations of the same page, useful when the translated pages do not share a common path. Access this value from a template using the [`TranslationKey`] method on a `Page` object.
+
+[`translationkey`]: /methods/page/translationkey/
+
+###### type
+
+(`string`) The [content type], overriding the value derived from the top level section in which the page resides. Access this value from a template using the [`Type`] method on a `Page` object.
+
+[content type]: /getting-started/glossary/#content-type
+[`type`]: /methods/page/type/
+
+###### url
+
+(`string`) Overrides the entire URL path. Applicable to regular pages and section pages. See the [URL management] page for details.
+
+###### weight
+(`int`) The page [weight], used to order the page within a [page collection]. Access this value from a template using the [`Weight`] method on a `Page` object.
+
+[page collection]: /getting-started/glossary/#page-collection
+[weight]: /getting-started/glossary/#weight
+[`weight`]: /methods/page/weight/
+
+## Parameters
+
+{{< new-in 0.123.0 >}}
+
+Specify custom page parameters under the `params` key in front matter:
+
+{{< code-toggle file=content/example.md fm=true >}}
+title = 'Example'
+date = 2024-02-02T04:14:54-08:00
+draft = false
+weight = 10
+[params]
+author = 'John Smith'
+{{< /code-toggle >}}
+
+Access these values from a template using the [`Params`] or [`Param`] method on a `Page` object.
+
+[`param`]: /methods/page/param/
+[`params`]: /methods/page/params/
+
+Hugo provides [embedded templates] to optionally insert meta data within the `head` element of your rendered pages. These embedded templates expect the following front matter parameters:
+
+Parameter|Data type|Used by these embedded templates
+:--|:--|:--
+`audio`|`[]string`|[`opengraph.html`]
+`images`|`[]string`|[`opengraph.html`], [`schema.html`], [`twitter_cards.html`]
+`videos`|`[]string`|[`opengraph.html`]
+
+The embedded templates will skip a parameter if not provided in front matter, but will throw an error if the data type is unexpected.
+
+[`opengraph.html`]: {{% eturl opengraph %}}
+[`schema.html`]: {{% eturl schema %}}
+[`twitter_cards.html`]: {{% eturl twitter_cards %}}
+[embedded templates]: /templates/embedded/
+
+## Taxonomies
+
+Classify content by adding taxonomy terms to front matter. For example, with this site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+tag = 'tags'
+genre = 'genres'
+{{< /code-toggle >}}
+
+Add taxonomy terms as shown below:
+
+{{< code-toggle file=content/example.md fm=true >}}
+title = 'Example'
+date = 2024-02-02T04:14:54-08:00
+draft = false
+weight = 10
+tags = ['red','blue']
+genres = ['mystery','romance']
+[params]
+author = 'John Smith'
+{{< /code-toggle >}}
+
+You can add taxonomy terms to the front matter of any these [page kinds]:
+
+- `home`
+- `page`
+- `section`
+- `taxonomy`
+- `term`
+
+[page kinds]: /getting-started/glossary/#page-kind
+
+Access taxonomy terms from a template using the [`Params`] or [`GetTerms`] method on a `Page` object. For example:
+
+{{< code file=layouts/_default/single.html >}}
+{{ with .GetTerms "tags" }}
+ <p>Tags</p>
+ <ul>
+ {{ range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+ </ul>
+{{ end }}
+{{< /code >}}
+
+[`Params`]: /methods/page/params/
+[`GetTerms`]: /methods/page/getterms/
+
+## Cascade
+
+Any [node] can pass down to its descendants a set of front matter values.
+
+[node]: /getting-started/glossary/#node
+
+### Target specific pages
+
+The `cascade` block can be an array with an optional `_target` keyword, allowing you to target different page sets while cascading values.
+
+{{< code-toggle file=content/_index.md fm=true >}}
+title ="Home"
+[[cascade]]
+[cascade.params]
+background = "yosemite.jpg"
+[cascade._target]
+path="/articles/**"
+lang="en"
+kind="page"
+[[cascade]]
+[cascade.params]
+background = "goldenbridge.jpg"
+[cascade._target]
+kind="section"
+{{</ code-toggle >}}
+
+Use any combination of these keywords to target a set of pages:
+
+###### path {#cascade-path}
+
+(`string`) A [Glob](https://github.com/gobwas/glob) pattern matching the content path below /content. Expects Unix-styled slashes. Note that this is the virtual path, so it starts at the mount root. The matching supports double-asterisks so you can match for patterns like `/blog/*/**` to match anything from the third level and down.
+
+###### kind {#cascade-kind}
+
+(`string`) A Glob pattern matching the Page's Kind(s), e.g. "{home,section}".
+
+###### lang {#cascade-lang}
+
+(`string`) A Glob pattern matching the Page's language, e.g. "{en,sv}".
+
+###### environment {#cascade-environment}
+
+(`string`) A Glob pattern matching the build environment, e.g. "{production,development}"
+
+Any of the above can be omitted.
+
+{{% note %}}
+With a multilingual site it may be more efficient to define the `cascade` values in your site configuration to avoid duplicating the `cascade` values on the section, taxonomy, or term page for each language.
+
+With a multilingual site, if you choose to define the `cascade` values in front matter, you must create a section, taxonomy, or term page for each language; the `lang` keyword is ignored.
+{{% /note %}}
+
+### Example
+
+{{< code-toggle file=content/posts/_index.md fm=true >}}
+date = 2024-02-01T21:25:36-08:00
+title = 'Posts'
+[cascade]
+ [cascade.params]
+ banner = 'images/typewriter.jpg'
+{{</ code-toggle >}}
+
+With the above example the posts section page and its descendants will return `images/typewriter.jpg` when `.Params.banner` is invoked unless:
+
+- Said descendant has its own `banner` value set
+- Or a closer ancestor node has its own `cascade.banner` value set.
+
+## Emacs Org Mode
+
+If your [content format] is [Emacs Org Mode], you may provide front matter using Org Mode keywords. For example:
+
+{{< code file=content/example.org lang=text >}}
+#+TITLE: Example
+#+DATE: 2024-02-02T04:14:54-08:00
+#+DRAFT: false
+#+AUTHOR: John Smith
+#+GENRES: mystery
+#+GENRES: romance
+#+TAGS: red
+#+TAGS: blue
+#+WEIGHT: 10
+{{< /code >}}
+
+Note that you can also specify array elements on a single line:
+
+{{< code file=content/example.org lang=text >}}
+#+TAGS[]: red blue
+{{< /code >}}
+
+[content format]: /content-management/formats/
+[emacs org mode]: https://orgmode.org/
--- /dev/null
- Once you have accessed an image as either a page resource or a global resource, render it in your templates using the `Permalink`, `RelPermalink`, `Width`, and `Height` properties.
+---
+title: Image processing
+description: Resize, crop, rotate, filter, and convert images.
+categories: [content management,fundamentals]
+keywords: [resources,images]
+menu:
+ docs:
+ parent: content-management
+ weight: 90
+toc: true
+weight: 90
+---
+
+## Image resources
+
+To process an image you must access the file as a page resource, global resource, or remote resource.
+
+### Page resource
+
+A page resource is a file within a [page bundle]. A page bundle is a directory with an `index.md` or `_index.md` file at its root.
+
+```text
+content/
+└── posts/
+ └── post-1/ <-- page bundle
+ ├── index.md
+ └── sunset.jpg <-- page resource
+```
+
+To access an image as a page resource:
+
+```go-html-template
+{{ $image := .Resources.Get "sunset.jpg" }}
+```
+
+### Global resource
+
+A global resource is a file within the `assets` directory, or within any directory [mounted] to the `assets` directory.
+
+```text
+assets/
+└── images/
+ └── sunset.jpg <-- global resource
+```
+
+To access an image as a global resource:
+
+```go-html-template
+{{ $image := resources.Get "images/sunset.jpg" }}
+```
+
+### Remote resource
+
+A remote resource is a file on a remote server, accessible via HTTP or HTTPS. To access an image as a remote resource:
+
+```go-html-template
+{{ $image := resources.GetRemote "https://gohugo.io/img/hugo-logo.png" }}
+```
+
+## Image rendering
+
- Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG or TIFF images.
++Once you have accessed an image as a resource, render it in your templates using the `Permalink`, `RelPermalink`, `Width`, and `Height` properties.
+
+Example 1: Throws an error if the resource is not found.
+
+```go-html-template
+{{ $image := .Resources.GetMatch "sunset.jpg" }}
+<img src="{{ $image.RelPermalink }}" width="{{ $image.Width }}" height="{{ $image.Height }}">
+```
+
+Example 2: Skips image rendering if the resource is not found.
+
+```go-html-template
+{{ $image := .Resources.GetMatch "sunset.jpg" }}
+{{ with $image }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
+{{ end }}
+```
+
+Example 3: A more concise way to skip image rendering if the resource is not found.
+
+```go-html-template
+{{ with .Resources.GetMatch "sunset.jpg" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
+{{ end }}
+```
+
+Example 4: Skips rendering if there's problem accessing a remote resource.
+
+```go-html-template
+{{ $u := "https://gohugo.io/img/hugo-logo.png" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
+
+## Image processing methods
+
+The `image` resource implements the [`Process`], [`Resize`], [`Fit`], [`Fill`], [`Crop`], [`Filter`], [`Colors`] and [`Exif`] methods.
+
+{{% note %}}
- You may access EXIF data in JPEG and TIFF images. To prevent errors when processing images without EXIF data, wrap the access in a [`with`] statement.
++Metadata (EXIF, IPTC, XMP, etc.) is not preserved during image transformation. Use the `Exif` method with the _original_ image to extract EXIF metadata from JPEG, PNG, TIFF, and WebP images.
+{{% /note %}}
+
+### Process
+
+{{< new-in 0.119.0 >}}
+
+{{% note %}}
+The `Process` method is also available as a filter, which is more effective if you need to apply multiple filters to an image. See [Process filter](/functions/images/process).
+{{% /note %}}
+
+Process processes the image with the given specification. The specification can contain an optional action, one of `resize`, `crop`, `fit` or `fill`. This means that you can use this method instead of [`Resize`], [`Fit`], [`Fill`], or [`Crop`].
+
+See [Options](#image-processing-options) for available options.
+
+You can also use this method apply image processing that does not need any scaling, e.g. format conversions:
+
+```go-html-template
+{{/* Convert the image from JPG to PNG. */}}
+{{ $png := $jpg.Process "png" }}
+```
+
+Some more examples:
+
+```go-html-template
+{{/* Rotate the image 90 degrees counter-clockwise. */}}
+{{ $image := $image.Process "r90" }}
+
+{{/* Scaling actions. */}}
+{{ $image := $image.Process "resize 600x" }}
+{{ $image := $image.Process "crop 600x400" }}
+{{ $image := $image.Process "fit 600x400" }}
+{{ $image := $image.Process "fill 600x400" }}
+```
+
+### Resize
+
+Resize an image to the given width and/or height.
+
+If you specify both width and height, the resulting image will be disproportionally scaled unless the original image has the same aspect ratio.
+
+```go-html-template
+{{/* Resize to a width of 600px and preserve aspect ratio */}}
+{{ $image := $image.Resize "600x" }}
+
+{{/* Resize to a height of 400px and preserve aspect ratio */}}
+{{ $image := $image.Resize "x400" }}
+
+{{/* Resize to a width of 600px and a height of 400px */}}
+{{ $image := $image.Resize "600x400" }}
+```
+
+### Fit
+
+Downscale an image to fit the given dimensions while maintaining aspect ratio. You must provide both width and height.
+
+```go-html-template
+{{ $image := $image.Fit "600x400" }}
+```
+
+### Fill
+
+Crop and resize an image to match the given dimensions. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point.
+
+```go-html-template
+{{ $image := $image.Fill "600x400" }}
+```
+
+### Crop
+
+Crop an image to match the given dimensions without resizing. You must provide both width and height. Use the [`anchor`] option to change the crop box anchor point.
+
+```go-html-template
+{{ $image := $image.Crop "600x400" }}
+```
+
+### Filter
+
+Apply one or more [filters] to an image.
+
+```go-html-template
+{{ $image := $image.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
+```
+
+Write this in a more functional style using pipes. Hugo applies the filters in the order given.
+
+```go-html-template
+{{ $image := $image | images.Filter (images.GaussianBlur 6) (images.Pixelate 8) }}
+```
+
+Sometimes it can be useful to create the filter chain once and then reuse it.
+
+```go-html-template
+{{ $filters := slice (images.GaussianBlur 6) (images.Pixelate 8) }}
+{{ $image1 := $image1.Filter $filters }}
+{{ $image2 := $image2.Filter $filters }}
+```
+
+### Colors
+
+{{< new-in 0.104.0 >}}
+
+`.Colors` returns a slice of hex strings with the dominant colors in the image using a simple histogram method.
+
+```go-html-template
+{{ $colors := $image.Colors }}
+```
+
+This method is fast, but if you also scale down your images, it would be good for performance to extract the colors from the scaled down image.
+
+### EXIF
+
+Provides an [EXIF] object containing image metadata.
+
++You may access EXIF data in JPEG, PNG, TIFF, and WebP images. To prevent errors when processing images without EXIF data, wrap the access in a [`with`] statement.
+
+```go-html-template
+{{ with $image.Exif }}
+ Date: {{ .Date }}
+ Lat/Long: {{ .Lat }}/{{ .Long }}
+ Tags:
+ {{ range $k, $v := .Tags }}
+ TAG: {{ $k }}: {{ $v }}
+ {{ end }}
+{{ end }}
+```
+
+You may also access EXIF fields individually, using the [`lang.FormatNumber`] function to format the fields as needed.
+
+```go-html-template
+{{ with $image.Exif }}
+ <ul>
+ {{ with .Date }}<li>Date: {{ .Format "January 02, 2006" }}</li>{{ end }}
+ {{ with .Tags.ApertureValue }}<li>Aperture: {{ lang.FormatNumber 2 . }}</li>{{ end }}
+ {{ with .Tags.BrightnessValue }}<li>Brightness: {{ lang.FormatNumber 2 . }}</li>{{ end }}
+ {{ with .Tags.ExposureTime }}<li>Exposure Time: {{ . }}</li>{{ end }}
+ {{ with .Tags.FNumber }}<li>F Number: {{ . }}</li>{{ end }}
+ {{ with .Tags.FocalLength }}<li>Focal Length: {{ . }}</li>{{ end }}
+ {{ with .Tags.ISOSpeedRatings }}<li>ISO Speed Ratings: {{ . }}</li>{{ end }}
+ {{ with .Tags.LensModel }}<li>Lens Model: {{ . }}</li>{{ end }}
+ </ul>
+{{ end }}
+```
+
+#### EXIF methods
+
+Date
+: (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`]function.
+
+[time.Format]: /functions/time/format/
+
+Lat
+: (`float64`) Returns the GPS latitude in degrees.
+
+Long
+: (`float64`) Returns the GPS longitude in degrees.
+
+Tags
+: (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration].
+
+## Image processing options
+
+The [`Resize`], [`Fit`], [`Fill`], and [`Crop`] methods accept a space-delimited, case-insensitive list of options. The order of the options within the list is irrelevant.
+
+### Dimensions
+
+With the [`Resize`] method you must specify width, height, or both. The [`Fit`], [`Fill`], and [`Crop`] methods require both width and height. All dimensions are in pixels.
+
+```go-html-template
+{{ $image := $image.Resize "600x" }}
+{{ $image := $image.Resize "x400" }}
+{{ $image := $image.Resize "600x400" }}
+{{ $image := $image.Fit "600x400" }}
+{{ $image := $image.Fill "600x400" }}
+{{ $image := $image.Crop "600x400" }}
+```
+
+### Rotation
+
+Rotates an image counter-clockwise by the given angle. Hugo performs rotation _before_ scaling. For example, if the original image is 600x400 and you wish to rotate the image 90 degrees counter-clockwise while scaling it by 50%:
+
+```go-html-template
+{{ $image = $image.Resize "200x r90" }}
+```
+
+In the example above, the width represents the desired width _after_ rotation.
+
+To rotate an image without scaling, use the dimensions of the original image:
+
+```go-html-template
+{{ with .Resources.GetMatch "sunset.jpg" }}
+ {{ with .Resize (printf "%dx%d r90" .Height .Width) }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
+ {{ end }}
+{{ end }}
+```
+
+In the example above, on the second line, we have reversed width and height to reflect the desired dimensions _after_ rotation.
+
+### Anchor
+
+When using the [`Crop`] or [`Fill`] method, the _anchor_ determines the placement of the crop box. You may specify `TopLeft`, `Top`, `TopRight`, `Left`, `Center`, `Right`, `BottomLeft`, `Bottom`, `BottomRight`, or `Smart`.
+
+The default value is `Smart`, which uses [Smartcrop] image analysis to determine the optimal placement of the crop box. You may override the default value in the [site configuration].
+
+For example, if you have a 400x200 image with a bird in the upper left quadrant, you can create a 200x100 thumbnail containing the bird:
+
+```go-html-template
+{{ $image.Crop "200x100 TopLeft" }}
+```
+
+If you apply [rotation](#rotation) when using the [`Crop`] or [`Fill`] method, specify the anchor relative to the rotated image.
+
+### Target format
+
+By default, Hugo encodes the image in the source format. You may convert the image to another format by specifying `bmp`, `gif`, `jpeg`, `jpg`, `png`, `tif`, `tiff`, or `webp`.
+
+```go-html-template
+{{ $image.Resize "600x webp" }}
+```
+
+To convert an image without scaling, use the dimensions of the original image:
+
+```go-html-template
+{{ with .Resources.GetMatch "sunset.jpg" }}
+ {{ with .Resize (printf "%dx%d webp" .Width .Height) }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}">
+ {{ end }}
+{{ end }}
+```
+
+### Quality
+
+Applicable to JPEG and WebP images, the `q` value determines the quality of the converted image. Higher values produce better quality images, while lower values produce smaller files. Set this value to a whole number between 1 and 100, inclusive.
+
+The default value is 75. You may override the default value in the [site configuration].
+
+```go-html-template
+{{ $image.Resize "600x webp q50" }}
+```
+
+### Hint
+
+Applicable to WebP images, this option corresponds to a set of predefined encoding parameters, and is equivalent to the `-preset` flag for the [`cwebp`] encoder.
+
+[`cwebp`]: https://developers.google.com/speed/webp/docs/cwebp
+
+Value|Example
+:--|:--
+`drawing`|Hand or line drawing with high-contrast details
+`icon`|Small colorful image
+`photo`|Outdoor photograph with natural lighting
+`picture`|Indoor photograph such as a portrait
+`text`|Image that is primarily text
+
+The default value is `photo`. You may override the default value in the [site configuration].
+
+```go-html-template
+{{ $image.Resize "600x webp picture" }}
+```
+
+### Background color
+
+When converting an image from a format that supports transparency (e.g., PNG) to a format that does _not_ support transparency (e.g., JPEG), you may specify the background color of the resulting image.
+
+Use either a 3-digit or 6-digit hexadecimal color code (e.g., `#00f` or `#0000ff`).
+
+The default value is `#ffffff` (white). You may override the default value in the [site configuration].
+
+```go-html-template
+{{ $image.Resize "600x jpg #b31280" }}
+```
+
+### Resampling filter
+
+You may specify the resampling filter used when resizing an image. Commonly used resampling filters include:
+
+Filter|Description
+:--|:--
+`Box`|Simple and fast averaging filter appropriate for downscaling
+`Lanczos`|High-quality resampling filter for photographic images yielding sharp results
+`CatmullRom`|Sharp cubic filter that is faster than the Lanczos filter while providing similar results
+`MitchellNetravali`|Cubic filter that produces smoother results with less ringing artifacts than CatmullRom
+`Linear`|Bilinear resampling filter, produces smooth output, faster than cubic filters
+`NearestNeighbor`|Fastest resampling filter, no antialiasing
+
+The default value is `Box`. You may override the default value in the [site configuration].
+
+```go-html-template
+{{ $image.Resize "600x400 Lanczos" }}
+```
+
+See [github.com/disintegration/imaging] for the complete list of resampling filters. If you wish to improve image quality at the expense of performance, you may wish to experiment with the alternative filters.
+
+## Image processing examples
+
+_The photo of the sunset used in the examples below is Copyright [Bjørn Erik Pedersen](https://commons.wikimedia.org/wiki/User:Bep) (Creative Commons Attribution-Share Alike 4.0 International license)_
+
+{{< imgproc "sunset.jpg" "resize 300x" />}}
+
+{{< imgproc "sunset.jpg" "fill 90x120 left" />}}
+
+{{< imgproc "sunset.jpg" "fill 90x120 right" />}}
+
+{{< imgproc "sunset.jpg" "fit 90x90" />}}
+
+{{< imgproc "sunset.jpg" "crop 250x250 center" />}}
+
+{{< imgproc "sunset.jpg" "resize 300x q10" />}}
+
+This is the shortcode used to generate the examples above:
+
+{{< readfile file=layouts/shortcodes/imgproc.html highlight=go-html-template >}}
+
+Call the shortcode from your Markdown like this:
+
+```go-html-template
+{{</* imgproc "sunset.jpg" "resize 300x" /*/>}}
+```
+
+{{% note %}}
+Note the self-closing shortcode syntax above. You may call the `imgproc` shortcode with or without **inner content**.
+{{% /note %}}
+
+## Imaging configuration
+
+### Processing options
+
+Define an `imaging` section in your site configuration to set the default [image processing options](#image-processing-options).
+
+{{< code-toggle config=imaging />}}
+
+anchor
+: See image processing options: [anchor](#anchor).
+
+bgColor
+: See image processing options: [background color](#background-color).
+
+hint
+: See image processing options: [hint](#hint).
+
+quality
+: See image processing options: [quality](#quality).
+
+resampleFilter
+: See image processing options: [resampling filter](#resampling-filter).
+
+### EXIF data
+
+Define an `imaging.exif` section in your site configuration to control the availability of EXIF data.
+
+{{< code-toggle file=hugo >}}
+[imaging.exif]
+includeFields = ""
+excludeFields = ""
+disableDate = false
+disableLatLong = false
+{{< /code-toggle >}}
+
+disableDate
+: Hugo extracts the image creation date/time into `.Date`. Set this to `true` to disable. Default is `false`.
+
+disableLatLong
+: Hugo extracts the GPS latitude and longitude into `.Lat` and `.Long`. Set this to `true` to disable. Default is `false`.
+
+excludeFields
+: Regular expression matching the EXIF tags to exclude from the `.Tags` collection. Default is `""`.
+
+includeFields
+: Regular expression matching the EXIF tags to include in the `.Tags` collection. Default is `""`. To include all available tags, set this value to `".*"`.
+
+{{% note %}}
+To improve performance and decrease cache size, Hugo excludes the following tags: `ColorSpace`, `Contrast`, `Exif`, `Exposure[M|P|B]`, `Flash`, `GPS`, `JPEG`, `Metering`, `Resolution`, `Saturation`, `Sensing`, `Sharp`, and `WhiteBalance`.
+
+To control tag availability, change the `excludeFields` or `includeFields` settings as described above.
+{{% /note %}}
+
+## Smart cropping of images
+
+By default, Hugo uses the [Smartcrop] library when cropping images with the `Crop` or`Fill` methods. You can set the anchor point manually, but in most cases the `Smart` option will make a good choice.
+
+Examples using the sunset image from above:
+
+{{< imgproc "sunset.jpg" "fill 200x200 smart" />}}
+
+{{< imgproc "sunset.jpg" "crop 200x200 smart" />}}
+
+## Image processing performance consideration
+
+Hugo caches processed images in the `resources` directory. If you include this directory in source control, Hugo will not have to regenerate the images in a CI/CD workflow (e.g., GitHub Pages, GitLab Pages, Netlify, etc.). This results in faster builds.
+
+If you change image processing methods or options, or if you rename or remove images, the `resources` directory will contain unused images. To remove the unused images, perform garbage collection with:
+
+```sh
+hugo --gc
+```
+
+
+[`anchor`]: /content-management/image-processing#anchor
+[mounted]: /hugo-modules/configuration#module-configuration-mounts
+[page bundle]: /content-management/page-bundles/
+[`lang.FormatNumber`]: /functions/lang/formatnumber/
+[filters]: /functions/images/filter/#image-filters
+[github.com/disintegration/imaging]: <https://github.com/disintegration/imaging#image-resizing>
+[Smartcrop]: <https://github.com/muesli/smartcrop#smartcrop>
+[Exif]: <https://en.wikipedia.org/wiki/Exif>
+[`Process`]: #process
+[`Colors`]: #colors
+[`Crop`]: #crop
+[`Exif`]: #exif
+[`Fill`]: #fill
+[`Filter`]: #filter
+[`Fit`]: #fit
+[`Resize`]: #resize
+[site configuration]: #processing-options
+[`with`]: /functions/go-template/with/
--- /dev/null
- [menu templates]: /templates/menu-templates/
+---
+title: Menus
+description: Create menus by defining entries, localizing each entry, and rendering the resulting data structure.
+categories: [content management]
+keywords: [menus]
+menu:
+ docs:
+ parent: content-management
+ weight: 190
+weight: 190
+toc: true
+aliases: [/extras/menus/]
+---
+
+## Overview
+
+To create a menu for your site:
+
+1. Define the menu entries
+2. [Localize] each entry
+3. Render the menu with a [template]
+
+Create multiple menus, either flat or nested. For example, create a main menu for the header, and a separate menu for the footer.
+
+There are three ways to define menu entries:
+
+1. Automatically
+1. In front matter
+1. In site configuration
+
+{{% note %}}
+Although you can use these methods in combination when defining a menu, the menu will be easier to conceptualize and maintain if you use one method throughout the site.
+{{% /note %}}
+
+## Define automatically
+
+To automatically define a menu entry for each top-level [section] of your site, enable the section pages menu in your site configuration.
+
+{{< code-toggle file=hugo >}}
+sectionPagesMenu = "main"
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+
+## Define in front matter
+
+To add a page to the "main" menu:
+
+{{< code-toggle file=content/about.md fm=true >}}
+title = 'About'
+menus = 'main'
+{{< /code-toggle >}}
+
+Access the entry with `site.Menus.main` in your templates. See [menu templates] for details.
+
+To add a page to the "main" and "footer" menus:
+
+{{< code-toggle file=content/contact.md fm=true >}}
+title = 'Contact'
+menus = ['main','footer']
+{{< /code-toggle >}}
+
+Access the entry with `site.Menus.main` and `site.Menus.footer` in your templates. See [menu templates] for details.
+
+{{% note %}}
+The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`.
+{{% /note %}}
+
+### Properties {#properties-front-matter}
+
+Use these properties when defining menu entries in front matter:
+
+identifier
+: (`string`) Required when two or more menu entries have the same `name`, or when localizing the `name` using translation tables. Must start with a letter, followed by letters, digits, or underscores.
+
+name
+: (`string`) The text to display when rendering the menu entry.
+
+params
+: (`map`) User-defined properties for the menu entry.
+
+parent
+: (`string`) The `identifier` of the parent menu entry. If `identifier` is not defined, use `name`. Required for child entries in a nested menu.
+
+post
+: (`string`) The HTML to append when rendering the menu entry.
+
+pre
+: (`string`) The HTML to prepend when rendering the menu entry.
+
+title
+: (`string`) The HTML `title` attribute of the rendered menu entry.
+
+weight
+: (`int`) A non-zero integer indicating the entry's position relative the root of the menu, or to its parent for a child entry. Lighter entries float to the top, while heavier entries sink to the bottom.
+
+### Example {#example-front-matter}
+
+This front matter menu entry demonstrates some of the available properties:
+
+{{< code-toggle file=content/products/software.md fm=true >}}
+title = 'Software'
+[[menus.main]]
+parent = 'Products'
+weight = 20
+pre = '<i class="fa-solid fa-code"></i>'
+[menus.main.params]
+class = 'center'
+{{< /code-toggle >}}
+
+Access the entry with `site.Menus.main` in your templates. See [menu templates] for details.
+
+## Define in site configuration
+
+To define entries for the "main" menu:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'Home'
+pageRef = '/'
+weight = 10
+
+[[menus.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 20
+
+[[menus.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 30
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+
+To define entries for the "footer" menu:
+
+{{< code-toggle file=hugo >}}
+[[menus.footer]]
+name = 'Terms'
+pageRef = '/terms'
+weight = 10
+
+[[menus.footer]]
+name = 'Privacy'
+pageRef = '/privacy'
+weight = 20
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.footer` in your templates. See [menu templates] for details.
+
+{{% note %}}
+The configuration key in the examples above is `menus`. The `menu` (singular) configuration key is an alias for `menus`.
+{{% /note %}}
+
+### Properties {#properties-site-configuration}
+
+{{% note %}}
+The [properties available to entries defined in front matter] are also available to entries defined in site configuration.
+
+[properties available to entries defined in front matter]: /content-management/menus/#properties-front-matter
+{{% /note %}}
+
+Each menu entry defined in site configuration requires two or more properties:
+
+- Specify `name` and `pageRef` for internal links
+- Specify `name` and `url` for external links
+
+pageRef
+: (`string`) The logical path of the target page, relative to the `content` directory. Omit language code and file extension. Required for *internal* links.
+
+Kind|pageRef
+:--|:--
+home|`/`
+page|`/books/book-1`
+section|`/books`
+taxonomy|`/tags`
+term|`/tags/foo`
+
+url
+: (`string`) Required for *external* links.
+
+### Example {#example-site-configuration}
+
+This nested menu demonstrates some of the available properties:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+
+[[menus.main]]
+name = 'Hardware'
+pageRef = '/products/hardware'
+parent = 'Products'
+weight = 1
+
+[[menus.main]]
+name = 'Software'
+pageRef = '/products/software'
+parent = 'Products'
+weight = 2
+
+[[menus.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+
+[[menus.main]]
+name = 'Hugo'
+pre = '<i class="fa fa-heart"></i>'
+url = 'https://gohugo.io/'
+weight = 30
+[menus.main.params]
+rel = 'external'
+{{< /code-toggle >}}
+
+This creates a menu structure that you can access with `site.Menus.main` in your templates. See [menu templates] for details.
+
+## Localize
+
+Hugo provides two methods to localize your menu entries. See [multilingual].
+
+## Render
+
+See [menu templates].
+
+[localize]: /content-management/multilingual/#menus
- [template]: /templates/menu-templates/
++[menu templates]: /templates/menu/
+[multilingual]: /content-management/multilingual/#menus
+[section]: /getting-started/glossary/#section
++[template]: /templates/menu/
--- /dev/null
- : (`string`) The site title for this langauge (optional).
+---
+title: Multilingual mode
+linkTitle: Multilingual
+description: Localize your project for each language and region, including translations, images, dates, currencies, numbers, percentages, and collation sequence. Hugo's multilingual framework supports single-host and multihost configurations.
+categories: [content management]
+keywords: [multilingual,i18n,internationalization]
+menu:
+ docs:
+ parent: content-management
+ weight: 230
+weight: 230
+toc: true
+aliases: [/content/multilingual/,/tutorials/create-a-multilingual-site/]
+---
+
+## Configure languages
+
+This is the default language configuration:
+
+{{< code-toggle config=languages />}}
+
+In the above, `en` is the language key.
+
+{{% note %}}
+Each language key must conform to the syntax described in [RFC 5646]. You must use hyphens to separate subtags. For example:
+
+- `en`
+- `en-GB`
+- `pt-BR`
+
+[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
+{{% /note %}}
+
+This is an example of a site configuration for a multilingual project. Any key not defined in a `languages` object will fall back to the global value in the root of your site configuration.
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'de'
+defaultContentLanguageInSubdir = true
+
+[languages.de]
+contentDir = 'content/de'
+disabled = false
+languageCode = 'de-DE'
+languageDirection = 'ltr'
+languageName = 'Deutsch'
+title = 'Projekt Dokumentation'
+weight = 1
+
+[languages.de.params]
+subtitle = 'Referenz, Tutorials und Erklärungen'
+
+[languages.en]
+contentDir = 'content/en'
+disabled = false
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+title = 'Project Documentation'
+weight = 2
+
+[languages.en.params]
+subtitle = 'Reference, Tutorials, and Explanations'
+{{< /code-toggle >}}
+
+defaultContentLanguage
+: (`string`) The project's default language key, conforming to the syntax described in [RFC 5646]. This value must match one of the defined language keys. Examples:
+
+- `en`
+- `en-GB`
+- `pt-BR`
+
+defaultContentLanguageInSubdir
+: (`bool`) If `true`, Hugo renders the default language site in a subdirectory matching the `defaultContentLanguage`. Default is `false`.
+
+contentDir
+: (`string`) The content directory for this language. Omit if [translating by file name].
+
+disabled
+: (`bool`) If `true`, Hugo will not render content for this language. Default is `false`.
+
+languageCode
+: (`string`) The language tag as described in [RFC 5646]. This value does not affect localization or URLs. Hugo uses this value to populate the `language` element in the [built-in RSS template], and the `lang` attribute of the `html` element in the [built-in alias template]. Examples:
+
+- `en`
+- `en-GB`
+- `pt-BR`
+
+languageDirection
+: (`string`) The language direction, either left-to-right (`ltr`) or right-to-left (`rtl`). Use this value in your templates with the global [`dir`] HTML attribute.
+
+languageName
+: (`string`) The language name, typically used when rendering a language switcher.
+
+title
- The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template, whether a [single content page][contenttemplate] or the [homepage]. It will not print anything if there are no translations for a given page.
++: (`string`) The site title for this language (optional).
+
+weight
+: (`int`) The language weight. When set to a non-zero value, this is the primary sort criteria for this language.
+
+[`dir`]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/dir
+[built-in RSS template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml
+[built-in alias template]: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/alias.html
+[RFC 5646]: https://datatracker.ietf.org/doc/html/rfc5646#section-2.1
+[translating by file name]: #translation-by-file-name
+
+### Changes in Hugo 0.112.0
+
+{{< new-in 0.112.0 >}}
+
+In Hugo `v0.112.0` we consolidated all configuration options, and improved how the languages and their parameters are merged with the main configuration. But while testing this on Hugo sites out there, we received some error reports and reverted some of the changes in favor of deprecation warnings:
+
+1. `site.Language.Params` is deprecated. Use `site.Params` directly.
+1. Adding custom parameters to the top level language configuration is deprecated. Define custom parameters within `languages.xx.params`. See `color` in the example below.
+
+{{< code-toggle file=hugo >}}
+
+title = "My blog"
+languageCode = "en-us"
+
+[languages]
+[languages.sv]
+title = "Min blogg"
+languageCode = "sv"
+[languages.en.params]
+color = "blue"
+{{< /code-toggle >}}
+
+In the example above, all settings except `color` below `params` map to predefined configuration options in Hugo for the site and its language, and should be accessed via the documented accessors:
+
+```go-html-template
+{{ site.Title }}
+{{ site.LanguageCode }}
+{{ site.Params.color }}
+```
+
+### Disable a language
+
+To disable a language within a `languages` object in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[languages.es]
+disabled = true
+{{< /code-toggle >}}
+
+To disable one or more languages in the root of your site configuration:
+
+{{< code-toggle file=hugo >}}
+disableLanguages = ["es", "fr"]
+{{< /code-toggle >}}
+
+To disable one or more languages using an environment variable:
+
+```sh
+HUGO_DISABLELANGUAGES="es fr" hugo
+```
+
+Note that you cannot disable the default content language.
+
+### Configure multilingual multihost
+
+
+Hugo supports multiple languages in a multihost configuration. This means you can configure a `baseURL` per `language`.
+
+{{% note %}}
+If a `baseURL` is set on the `language` level, then all languages must have one and they must all be different.
+{{% /note %}}
+
+Example:
+
+{{< code-toggle file=hugo >}}
+[languages]
+ [languages.en]
+ baseURL = 'https://en.example.org/'
+ languageName = 'English'
+ title = 'In English'
+ weight = 2
+ [languages.fr]
+ baseURL = 'https://fr.example.org'
+ languageName = 'Français'
+ title = 'En Français'
+ weight = 1
+{{</ code-toggle >}}
+
+With the above, the two sites will be generated into `public` with their own root:
+
+```text
+public
+├── en
+└── fr
+```
+
+**All URLs (i.e `.Permalink` etc.) will be generated from that root. So the English home page above will have its `.Permalink` set to `https://example.org/`.**
+
+When you run `hugo server` we will start multiple HTTP servers. You will typically see something like this in the console:
+
+```text
+Web Server is available at 127.0.0.1:1313 (bind address 127.0.0.1) fr
+Web Server is available at 127.0.0.1:1314 (bind address 127.0.0.1) en
+Press Ctrl+C to stop
+```
+
+Live reload and `--navigateToChanged` between the servers work as expected.
+
+## Translate your content
+
+There are two ways to manage your content translations. Both ensure each page is assigned a language and is linked to its counterpart translations.
+
+### Translation by file name
+
+Considering the following example:
+
+1. `/content/about.en.md`
+2. `/content/about.fr.md`
+
+The first file is assigned the English language and is linked to the second.
+The second file is assigned the French language and is linked to the first.
+
+Their language is __assigned__ according to the language code added as a __suffix to the file name__.
+
+By having the same **path and base file name**, the content pieces are __linked__ together as translated pages.
+
+{{% note %}}
+If a file has no language code, it will be assigned the default language.
+{{% /note %}}
+
+### Translation by content directory
+
+This system uses different content directories for each of the languages. Each language's content directory is set using the `contentDir` parameter.
+
+{{< code-toggle file=hugo >}}
+languages:
+ en:
+ weight: 10
+ languageName: "English"
+ contentDir: "content/english"
+ fr:
+ weight: 20
+ languageName: "Français"
+ contentDir: "content/french"
+{{< /code-toggle >}}
+
+The value of `contentDir` can be any valid path -- even absolute path references. The only restriction is that the content directories cannot overlap.
+
+Considering the following example in conjunction with the configuration above:
+
+1. `/content/english/about.md`
+2. `/content/french/about.md`
+
+The first file is assigned the English language and is linked to the second.
+The second file is assigned the French language and is linked to the first.
+
+Their language is __assigned__ according to the content directory they are __placed__ in.
+
+By having the same **path and basename** (relative to their language content directory), the content pieces are __linked__ together as translated pages.
+
+### Bypassing default linking
+
+Any pages sharing the same `translationKey` set in front matter will be linked as translated pages regardless of basename or location.
+
+Considering the following example:
+
+1. `/content/about-us.en.md`
+2. `/content/om.nn.md`
+3. `/content/presentation/a-propos.fr.md`
+
+{{< code-toggle >}}
+translationKey: "about"
+{{< /code-toggle >}}
+
+By setting the `translationKey` front matter parameter to `about` in all three pages, they will be __linked__ as translated pages.
+
+### Localizing permalinks
+
+Because paths and file names are used to handle linking, all translated pages will share the same URL (apart from the language subdirectory).
+
+To localize URLs:
+
+- For a regular page, set either [`slug`] or [`url`] in front matter
+- For a section page, set [`url`] in front matter
+
+[`slug`]: /content-management/urls/#slug
+[`url`]: /content-management/urls/#url
+
+For example, a French translation can have its own localized slug.
+
+{{< code-toggle file=content/about.fr.md fm=true >}}
+title: A Propos
+slug: "a-propos"
+{{< /code-toggle >}}
+
+At render, Hugo will build both `/about/` and `/fr/a-propos/` without affecting the translation link.
+
+### Page bundles
+
+To avoid the burden of having to duplicate files, each Page Bundle inherits the resources of its linked translated pages' bundles except for the content files (Markdown files, HTML files etc...).
+
+Therefore, from within a template, the page will have access to the files from all linked pages' bundles.
+
+If, across the linked bundles, two or more files share the same basename, only one will be included and chosen as follows:
+
+* File from current language bundle, if present.
+* First file found across bundles by order of language `Weight`.
+
+{{% note %}}
+Page Bundle resources follow the same language assignment logic as content files, both by file name (`image.jpg`, `image.fr.jpg`) and by directory (`english/about/header.jpg`, `french/about/header.jpg`).
+{{%/ note %}}
+
+## Reference translated content
+
+To create a list of links to translated content, use a template similar to the following:
+
+{{< code file=layouts/partials/i18nlist.html >}}
+{{ if .IsTranslated }}
+<h4>{{ i18n "translations" }}</h4>
+<ul>
+ {{ range .Translations }}
+ <li>
+ <a href="{{ .RelPermalink }}">{{ .Language.Lang }}: {{ .LinkTitle }}{{ if .IsPage }} ({{ i18n "wordCount" . }}){{ end }}</a>
+ </li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
- [example menu template]: /templates/menu-templates/#example
++The above can be put in a `partial` (i.e., inside `layouts/partials/`) and included in any template. It will not print anything if there are no translations for a given page.
+
+The above also uses the [`i18n` function][i18func] described in the next section.
+
+### List all available languages
+
+`.AllTranslations` on a `Page` can be used to list all translations, including the page itself. On the home page it can be used to build a language navigator:
+
+{{< code file=layouts/partials/allLanguages.html >}}
+<ul>
+{{ range $.Site.Home.AllTranslations }}
+<li><a href="{{ .RelPermalink }}">{{ .Language.LanguageName }}</a></li>
+{{ end }}
+</ul>
+{{< /code >}}
+
+## Translation of strings
+
+See the [`lang.Translate`] template function.
+
+[`lang.Translate`]: /functions/lang/translate
+
+## Localization
+
+The following localization examples assume your site's primary language is English, with translations to French and German.
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+
+[languages]
+[languages.en]
+contentDir = 'content/en'
+languageName = 'English'
+weight = 1
+[languages.fr]
+contentDir = 'content/fr'
+languageName = 'Français'
+weight = 2
+[languages.de]
+contentDir = 'content/de'
+languageName = 'Deutsch'
+weight = 3
+
+{{< /code-toggle >}}
+
+### Dates
+
+With this front matter:
+
+{{< code-toggle >}}
+date = 2021-11-03T12:34:56+01:00
+{{< /code-toggle >}}
+
+And this template code:
+
+```go-html-template
+{{ .Date | time.Format ":date_full" }}
+```
+
+The rendered page displays:
+
+Language|Value
+:--|:--
+English|Wednesday, November 3, 2021
+Français|mercredi 3 novembre 2021
+Deutsch|Mittwoch, 3. November 2021
+
+See [`time.Format`] for details.
+
+### Currency
+
+With this template code:
+
+```go-html-template
+{{ 512.5032 | lang.FormatCurrency 2 "USD" }}
+```
+
+The rendered page displays:
+
+Language|Value
+:--|:--
+English|$512.50
+Français|512,50 $US
+Deutsch|512,50 $
+
+See [lang.FormatCurrency] and [lang.FormatAccounting] for details.
+
+### Numbers
+
+With this template code:
+
+```go-html-template
+{{ 512.5032 | lang.FormatNumber 2 }}
+```
+
+The rendered page displays:
+
+Language|Value
+:--|:--
+English|512.50
+Français|512,50
+Deutsch|512,50
+
+See [lang.FormatNumber] and [lang.FormatNumberCustom] for details.
+
+### Percentages
+
+With this template code:
+
+```go-html-template
+{{ 512.5032 | lang.FormatPercent 2 }}
+```
+
+The rendered page displays:
+
+Language|Value
+:--|:--
+English|512.50%
+Français|512,50 %
+Deutsch|512,50 %
+
+See [lang.FormatPercent] for details.
+
+## Menus
+
+Localization of menu entries depends on how you define them:
+
+- When you define menu entries [automatically] using the section pages menu, you must use translation tables to localize each entry.
+- When you define menu entries [in front matter], they are already localized based on the front matter itself. If the front matter values are insufficient, use translation tables to localize each entry.
+- When you define menu entries [in site configuration], you must create language-specific menu entries under each language key. If the names of the menu entries are insufficient, use translation tables to localize each entry.
+
+### Create language-specific menu entries
+
+#### Method 1 -- Use a single configuration file
+
+For a simple menu with a small number of entries, use a single configuration file. For example:
+
+{{< code-toggle file=hugo >}}
+[languages.de]
+languageCode = 'de-DE'
+languageName = 'Deutsch'
+weight = 1
+
+[[languages.de.menus.main]]
+name = 'Produkte'
+pageRef = '/products'
+weight = 10
+
+[[languages.de.menus.main]]
+name = 'Leistungen'
+pageRef = '/services'
+weight = 20
+
+[languages.en]
+languageCode = 'en-US'
+languageName = 'English'
+weight = 2
+
+[[languages.en.menus.main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+
+[[languages.en.menus.main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+#### Method 2 -- Use a configuration directory
+
+With a more complex menu structure, create a [configuration directory] and split the menu entries into multiple files, one file per language. For example:
+
+```text
+config/
+└── _default/
+ ├── menus.de.toml
+ ├── menus.en.toml
+ └── hugo.toml
+```
+
+{{< code-toggle file=config/_default/menus.de >}}
+[[main]]
+name = 'Produkte'
+pageRef = '/products'
+weight = 10
+[[main]]
+name = 'Leistungen'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+{{< code-toggle file=config/_default/menus.en >}}
+[[main]]
+name = 'Products'
+pageRef = '/products'
+weight = 10
+[[main]]
+name = 'Services'
+pageRef = '/services'
+weight = 20
+{{< /code-toggle >}}
+
+[configuration directory]: /getting-started/configuration/#configuration-directory
+
+### Use translation tables
+
+When rendering the text that appears in menu each entry, the [example menu template] does this:
+
+```go-html-template
+{{ or (T .Identifier) .Name | safeHTML }}
+```
+
+It queries the translation table for the current language using the menu entry's `identifier` and returns the translated string. If the translation table does not exist, or if the `identifier` key is not present in the translation table, it falls back to `name`.
+
+The `identifier` depends on how you define menu entries:
+
+- If you define the menu entry [automatically] using the section pages menu, the `identifier` is the page's `.Section`.
+- If you define the menu entry [in site configuration] or [in front matter], set the `identifier` property to the desired value.
+
+For example, if you define menu entries in site configuration:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+ identifier = 'products'
+ name = 'Products'
+ pageRef = '/products'
+ weight = 10
+[[menus.main]]
+ identifier = 'services'
+ name = 'Services'
+ pageRef = '/services'
+ weight = 20
+{{< / code-toggle >}}
+
+Create corresponding entries in the translation tables:
+
+{{< code-toggle file=i18n/de >}}
+products = 'Produkte'
+services = 'Leistungen'
+{{< / code-toggle >}}
+
- [contenttemplate]: /templates/single-page-templates/
++[example menu template]: /templates/menu/#example
+[automatically]: /content-management/menus/#define-automatically
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/#define-in-site-configuration
+
+## Missing translations
+
+If a string does not have a translation for the current language, Hugo will use the value from the default language. If no default value is set, an empty string will be shown.
+
+While translating a Hugo website, it can be handy to have a visual indicator of missing translations. The [`enableMissingTranslationPlaceholders` configuration option][config] will flag all untranslated strings with the placeholder `[i18n] identifier`, where `identifier` is the id of the missing translation.
+
+{{% note %}}
+Hugo will generate your website with these missing translation placeholders. It might not be suitable for production environments.
+{{% /note %}}
+
+For merging of content from other languages (i.e. missing content translations), see [lang.Merge].
+
+To track down missing translation strings, run Hugo with the `--printI18nWarnings` flag:
+
+```sh
+hugo --printI18nWarnings | grep i18n
+i18n|MISSING_TRANSLATION|en|wordCount
+```
+
+## Multilingual themes support
+
+To support Multilingual mode in your themes, some considerations must be taken for the URLs in the templates. If there is more than one language, URLs must meet the following criteria:
+
+* Come from the built-in `.Permalink` or `.RelPermalink`
+* Be constructed with the [`relLangURL`] or [`absLangURL`] template function, or be prefixed with `{{ .LanguagePrefix }}`
+
+If there is more than one language defined, the `LanguagePrefix` method will return `/en` (or whatever the current language is). If not enabled, it will be an empty string (and is therefore harmless for single-language Hugo websites).
+
+## Generate multilingual content with `hugo new content`
+
+If you organize content with translations in the same directory:
+
+```sh
+hugo new content post/test.en.md
+hugo new content post/test.de.md
+```
+
+If you organize content with translations in different directories:
+
+```sh
+hugo new content content/en/post/test.md
+hugo new content content/de/post/test.md
+```
+
+[`abslangurl`]: /functions/urls/abslangurl/
+[config]: /getting-started/configuration/
- [homepage]: /templates/homepage/
+[go-i18n-source]: https://github.com/nicksnyder/go-i18n
+[go-i18n]: https://github.com/nicksnyder/go-i18n
- [single page templates]: /templates/single-page-templates/
+[Hugo Multilingual Part 1: Content translation]: https://regisphilibert.com/blog/2018/08/hugo-multilingual-part-1-managing-content-translation/
+[i18func]: /functions/lang/translate/
+[lang.FormatAccounting]: /functions/lang/formataccounting/
+[lang.FormatCurrency]: /functions/lang/formatcurrency/
+[lang.FormatNumber]: /functions/lang/formatnumber/
+[lang.FormatNumberCustom]: /functions/lang/formatnumbercustom/
+[lang.FormatPercent]: /functions/lang/formatpercent/
+[lang.Merge]: /functions/lang/merge/
+[menus]: /content-management/menus/
+[OS environment]: /getting-started/configuration/#configure-with-environment-variables
+[`rellangurl`]: /functions/urls/rellangurl/
+[`time.Format`]: /functions/time/format/
--- /dev/null
- `_index.md` has a special role in Hugo. It allows you to add front matter and content to your [list templates][lists]. These templates include those for [section templates], [taxonomy templates], [taxonomy terms templates], and your [homepage template].
+---
+title: Content organization
+linkTitle: Organization
+description: Hugo assumes that the same structure that works to organize your source content is used to organize the rendered site.
+categories: [content management,fundamentals]
+keywords: [sections,content,organization,bundle,resources]
+menu:
+ docs:
+ parent: content-management
+ weight: 20
+weight: 20
+toc: true
+aliases: [/content/sections/]
+---
+
+## Page bundles
+
+Hugo `0.32` announced page-relative images and other resources packaged into `Page Bundles`.
+
+These terms are connected, and you also need to read about [Page Resources](/content-management/page-resources) and [Image Processing](/content-management/image-processing) to get the full picture.
+
+```text
+content/
+├── blog/
+│ ├── hugo-is-cool/
+│ │ ├── images/
+│ │ │ ├── funnier-cat.jpg
+│ │ │ └── funny-cat.jpg
+│ │ ├── cats-info.md
+│ │ └── index.md
+│ ├── posts/
+│ │ ├── post1.md
+│ │ └── post2.md
+│ ├── 1-landscape.jpg
+│ ├── 2-sunset.jpg
+│ ├── _index.md
+│ ├── content-1.md
+│ └── content-2.md
+├── 1-logo.png
+└── _index.md
+```
+
+The file tree above shows three bundles. Note that the home page bundle cannot contain other content pages, although other files (images etc.) are allowed.
+
+## Organization of content source
+
+In Hugo, your content should be organized in a manner that reflects the rendered website.
+
+While Hugo supports content nested at any level, the top levels (i.e. `content/<DIRECTORIES>`) are special in Hugo and are considered the content type used to determine layouts etc. To read more about sections, including how to nest them, see [sections].
+
+Without any additional configuration, the following will automatically work:
+
+```txt
+.
+└── content
+ └── about
+ | └── index.md // <- https://example.org/about/
+ ├── posts
+ | ├── firstpost.md // <- https://example.org/posts/firstpost/
+ | ├── happy
+ | | └── ness.md // <- https://example.org/posts/happy/ness/
+ | └── secondpost.md // <- https://example.org/posts/secondpost/
+ └── quote
+ ├── first.md // <- https://example.org/quote/first/
+ └── second.md // <- https://example.org/quote/second/
+```
+
+## Path breakdown in Hugo
+
+The following demonstrates the relationships between your content organization and the output URL structure for your Hugo website when it renders. These examples assume you are [using pretty URLs][pretty], which is the default behavior for Hugo. The examples also assume a key-value of `baseURL = "https://example.org/"` in your [site's configuration file][config].
+
+### Index pages: `_index.md`
+
- You can create one `_index.md` for your homepage and one in each of your content sections, taxonomies, and taxonomy terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
++`_index.md` has a special role in Hugo. It allows you to add front matter and content to `home`, `section`, `taxonomy`, and `term` pages.
+
+{{% note %}}
+**Tip:** You can get a reference to the content and metadata in `_index.md` using the [`.Site.GetPage` function](/methods/page/getpage).
+{{% /note %}}
+
- Single content files in each of your sections will be rendered as [single page templates][singles]. Here is an example of a single `post` within `posts`:
++You can create one `_index.md` for your home page and one in each of your content sections, taxonomies, and terms. The following shows typical placement of an `_index.md` that would contain content and front matter for a `posts` section list page on a Hugo website:
+
+```txt
+. url
+. ⊢--^-⊣
+. path slug
+. ⊢--^-⊣⊢---^---⊣
+. file path
+. ⊢------^------⊣
+content/posts/_index.md
+```
+
+At build, this will output to the following destination with the associated values:
+
+```txt
+
+ url ("/posts/")
+ ⊢-^-⊣
+ baseurl section ("posts")
+⊢--------^---------⊣⊢-^-⊣
+ permalink
+⊢----------^-------------⊣
+https://example.org/posts/index.html
+```
+
+The [sections] can be nested as deeply as you want. The important thing to understand is that to make the section tree fully navigational, at least the lower-most section must include a content file. (i.e. `_index.md`).
+
+### Single pages in sections
+
- [homepage template]: /templates/homepage/
- [homepage]: /templates/homepage/
- [lists]: /templates/lists/
++Single content files in each of your sections will be rendered by a [single template]. Here is an example of a single `post` within `posts`:
+
+```txt
+ path ("posts/my-first-hugo-post.md")
+. ⊢-----------^------------⊣
+. section slug
+. ⊢-^-⊣⊢--------^----------⊣
+content/posts/my-first-hugo-post.md
+```
+
+When Hugo builds your site, the content will be output to the following destination:
+
+```txt
+
+ url ("/posts/my-first-hugo-post/")
+ ⊢------------^----------⊣
+ baseurl section slug
+⊢--------^--------⊣⊢-^--⊣⊢-------^---------⊣
+ permalink
+⊢--------------------^---------------------⊣
+https://example.org/posts/my-first-hugo-post/index.html
+```
+
+## Paths explained
+
+The following concepts provide more insight into the relationship between your project's organization and the default Hugo behavior when building output for the website.
+
+### `section`
+
+A default content type is determined by the section in which a content item is stored. `section` is determined by the location within the project's `content` directory. `section` *cannot* be specified or overridden in front matter.
+
+### `slug`
+
+The `slug` is the last segment of the URL path, defined by the file name and optionally overridden by a `slug` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
+
+### `path`
+
+A content's `path` is determined by the section's path to the file. The file `path`
+
+* is based on the path to the content's location AND
+* does not include the slug
+
+### `url`
+
+The `url` is the entire URL path, defined by the file path and optionally overridden by a `url` value in front matter. See [URL Management](/content-management/urls/#slug) for details.
+
+[config]: /getting-started/configuration/
+[formats]: /content-management/formats/
+[front matter]: /content-management/front-matter/
+[getpage]: /methods/page/getpage/
- [section templates]: /templates/section-templates/
+[pretty]: /content-management/urls/#appearance
- [singles]: /templates/single-page-templates/
- [taxonomy templates]: /templates/taxonomy-templates/
- [taxonomy terms templates]: /templates/taxonomy-templates/
- [types]: /content-management/types/
+[sections]: /content-management/sections/
++[single template]: /templates/types/#single
+[urls]: /content-management/urls/
--- /dev/null
- | Layout type | [single] | [list] |
+---
+title: Page bundles
+description: Use page bundles to logically associate one or more resources with content.
+categories: [content management]
+keywords: [page,bundle,leaf,branch]
+menu :
+ docs:
+ parent: content-management
+ weight: 30
+weight: 30
+toc: true
+---
+
+## Introduction
+
+A page bundle is a directory that encapsulates both content and associated resources.
+
+By way of example, this site has an "about" page and a "privacy" page:
+
+```text
+content/
+├── about/
+│ ├── index.md
+│ └── welcome.jpg
+└── privacy.md
+```
+
+The "about" page is a page bundle. It logically associates a resource with content by bundling them together. Resources within a page bundle are [page resources], accessible with the [`Resources`] method on the `Page` object.
+
+Page bundles are either _leaf bundles_ or _branch bundles_.
+
+leaf bundle
+: A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
+
+branch bundle
+: A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page.
+
+{{% note %}}
+In the definitions above and the examples below, the extension of the index file depends on the [content format]. For example, use index.md for Markdown content, index.html for HTML content, index.adoc for AsciiDoc content, etc.
+
+[content format]: /getting-started/glossary/#content-format
+{{% /note %}}
+
+## Comparison
+
+Page bundle characteristics vary by bundle type.
+
+| | Leaf bundle | Branch bundle |
+|---------------------|---------------------------------------------------------|---------------------------------------------------------|
+| Index file | index.md | _index.md |
+| Example | content/about/index.md | content/posts/_index.md |
+| [Page kinds] | `page` | `home`, `section`, `taxonomy`, or `term` |
- [list]: /templates/lists/
++| Template types | [single] | [home], [section], [taxonomy], or [term] |
+| Descendant pages | None | Zero or more |
+| Resource location | Adjacent to the index file or in a nested subdirectory | Same as a leaf bundles, but excludes descendant bundles |
+| [Resource types] | `page`, `image`, `video`, etc. | all but `page` |
+
++[single]: /templates/types/#single
++[home]: /templates/types/#home
++[section]: /templates/types/#section
++[taxonomy]: /templates/types/#taxonomy
++[term]: /templates/types/#term
++
+Files with [resource type] `page` include content written in Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode. In a leaf bundle, excluding the index file, these files are only accessible as page resources. In a branch bundle, these files are only accessible as content pages.
+
+## Leaf bundles
+
+A _leaf bundle_ is a directory that contains an index.md file and zero or more resources. Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants.
+
+```text
+content/
+├── about
+│ └── index.md
+├── posts
+│ ├── my-post
+│ │ ├── content-1.md
+│ │ ├── content-2.md
+│ │ ├── image-1.jpg
+│ │ ├── image-2.png
+│ │ └── index.md
+│ └── my-other-post
+│ └── index.md
+└── another-section
+ ├── foo.md
+ └── not-a-leaf-bundle
+ ├── bar.md
+ └── another-leaf-bundle
+ └── index.md
+```
+
+There are four leaf bundles in the example above:
+
+about
+: This leaf bundle does not contain any page resources.
+
+my-post
+: This leaf bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`.
+
+- content-1, content-2
+
+ These are resources of resource type `page`, accessible via the [`Resources`] method on the `Page` object. Hugo will not render these as individual pages.
+
+- image-1, image-2
+
+ These are resources of resource type `image`, accessible via the `Resources` method on the `Page` object
+
+my-other-post
+: This leaf bundle does not contain any page resources.
+
+another-leaf-bundle
+: This leaf bundle does not contain any page resources.
+
+{{% note %}}
+Create leaf bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
+{{% /note %}}
+
+## Branch bundles
+
+A _branch bundle_ is a directory that contains an _index.md file and zero or more resources. Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page.
+
+```text
+content/
+├── branch-bundle-1/
+│ ├── _index.md
+│ ├── content-1.md
+│ ├── content-2.md
+│ ├── image-1.jpg
+│ └── image-2.png
+├── branch-bundle-2/
+│ ├── a-leaf-bundle/
+│ │ └── index.md
+│ └── _index.md
+└── _index.md
+```
+
+There are three branch bundles in the example above:
+
+home page
+: This branch bundle contains an index file, two descendant branch bundles, and no resources.
+
+branch-bundle-1
+: This branch bundle contains an index file, two resources of [resource type] `page`, and two resources of resource type `image`.
+
+branch-bundle-2
+: This branch bundle contains an index file and a leaf bundle.
+
+{{% note %}}
+Create branch bundles at any depth within the content directory, but a leaf bundle may not contain another bundle. Leaf bundles do not have descendants.
+{{% /note %}}
+
+
+## Headless bundles
+
+Use [build options] in front matter to create an unpublished leaf or branch bundle whose content and resources you can include in other pages.
+
+[`Resources`]: /methods/page/resources/
+[build options]: content-management/build-options/
- [single]: /templates/single-page-templates/
+[page kinds]: /getting-started/glossary/#page-kind
+[page resources]: /content-management/page-resources/
+[resource type]: /getting-started/glossary/#resource-type
+[resource types]: /getting-started/glossary/#resource-type
--- /dev/null
- To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your single page template:
+---
+title: Related content
+description: List related content in "See Also" sections.
+categories: [content management]
+keywords: [content]
+menu:
+ docs:
+ parent: content-management
+ weight: 110
+weight: 110
+toc: true
+aliases: [/content/related/,/related/]
+---
+
+Hugo uses a set of factors to identify a page's related content based on front matter parameters. This can be tuned to the desired set of indices and parameters or left to Hugo's default [Related Content configuration](#configure-related-content).
+
+## List related content
+
++To list up to 5 related pages (which share the same _date_ or _keyword_ parameters) is as simple as including something similar to this partial in your template:
+
+{{< code file=layouts/partials/related.html >}}
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+<h3>See Also</h3>
+<ul>
+ {{ range . }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+</ul>
+{{ end }}
+{{< /code >}}
+
+The `Related` method takes one argument which may be a `Page` or a options map. The options map have these options:
+
+indices
+: (`slice`) The indices to search within.
+
+document
+: (`page`) The page for which to find related content. Required when specifying an options map.
+
+namedSlices
+: (`slice`) The keywords to search for, expressed as a slice of `KeyValues` using the [`keyVals`] function.
+
+fragments
+: (`slice`) A list of special keywords that is used for indices configured as type "fragments". This will match the [fragment] identifiers of the documents.
+
+[fragment]: /getting-started/glossary/#fragment
+[`keyVals`]: /functions/collections/keyvals/
+
+A fictional example using all of the above options:
+
+```go-html-template
+{{ $page := . }}
+{{ $opts := dict
+ "indices" (slice "tags" "keywords")
+ "document" $page
+ "namedSlices" (slice (keyVals "tags" "hugo" "rocks") (keyVals "date" $page.Date))
+ "fragments" (slice "heading-1" "heading-2")
+}}
+```
+
+{{% note %}}
+We improved and simplified this feature in Hugo 0.111.0. Before this we had 3 different methods: `Related`, `RelatedTo` and `RelatedIndices`. Now we have only one method: `Related`. The old methods are still available but deprecated. Also see [this blog article](https://regisphilibert.com/blog/2018/04/hugo-optmized-relashionships-with-related-content/) for a great explanation of more advanced usage of this feature.
+{{% /note %}}
+
+## Index content headings in related content
+
+{{< new-in 0.111.0 >}}
+
+Hugo can index the headings in your content and use this to find related content. You can enable this by adding a index of type `fragments` to your `related` configuration:
+
+{{< code-toggle file=hugo >}}
+[related]
+threshold = 20
+includeNewer = true
+toLower = false
+[[related.indices]]
+name = "fragmentrefs"
+type = "fragments"
+applyFilter = true
+weight = 80
+{{< /code-toggle >}}
+
+* The `name` maps to a optional front matter slice attribute that can be used to link from the page level down to the fragment/heading level.
+* If `applyFilter`is enabled, the `.HeadingsFiltered` on each page in the result will reflect the filtered headings. This is useful if you want to show the headings in the related content listing:
+
+```go-html-template
+{{ $related := .Site.RegularPages.Related . | first 5 }}
+{{ with $related }}
+ <h2>See Also</h2>
+ <ul>
+ {{ range $i, $p := . }}
+ <li>
+ <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+ {{ with .HeadingsFiltered }}
+ <ul>
+ {{ range . }}
+ {{ $link := printf "%s#%s" $p.RelPermalink .ID | safeURL }}
+ <li>
+ <a href="{{ $link }}">{{ .Title }}</a>
+ </li>
+ {{ end }}
+ </ul>
+ {{ end }}
+ </li>
+ {{ end }}
+ </ul>
+{{ end }}
+```
+
+## Configure related content
+
+Hugo provides a sensible default configuration of Related Content, but you can fine-tune this in your configuration, on the global or language level if needed.
+
+### Default configuration
+
+Without any `related` configuration set on the project, Hugo's Related Content methods will use the following.
+
+{{< code-toggle config=related />}}
+
+Custom configuration should be set using the same syntax.
+
+{{% note %}}
+If you add a `related` configuration section, you need to add a complete configuration. It is not possible to just set, say, `includeNewer` and use the rest from the Hugo defaults.
+{{% /note %}}
+
+### Top level configuration options
+
+threshold
+: (`int`) A value between 0-100. Lower value will give more, but maybe not so relevant, matches.
+
+includeNewer
+: (`bool`) Set to `true` to include **pages newer than the current page** in the related content listing. This will mean that the output for older posts may change as new related content gets added.
+
+toLower
+: (`bool`) Set to `true` to lower case keywords in both the indexes and the queries. This may give more accurate results at a slight performance penalty. Note that this can also be set per index.
+
+### Configuration options per index
+
+name
+: (`string`) The index name. This value maps directly to a page parameter. Hugo supports string values (`author` in the example) and lists (`tags`, `keywords` etc.) and time and date objects.
+
+type {{< new-in 0.111.0 >}}
+: (`string`) One of `basic`(default) or `fragments`.
+
+applyFilter {{< new-in 0.111.0 >}}
+: (`string`) Apply a `type` specific filter to the result of a search. This is currently only used for the `fragments` type.
+
+weight
+: (`int`) An integer weight that indicates _how important_ this parameter is relative to the other parameters. It can be `0`, which has the effect of turning this index off, or even negative. Test with different values to see what fits your content best.
+
+cardinalityThreshold {{< new-in 0.111.0 >}}
+: (`int`) If between 1 and 100, this is a percentage. All keywords that are used in more than this percentage of documents are removed. For example, setting this to `60` will remove all keywords that are used in more than 60% of the documents in the index. If `0`, no keyword is removed from the index. Default is `0`.
+
+pattern
+: (`string`) This is currently only relevant for dates. When listing related content, we may want to list content that is also close in time. Setting "2006" (default value for date indexes) as the pattern for a date index will add weight to pages published in the same year. For busier blogs, "200601" (year and month) may be a better default.
+
+toLower
+: (`bool`) See above.
+
+## Performance considerations
+
+**Fast is Hugo's middle name** and we would not have released this feature had it not been blistering fast.
+
+This feature has been in the back log and requested by many for a long time. The development got this recent kick start from this Twitter thread:
+
+{{< tweet user="scott_lowe" id="898398437527363585" >}}
+
+Scott S. Lowe removed the "Related Content" section built using the `intersect` template function on tags, and the build time dropped from 30 seconds to less than 2 seconds on his 1700 content page sized blog.
+
+He should now be able to add an improved version of that "Related Content" section without giving up the fast live-reloads. But it's worth noting that:
+
+* If you don't use any of the `Related` methods, you will not use the Relate Content feature, and performance will be the same as before.
+* Calling `.RegularPages.Related` etc. will create one inverted index, also sometimes named posting list, that will be reused for any lookups in that same page collection. Doing that in addition to, as an example, calling `.Pages.Related` will work as expected, but will create one additional inverted index. This should still be very fast, but worth having in mind, especially for bigger sites.
+
+{{% note %}}
+We currently do not index **Page content**. We thought we would release something that will make most people happy before we start solving [Sherlock's last case](https://github.com/joearms/sherlock).
+{{% /note %}}
--- /dev/null
- Content directory|List page template
+---
+title: Sections
+description: Organize content into sections.
+
+categories: [content management]
+keywords: [lists,sections,content types,organization]
+menu:
+ docs:
+ parent: content-management
+ weight: 120
+weight: 120
+toc: true
+aliases: [/content/sections/]
+---
+
+## Overview
+
+A section is a top-level content directory, or any content directory with an _index.md file. A content directory with an _index.md file is also known as a [branch bundle](/getting-started/glossary/#branch-bundle). Section templates receive one or more page [collections](/getting-started/glossary/#collection) in [context](/getting-started/glossary/#context).
+
+{{% note %}}
+Although top-level directories without _index.md files are sections, we recommend creating _index.md files in _all_ sections.
+{{% /note %}}
+
+A typical site consists of one or more sections. For example:
+
+```text
+content/
+├── articles/ <-- section (top-level directory)
+│ ├── 2022/
+│ │ ├── article-1/
+│ │ │ ├── cover.jpg
+│ │ │ └── index.md
+│ │ └── article-2.md
+│ └── 2023/
+│ ├── article-3.md
+│ └── article-4.md
+├── products/ <-- section (top-level directory)
+│ ├── product-1/ <-- section (has _index.md file)
+│ │ ├── benefits/ <-- section (has _index.md file)
+│ │ │ ├── _index.md
+│ │ │ ├── benefit-1.md
+│ │ │ └── benefit-2.md
+│ │ ├── features/ <-- section (has _index.md file)
+│ │ │ ├── _index.md
+│ │ │ ├── feature-1.md
+│ │ │ └── feature-2.md
+│ │ └── _index.md
+│ └── product-2/ <-- section (has _index.md file)
+│ ├── benefits/ <-- section (has _index.md file)
+│ │ ├── _index.md
+│ │ ├── benefit-1.md
+│ │ └── benefit-2.md
+│ ├── features/ <-- section (has _index.md file)
+│ │ ├── _index.md
+│ │ ├── feature-1.md
+│ │ └── feature-2.md
+│ └── _index.md
+├── _index.md
+└── about.md
+```
+
+The example above has two top-level sections: articles and products. None of the directories under articles are sections, while all of the directories under products are sections. A section within a section is a known as a nested section or subsection.
+
+## Explanation
+
+Sections and non-sections behave differently.
+
+||Sections|Non-sections
+:--|:-:|:-:
+Directory names become URL segments|:heavy_check_mark:|:heavy_check_mark:
+Have logical ancestors and descendants|:heavy_check_mark:|:x:
+Have list pages|:heavy_check_mark:|:x:
+
+With the file structure from the [example above](#overview):
+
+1. The list page for the articles section includes all articles, regardless of directory structure; none of the subdirectories are sections.
+
+1. The articles/2022 and articles/2023 directories do not have list pages; they are not sections.
+
+1. The list page for the products section, by default, includes product-1 and product-2, but not their descendant pages. To include descendant pages, use the `RegularPagesRecursive` method instead of the `Pages` method in the list template.
+
+[`Pages`]: /methods/page/pages/
+[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
+
+1. All directories in the products section have list pages; each directory is a section.
+
+## Template selection
+
+Hugo has a defined [lookup order] to determine which template to use when rendering a page. The [lookup rules] consider the top-level section name; subsection names are not considered when selecting a template.
+
+With the file structure from the [example above](#overview):
+
- Content directory|Single page template
++Content directory|Section template
+:--|:--
+content/products|layouts/products/list.html
+content/products/product-1|layouts/products/list.html
+content/products/product-1/benefits|layouts/products/list.html
+
- [section templates]: /templates/section-templates/
++Content directory|Single template
+:--|:--
+content/products|layouts/products/single.html
+content/products/product-1|layouts/products/single.html
+content/products/product-1/benefits|layouts/products/single.html
+
+If you need to use a different template for a subsection, specify `type` and/or `layout` in front matter.
+
+[lookup rules]: /templates/lookup-order/#lookup-rules
+[lookup order]: /templates/lookup-order/
+
+## Ancestors and descendants
+
+A section has one or more ancestors (including the home page), and zero or more descendants. With the file structure from the [example above](#overview):
+
+```text
+content/products/product-1/benefits/benefit-1.md
+```
+
+The content file (benefit-1.md) has four ancestors: benefits, product-1, products, and the home page. This logical relationship allows us to use the `.Parent` and `.Ancestors` methods to traverse the site structure.
+
+For example, use the `.Ancestors` method to render breadcrumb navigation.
+
+{{< code file=layouts/partials/breadcrumb.html >}}
+<nav aria-label="breadcrumb" class="breadcrumb">
+ <ol>
+ {{ range .Ancestors.Reverse }}
+ <li>
+ <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+ </li>
+ {{ end }}
+ <li class="active">
+ <a aria-current="page" href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+ </li>
+ </ol>
+</nav>
+{{< /code >}}
+
+With this CSS:
+
+```css
+.breadcrumb ol {
+ padding-left: 0;
+}
+
+.breadcrumb li {
+ display: inline;
+}
+
+.breadcrumb li:not(:last-child)::after {
+ content: "»";
+}
+```
+
+Hugo renders this, where each breadcrumb is a link to the corresponding page:
+
+```text
+Home » Products » Product 1 » Benefits » Benefit 1
+```
+
+[archetype]: /content-management/archetypes/
+[content type]: /content-management/types/
+[directory structure]: /getting-started/directory-structure/
++[section templates]: /templates/types/#section
+[leaf bundles]: /content-management/page-bundles/#leaf-bundles
+[branch bundles]: /content-management/page-bundles/#branch-bundles
--- /dev/null
- [partials]: /templates/partials/
+---
+title: Shortcodes
+description: Shortcodes are simple snippets inside your content files calling built-in or custom templates.
+categories: [content management]
+keywords: [markdown,content,shortcodes]
+menu:
+ docs:
+ parent: content-management
+ weight: 100
+weight: 100
+toc: true
+aliases: [/extras/shortcodes/]
+testparam: "Hugo Rocks!"
+---
+
+## What a shortcode is
+
+Hugo loves Markdown because of its simple content format, but there are times when Markdown falls short. Often, content authors are forced to add raw HTML (e.g., video `<iframe>`'s) to Markdown content. We think this contradicts the beautiful simplicity of Markdown's syntax.
+
+Hugo created **shortcodes** to circumvent these limitations.
+
+A shortcode is a simple snippet inside a content file that Hugo will render using a predefined template. Note that shortcodes will not work in template files. If you need the type of drop-in functionality that shortcodes provide but in a template, you most likely want a [partial template][partials] instead.
+
+In addition to cleaner Markdown, shortcodes can be updated any time to reflect new classes, techniques, or standards. At the point of site generation, Hugo shortcodes will easily merge in your changes. You avoid a possibly complicated search and replace operation.
+
+## Use shortcodes
+
+{{< youtube 2xkNJL4gJ9E >}}
+
+In your content files, a shortcode can be called by calling `{{%/* shortcodename arguments */%}}`. Shortcode arguments are space delimited, and arguments with internal spaces must be quoted.
+
+The first word in the shortcode declaration is always the name of the shortcode. Arguments follow the name. Depending upon how the shortcode is defined, the arguments may be named, positional, or both, although you can't mix argument types in a single call. The format for named arguments models that of HTML with the format `name="value"`.
+
+Some shortcodes use or require closing shortcodes. Again like HTML, the opening and closing shortcodes match (name only) with the closing declaration, which is prepended with a slash.
+
+Here are two examples of paired shortcodes:
+
+```go-html-template
+{{%/* mdshortcode */%}}Stuff to `process` in the *center*.{{%/* /mdshortcode */%}}
+```
+
+```go-html-template
+{{</* highlight go */>}} A bunch of code here {{</* /highlight */>}}
+```
+
+The examples above use two different delimiters, the difference being the `%` character in the first and the `<>` characters in the second.
+
+### Shortcodes with raw string arguments
+
+You can pass multiple lines as arguments to a shortcode by using raw string literals:
+
+```go-html-template
+{{</* myshortcode `This is some <b>HTML</b>,
+and a new line with a "quoted string".` */>}}
+```
+
+### Shortcodes with Markdown
+
+Shortcodes using the `%` as the outer-most delimiter will be fully rendered when sent to the content renderer. This means that the rendered output from a shortcode can be part of the page's table of contents, footnotes, etc.
+
+### Shortcodes without Markdown
+
+The `<` character indicates that the shortcode's inner content does *not* need further rendering. Often shortcodes without Markdown include internal HTML:
+
+```go-html-template
+{{</* myshortcode */>}}<p>Hello <strong>World!</strong></p>{{</* /myshortcode */>}}
+```
+
+### Nested shortcodes
+
+You can call shortcodes within other shortcodes by creating your own templates that leverage the `.Parent` method. `.Parent` allows you to check the context in which the shortcode is being called. See [Shortcode templates][sctemps].
+
+## Embedded shortcodes
+
+Use these embedded shortcodes as needed.
+
+### figure
+
+{{% note %}}
+To override Hugo's embedded `figure` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl figure %}}
+{{% /note %}}
+
+The `figure` shortcode can use the following named arguments:
+
+src
+: URL of the image to be displayed.
+
+link
+: If the image needs to be hyperlinked, URL of the destination.
+
+target
+: Optional `target` attribute for the URL if `link` argument is set.
+
+rel
+: Optional `rel` attribute for the URL if `link` argument is set.
+
+alt
+: Alternate text for the image if the image cannot be displayed.
+
+title
+: Image title.
+
+caption
+: Image caption. Markdown within the value of `caption` will be rendered.
+
+class
+: `class` attribute of the HTML `figure` tag.
+
+height
+: `height` attribute of the image.
+
+width
+: `width` attribute of the image.
+
+loading
+: `loading` attribute of the image.
+
+attr
+: Image attribution text. Markdown within the value of `attr` will be rendered.
+
+attrlink
+: If the attribution text needs to be hyperlinked, URL of the destination.
+
+Example usage:
+
+```text
+{{</* figure src="elephant.jpg" title="An elephant at sunset" */>}}
+```
+
+Rendered:
+
+```html
+<figure>
+ <img src="elephant.jpg">
+ <figcaption><h4>An elephant at sunset</h4></figcaption>
+</figure>
+```
+
+### gist
+
+{{% note %}}
+To override Hugo's embedded `gist` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl gist %}}
+{{% /note %}}
+
+To display a GitHub [gist] with this URL:
+
+[gist]: https://docs.github.com/en/get-started/writing-on-github/editing-and-sharing-content-with-gists
+
+```text
+https://gist.github.com/user/50a7482715eac222e230d1e64dd9a89b
+```
+
+Include this in your Markdown:
+
+```text
+{{</* gist user 50a7482715eac222e230d1e64dd9a89b */>}}
+```
+
+This will display all files in the gist alphabetically by file name.
+
+{{< gist jmooring 23932424365401ffa5e9d9810102a477 >}}
+
+To display a specific file within the gist:
+
+```text
+{{</* gist user 23932424365401ffa5e9d9810102a477 list.html */>}}
+```
+
+Rendered:
+
+{{< gist jmooring 23932424365401ffa5e9d9810102a477 list.html >}}
+
+### highlight
+
+{{% note %}}
+To override Hugo's embedded `highlight` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl highlight %}}
+{{% /note %}}
+
+To display a highlighted code sample:
+
+```text
+{{</* highlight go-html-template */>}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{</* /highlight */>}}
+```
+
+Rendered:
+
+{{< highlight go-html-template >}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{< /highlight >}}
+
+To specify one or more [highlighting options], include a quotation-encapsulated, comma-separated list:
+
+[highlighting options]: /functions/transform/highlight/
+
+```text
+{{</* highlight go-html-template "lineNos=inline, lineNoStart=42" */>}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{</* /highlight */>}}
+```
+
+Rendered:
+
+{{< highlight go-html-template "lineNos=inline, lineNoStart=42" >}}
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{< /highlight >}}
+
+### instagram
+
+{{% note %}}
+To override Hugo's embedded `instagram` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl instagram %}}
+{{% /note %}}
+
+To display an Instagram post with this URL:
+
+```text
+https://www.instagram.com/p/CxOWiQNP2MO/
+```
+
+Include this in your Markdown:
+
+```text
+{{</* instagram CxOWiQNP2MO */>}}
+```
+
+Rendered:
+
+{{< instagram CxOWiQNP2MO >}}
+
+### param
+
+{{% note %}}
+To override Hugo's embedded `param` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl param %}}
+{{% /note %}}
+
+The `param` shortcode renders a parameter from the page's front matter, falling back to a site parameter of the same name. The shortcode throws an error if the parameter does not exist.
+
+Example usage:
+
+```text
+{{</* param testparam */>}}
+```
+
+Access nested values by [chaining] the [identifiers]:
+
+[chaining]: /getting-started/glossary/#chain
+[identifiers]: /getting-started/glossary/#identifier
+
+```text
+{{</* param my.nested.param */>}}
+```
+
+### ref
+
+{{% note %}}
+To override Hugo's embedded `ref` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+Always use the `{{%/* */%}}` notation when calling this shortcode.
+
+[source code]: {{% eturl ref %}}
+{{% /note %}}
+
+The `ref` shortcode returns the permalink of the given page reference.
+
+Example usage:
+
+```text
+[Post 1]({{%/* ref "/posts/post-1" */%}})
+[Post 1]({{%/* ref "/posts/post-1.md" */%}})
+[Post 1]({{%/* ref "/posts/post-1#foo" */%}})
+[Post 1]({{%/* ref "/posts/post-1.md#foo" */%}})
+```
+
+Rendered:
+
+```html
+<a href="http://example.org/posts/post-1/">Post 1</a>
+<a href="http://example.org/posts/post-1/">Post 1</a>
+<a href="http://example.org/posts/post-1/#foo">Post 1</a>
+<a href="http://example.org/posts/post-1/#foo">Post 1</a>
+```
+
+### relref
+
+{{% note %}}
+To override Hugo's embedded `relref` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+Always use the `{{%/* */%}}` notation when calling this shortcode.
+
+[source code]: {{% eturl relref %}}
+{{% /note %}}
+
+The `relref` shortcode returns the permalink of the given page reference.
+
+Example usage:
+
+```text
+[Post 1]({{%/* relref "/posts/post-1" */%}})
+[Post 1]({{%/* relref "/posts/post-1.md" */%}})
+[Post 1]({{%/* relref "/posts/post-1#foo" */%}})
+[Post 1]({{%/* relref "/posts/post-1.md#foo" */%}})
+```
+
+Rendered:
+
+```html
+<a href="/posts/post-1/">Post 1</a>
+<a href="/posts/post-1/">Post 1</a>
+<a href="/posts/post-1/#foo">Post 1</a>
+<a href="/posts/post-1/#foo">Post 1</a>
+```
+
+### twitter
+
+{{% note %}}
+To override Hugo's embedded `twitter` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+You may call the `twitter` shortcode by using its `tweet` alias.
+
+[source code]: {{% eturl twitter %}}
+{{% /note %}}
+
+To display a Twitter post with this URL:
+
+```txt
+https://x.com/SanDiegoZoo/status/1453110110599868418
+```
+
+Include this in your Markdown:
+
+```text
+{{</* twitter user="SanDiegoZoo" id="1453110110599868418" */>}}
+```
+
+Rendered:
+
+{{< twitter user="SanDiegoZoo" id="1453110110599868418" >}}
+
+### vimeo
+
+{{% note %}}
+To override Hugo's embedded `vimeo` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl vimeo %}}
+{{% /note %}}
+
+To display a Vimeo video with this URL:
+
+```text
+https://vimeo.com/channels/staffpicks/55073825
+```
+
+Include this in your Markdown:
+
+```text
+{{</* vimeo 55073825 */>}}
+```
+
+Rendered:
+
+{{< vimeo 55073825 >}}
+
+{{% note %}}
+If you want to further customize the visual styling, add a `class` argument when calling the shortcode. The new `class` will be added to the `<div>` that wraps the `<iframe>` *and* will remove the inline styles. Note that you will need to call the `id` as a named argument as well. You can also give the vimeo video a descriptive title with `title`.
+
+```go
+{{</* vimeo id="146022717" class="my-vimeo-wrapper-class" title="My vimeo video" */>}}
+```
+{{% /note %}}
+
+### youtube
+
+{{% note %}}
+To override Hugo's embedded `youtube` shortcode, copy the [source code] to a file with the same name in the layouts/shortcodes directory.
+
+[source code]: {{% eturl youtube %}}
+{{% /note %}}
+
+To display a YouTube video with this URL:
+
+```text
+https://www.youtube.com/watch?v=0RKpf3rK57I
+```
+
+Include this in your Markdown:
+
+```text
+{{</* youtube 0RKpf3rK57I */>}}
+```
+
+Rendered:
+
+{{< youtube 0RKpf3rK57I >}}
+
+The youtube shortcode accepts these named arguments:
+
+id
+: (`string`) The video `id`. Optional if the `id` is provided as a positional argument as shown in the example above.
+
+allowFullScreen
+{{< new-in 0.125.0 >}}
+: (`bool`) Whether the `iframe` element can activate full screen mode. Default is `true`.
+
+autoplay
+ {{< new-in 0.125.0 >}}
+: (`bool`) Whether to automatically play the video. Forces `mute` to `true`. Default is `false`.
+
+class
+: (`string`) The `class` attribute of the wrapping `div` element. When specified, removes the `style` attributes from the `iframe` element and its wrapping `div` element.
+
+controls
+{{< new-in 0.125.0 >}}
+: (`bool`) Whether to display the video controls. Default is `true`.
+
+end
+{{< new-in 0.125.0 >}}
+: (`int`) The time, measured in seconds from the start of the video, when the player should stop playing the video.
+
+loading
+{{< new-in 0.125.0 >}}
+: (`string`) The loading attribute of the `iframe` element, either `eager` or `lazy`. Default is `eager`.
+
+loop
+{{< new-in 0.125.0 >}}
+: (`bool`) Whether to indefinitely repeat the video. Ignores the `start` and `end` arguments after the first play. Default is `false`.
+
+mute
+{{< new-in 0.125.0 >}}
+: (`bool`) Whether to mute the video. Always `true` when `autoplay` is `true`. Default is `false`.
+
+start
+{{< new-in 0.125.0 >}}
+: (`int`) The time, measured in seconds from the start of the video, when the player should start playing the video.
+
+title
+: (`string`) The `title` attribute of the `iframe` element. Defaults to "YouTube video".
+
+Example using some of the above:
+
+```text
+{{</* youtube id=0RKpf3rK57I start=30 end=60 loading=lazy */>}}
+```
+
+## Privacy configuration
+
+To learn how to configure your Hugo site to meet the new EU privacy regulation, see [privacy protections].
+
+## Create custom shortcodes
+
+To learn more about creating custom shortcodes, see the [shortcode template documentation].
+
+[privacy protections]: /about/privacy/
- [sctemps]: /templates/shortcode-templates/
- [shortcode template documentation]: /templates/shortcode-templates/
++[partials]: /templates/partial/
+[quickstart]: /getting-started/quick-start/
++[sctemps]: /templates/shortcode/
++[shortcode template documentation]: /templates/shortcode/
+[Vimeo]: https://vimeo.com/
+[YouTube Videos]: https://www.youtube.com/
--- /dev/null
- * `hl_inline` Highlight inside a `<code>` (inline HTML element) tag. Valid values are `true` or `false`. The `code` tag will get a class with name `code-inline`. {{< new-in 0.101.0 >}}
+---
+title: Syntax highlighting
+description: Hugo comes with really fast syntax highlighting from Chroma.
+categories: [content management]
+keywords: [highlighting,chroma,code blocks,syntax]
+menu:
+ docs:
+ parent: content-management
+ weight: 250
+weight: 250
+toc: true
+aliases: [/extras/highlighting/,/extras/highlight/,/tools/syntax-highlighting/]
+---
+
+Hugo uses [Chroma](https://github.com/alecthomas/chroma) as its code highlighter; it is built in Go and is really, really fast.
+
+## Configure syntax highlighter
+
+See [Configure Highlight](/getting-started/configuration-markup#highlight).
+
+## Generate syntax highlighter CSS
+
+If you run with `markup.highlight.noClasses=false` in your site configuration, you need a style sheet. The style sheet will override the style specified in [`markup.highlight.style`](/functions/transform/highlight/#options).
+
+You can generate one with Hugo:
+
+```sh
+hugo gen chromastyles --style=monokai > syntax.css
+```
+
+Run `hugo gen chromastyles -h` for more options. See https://xyproto.github.io/splash/docs/ for a gallery of available styles.
+
+## Highlight shortcode
+
+Highlighting is carried out via the built-in [`highlight` shortcode](/content-management/shortcodes/#highlight). It takes exactly one required argument for the programming language to be highlighted and requires a closing tag.
+
+Options:
+
+* `linenos`: configure line numbers. Valid values are `true`, `false`, `table`, or `inline`. `false` will turn off line numbers if it's configured to be on in site configuration. `table` will give copy-and-paste friendly code blocks.
+* `hl_lines`: lists a set of line numbers or line number ranges to be highlighted.
+* `linenostart=199`: starts the line number count from 199.
+* `anchorlinenos`: Configure anchors on line numbers. Valid values are `true` or `false`;
+* `lineanchors`: Configure a prefix for the anchors on line numbers. Will be suffixed with `-`, so linking to the line number 1 with the option `lineanchors=prefix` adds the anchor `prefix-1` to the page.
++* `hl_inline` Highlight inside a `<code>` (inline HTML element) tag. Valid values are `true` or `false`. The `code` tag will get a class with name `code-inline`.
+
+### Example: highlight shortcode
+
+```go-html-template
+{{</* highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" */>}}
+// ... code
+{{</* / highlight */>}}
+```
+
+Gives this:
+
+{{< highlight go "linenos=table,hl_lines=8 15-17,linenostart=199" >}}
+// GetTitleFunc returns a func that can be used to transform a string to
+// title case.
+//
+// The supported styles are
+//
+// - "Go" (strings.Title)
+// - "AP" (see https://www.apstylebook.com/)
+// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
+//
+// If an unknown or empty style is provided, AP style is what you get.
+func GetTitleFunc(style string) func(s string) string {
+ switch strings.ToLower(style) {
+ case "go":
+ return strings.Title
+ case "chicago":
+ return transform.NewTitleConverter(transform.ChicagoStyle)
+ default:
+ return transform.NewTitleConverter(transform.APStyle)
+ }
+}
+{{< / highlight >}}
+
+## Highlight Hugo/Go template code
+
+For highlighting Hugo/Go template code on your page, add `/*` after the opening double curly braces and `*/` before closing curly braces.
+
+``` go
+{{</*/* myshortcode */*/>}}
+```
+
+Gives this:
+
+``` go
+{{</* myshortcode */>}}
+```
+
+## Highlight template function
+
+See [Highlight](/functions/transform/highlight/).
+
+## Highlighting in code fences
+
+Highlighting in code fences is enabled by default.
+
+````txt
+```go {linenos=table,hl_lines=[8,"15-17"],linenostart=199}
+// ... code
+```
+````
+
+Gives this:
+
+```go {linenos=table,hl_lines=[8,"15-17"],linenostart=199}
+// GetTitleFunc returns a func that can be used to transform a string to
+// title case.
+//
+// The supported styles are
+//
+// - "Go" (strings.Title)
+// - "AP" (see https://www.apstylebook.com/)
+// - "Chicago" (see https://www.chicagomanualofstyle.org/home.html)
+//
+// If an unknown or empty style is provided, AP style is what you get.
+func GetTitleFunc(style string) func(s string) string {
+ switch strings.ToLower(style) {
+ case "go":
+ return strings.Title
+ case "chicago":
+ return transform.NewTitleConverter(transform.ChicagoStyle)
+ default:
+ return transform.NewTitleConverter(transform.APStyle)
+ }
+}
+```
+
+The options are the same as in the [highlighting shortcode](/content-management/syntax-highlighting/#highlight-shortcode), including `linenos=false`, but note the slightly different Markdown attribute syntax.
+
+## List of Chroma highlighting languages
+
+The full list of Chroma lexers and their aliases (which is the identifier used in the `highlight` template func or when doing highlighting in code fences):
+
+{{< chroma-lexers >}}
--- /dev/null
- * A single page at `example.com/categories/` that lists all the [terms within the taxonomy]
+---
+title: Taxonomies
+description: Hugo includes support for user-defined taxonomies.
+categories: [content management]
+keywords: [taxonomies,metadata,front matter,terms]
+menu:
+ docs:
+ parent: content-management
+ weight: 150
+weight: 150
+toc: true
+aliases: [/taxonomies/overview/,/taxonomies/usage/,/indexes/overview/,/doc/indexes/,/extras/indexes]
+---
+
+## What is a taxonomy?
+
+Hugo includes support for user-defined groupings of content called **taxonomies**. Taxonomies are classifications of logical relationships between content.
+
+### Definitions
+
+Taxonomy
+: a categorization that can be used to classify content
+
+Term
+: a key within the taxonomy
+
+Value
+: a piece of content assigned to a term
+
+## Example taxonomy: movie website
+
+Let's assume you are making a website about movies. You may want to include the following taxonomies:
+
+* Actors
+* Directors
+* Studios
+* Genre
+* Year
+* Awards
+
+Then, in each of the movies, you would specify terms for each of these taxonomies (i.e., in the [front matter] of each of your movie content files). From these terms, Hugo would automatically create pages for each Actor, Director, Studio, Genre, Year, and Award, with each listing all of the Movies that matched that specific Actor, Director, Studio, Genre, Year, and Award.
+
+### Movie taxonomy organization
+
+To continue with the example of a movie site, the following demonstrates content relationships from the perspective of the taxonomy:
+
+```txt
+Actor <- Taxonomy
+ Bruce Willis <- Term
+ The Sixth Sense <- Value
+ Unbreakable <- Value
+ Moonrise Kingdom <- Value
+ Samuel L. Jackson <- Term
+ Unbreakable <- Value
+ The Avengers <- Value
+ xXx <- Value
+```
+
+From the perspective of the content, the relationships would appear differently, although the data and labels used are the same:
+
+```txt
+Unbreakable <- Value
+ Actors <- Taxonomy
+ Bruce Willis <- Term
+ Samuel L. Jackson <- Term
+ Director <- Taxonomy
+ M. Night Shyamalan <- Term
+ ...
+Moonrise Kingdom <- Value
+ Actors <- Taxonomy
+ Bruce Willis <- Term
+ Bill Murray <- Term
+ Director <- Taxonomy
+ Wes Anderson <- Term
+ ...
+```
+
+## Default taxonomies
+
+Hugo natively supports taxonomies.
+
+Without adding a single line to your [site configuration] file, Hugo will automatically create taxonomies for `tags` and `categories`. That would be the same as manually [configuring your taxonomies](#configure-taxonomies) as below:
+
+{{< code-toggle config=taxonomies />}}
+
+If you do not want Hugo to create any taxonomies, set `disableKinds` in your [site configuration] to the following:
+
+{{< code-toggle file=hugo >}}
+disableKinds = ["taxonomy","term"]
+{{</ code-toggle >}}
+
+{{% include "content-management/_common/page-kinds.md" %}}
+
+### Default destinations
+
+When taxonomies are used---and [taxonomy templates] are provided---Hugo will automatically create both a page listing all the taxonomy's terms and individual pages with lists of content associated with each term. For example, a `categories` taxonomy declared in your configuration and used in your content front matter will create the following pages:
+
- A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in [taxonomy list templates] and is declared in a content file's [front matter]. The convention for declaring taxonomic weight is `taxonomyname_weight`.
++* A single page at `example.com/categories/` that lists all the terms within the taxonomy
+* [Individual taxonomy list pages][taxonomy templates] (e.g., `/categories/development/`) for each of the terms that shows a listing of all pages marked as part of that taxonomy within any content file's [front matter]
+
+## Configure taxonomies
+
+Custom taxonomies other than the [defaults](#default-taxonomies) must be defined in your [site configuration] before they can be used throughout the site. You need to provide both the plural and singular labels for each taxonomy. For example, `singular key = "plural value"` for TOML and `singular key: "plural value"` for YAML.
+
+### Example: adding a custom taxonomy named "series"
+
+{{% note %}}
+While adding custom taxonomies, you need to put in the default taxonomies too, _if you want to keep them_.
+{{% /note %}}
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+ tag = "tags"
+ category = "categories"
+ series = "series"
+{{</ code-toggle >}}
+
+### Example: removing default taxonomies
+
+If you want to have just the default `tags` taxonomy, and remove the `categories` taxonomy for your site, you can do so by modifying the `taxonomies` value in your [site configuration].
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+ tag = "tags"
+{{</ code-toggle >}}
+
+If you want to disable all taxonomies altogether, see the use of `disableKinds` in [Hugo Taxonomy Defaults](#default-taxonomies).
+
+{{% note %}}
+You can add content and front matter to your taxonomy list and taxonomy terms pages. See [Content Organization](/content-management/organization/) for more information on how to add an `_index.md` for this purpose.
+{{% /note %}}
+
+## Assign terms to content
+
+To assign one or more terms to a page, create a front matter field using the plural name of the taxonomy, then add terms to the corresponding array. For example:
+
+{{< code-toggle file=content/example.md fm=true >}}
+title = 'Example'
+tags = ['Tag A','Tag B']
+categories = ['Category A','Category B']
+{{< /code-toggle >}}
+
+## Order taxonomies
+
- [taxonomy list templates]: /templates/taxonomy-templates/#taxonomy-templates
- [taxonomy templates]: /templates/taxonomy-templates/
- [terms within the taxonomy]: /templates/taxonomy-templates/#term-templates
++A content file can assign weight for each of its associate taxonomies. Taxonomic weight can be used for sorting or ordering content in [taxonomy templates] and is declared in a content file's [front matter]. The convention for declaring taxonomic weight is `taxonomyname_weight`.
+
+The following show a piece of content that has a weight of 22, which can be used for ordering purposes when rendering the pages assigned to the "a", "b" and "c" values of the `tags` taxonomy. It has also been assigned the weight of 44 when rendering the "d" category page.
+
+### Example: taxonomic `weight`
+
+{{< code-toggle >}}
+title = "foo"
+tags = [ "a", "b", "c" ]
+tags_weight = 22
+categories = ["d"]
+categories_weight = 44
+{{</ code-toggle >}}
+
+By using taxonomic weight, the same piece of content can appear in different positions in different taxonomies.
+
+## Add custom metadata to a taxonomy or term
+
+If you need to add custom metadata to your taxonomy terms, you will need to create a page for that term at `/content/<TAXONOMY>/<TERM>/_index.md` and add your metadata in its front matter. Continuing with our 'Actors' example, let's say you want to add a Wikipedia page link to each actor. Your terms pages would be something like this:
+
+{{< code-toggle file=content/actors/bruce-willis/_index.md fm=true >}}
+title: "Bruce Willis"
+wikipedia: "https://en.wikipedia.org/wiki/Bruce_Willis"
+{{< /code-toggle >}}
+
+[content section]: /content-management/sections/
+[content type]: /content-management/types/
+[documentation on archetypes]: /content-management/archetypes/
+[front matter]: /content-management/front-matter/
++[taxonomy templates]: /templates/types/#taxonomy
+[site configuration]: /getting-started/configuration/
--- /dev/null
- - Determine how the content is rendered. See [Template Lookup Order](/templates/lookup-order/) and [Content Views](/templates/views) for more.
+---
+title: Content types
+description: Hugo is built around content organized in sections.
+categories: [content management]
+keywords: [lists,sections,content types,types,organization]
+menu:
+ docs:
+ parent: content-management
+ weight: 130
+weight: 130
+toc: true
+aliases: [/content/types]
+---
+
+A **content type** is a way to organize your content. Hugo resolves the content type from either the `type` in front matter or, if not set, the first directory in the file path. E.g. `content/blog/my-first-event.md` will be of type `blog` if no `type` is set.
+
+A content type is used to
+
++- Determine how the content is rendered. See [Template Lookup Order](/templates/lookup-order/) and [Content Views](/templates/content-view) for more.
+- Determine which [archetype](/content-management/archetypes/) template to use for new content.
--- /dev/null
- Use these tokens when defining the URL pattern.
+---
+title: URL management
+description: Control the structure and appearance of URLs through front matter entries and settings in your site configuration.
+categories: [content management]
+keywords: [aliases,redirects,permalinks,urls]
+menu:
+ docs:
+ parent: content-management
+ weight: 180
+weight: 180
+toc: true
+aliases: [/extras/permalinks/,/extras/aliases/,/extras/urls/,/doc/redirects/,/doc/alias/,/doc/aliases/]
+---
+
+## Overview
+
+By default, when Hugo renders a page, the resulting URL matches the file path within the `content` directory. For example:
+
+```text
+content/posts/post-1.md → https://example.org/posts/post-1/
+```
+
+You can change the structure and appearance of URLs with front matter values and site configuration options.
+
+## Front matter
+
+### `slug`
+
+Set the `slug` in front matter to override the last segment of the path. The `slug` value does not affect section pages.
+
+{{< code-toggle file=content/posts/post-1.md fm=true >}}
+title = 'My First Post'
+slug = 'my-first-post'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/posts/my-first-post/
+```
+
+### `url`
+
+Set the `url` in front matter to override the entire path. Use this with either regular pages or section pages.
+
+With this front matter:
+
+{{< code-toggle file=content/posts/post-1.md fm=true >}}
+title = 'My First Article'
+url = '/articles/my-first-article'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/articles/my-first-article/
+```
+
+If you include a file extension:
+
+{{< code-toggle file=content/posts/post-1.md fm=true >}}
+title = 'My First Article'
+url = '/articles/my-first-article.html'
+{{< /code-toggle >}}
+
+The resulting URL will be:
+
+```text
+https://example.org/articles/my-first-article.html
+```
+
+In a monolingual site, a `url` value with or without a leading slash is relative to the `baseURL`.
+
+In a multilingual site:
+
+- A `url` value with a leading slash is relative to the `baseURL`.
+- A `url` value without a leading slash is relative to the `baseURL` plus the language prefix.
+
+Site type|Front matter `url`|Resulting URL
+:--|:--|:--
+monolingual|`/about`|`https://example.org/about/`
+monolingual|`about`|`https://example.org/about/`
+multilingual|`/about`|`https://example.org/about/`
+multilingual|`about`|`https://example.org/de/about/`
+
+If you set both `slug` and `url` in front matter, the `url` value takes precedence.
+
++#### Permalinks tokens in front matter
++
++{{< new-in "0.131.0" >}}
++
++You can also use [Permalinks tokens](#tokens) in the `url` front matter. This is typically used in `cascade` sections:
++
++{{< code-toggle file=content/foo/bar/_index.md fm=true >}}
++title ="Bar"
++[[cascade]]
++ url = "/:sections[last]/:slug"
++{{< /code-toggle >}}
++
++
+## Site configuration
+
+### Permalinks
+
+In your site configuration, define a URL pattern for each top-level section. Each URL pattern can target a given language and/or page kind.
+
+Front matter `url` values override the URL patterns defined in the `permalinks` section of your site configuration.
+
+#### Monolingual examples {#permalinks-monolingual-examples}
+
+With this content structure:
+
+```text
+content/
+├── posts/
+│ ├── bash-in-slow-motion.md
+│ └── tls-in-a-nutshell.md
+├── tutorials/
+│ ├── git-for-beginners.md
+│ └── javascript-bundling-with-hugo.md
+└── _index.md
+```
+
+Render tutorials under "training", and render the posts under "articles" with a date-base hierarchy:
+
+{{< code-toggle file=hugo >}}
+[permalinks.page]
+posts = '/articles/:year/:month/:slug/'
+tutorials = '/training/:slug/'
+[permalinks.section]
+posts = '/articles/'
+tutorials = '/training/'
+{{< /code-toggle >}}
+
+The structure of the published site will be:
+
+```text
+public/
+├── articles/
+│ ├── 2023/
+│ │ ├── 04/
+│ │ │ └── bash-in-slow-motion/
+│ │ │ └── index.html
+│ │ └── 06/
+│ │ └── tls-in-a-nutshell/
+│ │ └── index.html
+│ └── index.html
+├── training/
+│ ├── git-for-beginners/
+│ │ └── index.html
+│ ├── javascript-bundling-with-hugo/
+│ │ └── index.html
+│ └── index.html
+└── index.html
+```
+
+To create a date-based hierarchy for regular pages in the content root:
+
+{{< code-toggle file=hugo >}}
+[permalinks.page]
+"/" = "/:year/:month/:slug/"
+{{< /code-toggle >}}
+
+Use the same approach with taxonomy terms. For example, to omit the taxonomy segment of the URL:
+
+{{< code-toggle file=hugo >}}
+[permalinks.term]
+'tags' = '/:slug/'
+{{< /code-toggle >}}
+
+#### Multilingual example {#permalinks-multilingual-example}
+
+Use the `permalinks` configuration as a component of your localization strategy.
+
+With this content structure:
+
+```text
+content/
+├── en/
+│ ├── books/
+│ │ ├── les-miserables.md
+│ │ └── the-hunchback-of-notre-dame.md
+│ └── _index.md
+└── es/
+ ├── books/
+ │ ├── les-miserables.md
+ │ └── the-hunchback-of-notre-dame.md
+ └── _index.md
+```
+
+And this site configuration:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+
+[languages.en]
+contentDir = 'content/en'
+languageCode = 'en-US'
+languageDirection = 'ltr'
+languageName = 'English'
+weight = 1
+
+[languages.en.permalinks.page]
+books = "/books/:slug/"
+
+[languages.en.permalinks.section]
+books = "/books/"
+
+[languages.es]
+contentDir = 'content/es'
+languageCode = 'es-ES'
+languageDirection = 'ltr'
+languageName = 'Español'
+weight = 2
+
+[languages.es.permalinks.page]
+books = "/libros/:slug/"
+
+[languages.es.permalinks.section]
+books = "/libros/"
+{{< /code-toggle >}}
+
+The structure of the published site will be:
+
+```text
+public/
+├── en/
+│ ├── books/
+│ │ ├── les-miserables/
+│ │ │ └── index.html
+│ │ ├── the-hunchback-of-notre-dame/
+│ │ │ └── index.html
+│ │ └── index.html
+│ └── index.html
+├── es/
+│ ├── libros/
+│ │ ├── les-miserables/
+│ │ │ └── index.html
+│ │ ├── the-hunchback-of-notre-dame/
+│ │ │ └── index.html
+│ │ └── index.html
+│ └── index.html
+└── index.html
+````
+
+#### Tokens
+
++Use these tokens when defining the URL pattern. These can both be used in the `permalinks` configuration and in the front matter [url](#permalinks-tokens-in-front-matter).
++
++`:filename`
+
+`:year`
+: The 4-digit year as defined in the front matter `date` field.
+
+`:month`
+: The 2-digit month as defined in the front matter `date` field.
+
+`:monthname`
+: The name of the month as defined in the front matter `date` field.
+
+`:day`
+: The 2-digit day as defined in the front matter `date` field.
+
+`:weekday`
+: The 1-digit day of the week as defined in the front matter `date` field (Sunday = 0).
+
+`:weekdayname`
+: The name of the day of the week as defined in the front matter `date` field.
+
+`:yearday`
+: The 1- to 3-digit day of the year as defined in the front matter `date` field.
+
+`:section`
+: The content's section.
+
+`:sections`
+: The content's sections hierarchy. You can use a selection of the sections using _slice syntax_: `:sections[1:]` includes all but the first, `:sections[:last]` includes all but the last, `:sections[last]` includes only the last, `:sections[1:2]` includes section 2 and 3. Note that this slice access will not throw any out-of-bounds errors, so you don't have to be exact.
+
+`:title`
+: The title as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
+
+`:slug`
+: The slug as defined in front matter, else the title as defined in front matter, else the automatic title. Hugo generates titles automatically for section, taxonomy, and term pages that are not backed by a file.
+
+`:filename`
+: The content's file name without extension, applicable to the `page` page kind.
+
+`:slugorfilename`
+: The slug as defined in front matter, else the content's file name without extension, applicable to the `page` page kind.
+
+For time-related values, you can also use the layout string components defined in Go's [time package]. For example:
+
+[time package]: https://pkg.go.dev/time#pkg-constants
+
+{{< code-toggle file=hugo >}}
+permalinks:
+ posts: /:06/:1/:2/:title/
+{{< /code-toggle >}}
+
+### Appearance
+
+The appearance of a URL is either ugly or pretty.
+
+Type|Path|URL
+:--|:--|:--
+ugly|content/about.md|`https://example.org/about.html`
+pretty|content/about.md|`https://example.org/about/`
+
+By default, Hugo produces pretty URLs. To generate ugly URLs, change your site configuration:
+
+{{< code-toggle file=hugo >}}
+uglyURLs = true
+{{< /code-toggle >}}
+
+### Post-processing
+
+Hugo provides two mutually exclusive configuration options to alter URLs _after_ it renders a page.
+
+#### Canonical URLs
+
+{{% note %}}
+This is a legacy configuration option, superseded by template functions and Markdown render hooks, and will likely be [removed in a future release].
+
+[removed in a future release]: https://github.com/gohugoio/hugo/issues/4733
+{{% /note %}}
+
+If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then prepends the `baseURL` to create absolute URLs.
+
+```html
+<a href="/about"> → <a href="https://example.org/about/">
+<img src="/a.gif"> → <img src="https://example.org/a.gif">
+```
+
+This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, this is a legacy configuration option that will likely be removed in a future release.
+
+To enable:
+
+{{< code-toggle file=hugo >}}
+canonifyURLs = true
+{{< /code-toggle >}}
+
+#### Relative URLs
+
+{{% note %}}
+Do not enable this option unless you are creating a serverless site, navigable via the file system.
+{{% /note %}}
+
+If enabled, Hugo performs a search and replace _after_ it renders the page. It searches for site-relative URLs (those with a leading slash) associated with `action`, `href`, `src`, `srcset`, and `url` attributes. It then transforms the URL to be relative to the current page.
+
+For example, when rendering `content/posts/post-1`:
+
+```html
+<a href="/about"> → <a href="../../about">
+<img src="/a.gif"> → <img src="../../a.gif">
+```
+
+This is an imperfect, brute force approach that can affect content as well as HTML attributes. As noted above, do not enable this option unless you are creating a serverless site.
+
+To enable:
+
+{{< code-toggle file=hugo >}}
+relativeURLs = true
+{{< /code-toggle >}}
+
+## Aliases
+
+Create redirects from old URLs to new URLs with aliases:
+
+- An alias with a leading slash is relative to the `baseURL`
+- An alias without a leading slash is relative to the current directory
+
+### Examples {#alias-examples}
+
+Change the file name of an existing page, and create an alias from the previous URL to the new URL:
+
+{{< code-toggle file=content/posts/new-file-name.md >}}
+aliases = ['/posts/previous-file-name']
+{{< /code-toggle >}}
+
+Each of these directory-relative aliases is equivalent to the site-relative alias above:
+
+- `previous-file-name`
+- `./previous-file-name`
+- `../posts/previous-file-name`
+
+You can create more than one alias to the current page:
+
+{{< code-toggle file=content/posts/new-file-name.md >}}
+aliases = ['previous-file-name','original-file-name']
+{{< /code-toggle >}}
+
+In a multilingual site, use a directory-relative alias, or include the language prefix with a site-relative alias:
+
+{{< code-toggle file=content/posts/new-file-name.de.md >}}
+aliases = ['/de/posts/previous-file-name']
+{{< /code-toggle >}}
+
+### How aliases work
+
+Using the first example above, Hugo generates the following site structure:
+
+```text
+public/
+├── posts/
+│ ├── new-file-name/
+│ │ └── index.html
+│ ├── previous-file-name/
+│ │ └── index.html
+│ └── index.html
+└── index.html
+```
+
+The alias from the previous URL to the new URL is a client-side redirect:
+
+{{< code file=posts/previous-file-name/index.html >}}
+<!DOCTYPE html>
+<html lang="en-us">
+ <head>
+ <title>https://example.org/posts/new-file-name/</title>
+ <link rel="canonical" href="https://example.org/posts/new-file-name/">
+ <meta name="robots" content="noindex">
+ <meta charset="utf-8">
+ <meta http-equiv="refresh" content="0; url=https://example.org/posts/new-file-name/">
+ </head>
+</html>
+{{< /code >}}
+
+Collectively, the elements in the `head` section:
+
+- Tell search engines that the new URL is canonical
+- Tell search engines not to index the previous URL
+- Tell the browser to redirect to the new URL
+
+Hugo renders alias files before rendering pages. A new page with the previous file name will overwrite the alias, as expected.
+
+### Customize
+
+To override Hugo's embedded `alias` template, copy the [source code] to a file with the same name in the layouts directory. The template receives the following context:
+
+Permalink
+: The link to the page being aliased.
+
+Page
+: The Page data for the page being aliased.
+
+[source code]: {{% eturl alias %}}
--- /dev/null
- CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.126.0
+---
+title: Development
+description: Contribute to the development of Hugo.
+categories: [contribute]
+keywords: [development]
+menu:
+ docs:
+ parent: contribute
+ weight: 20
+weight: 20
+toc: true
+---
+
+## Introduction
+
+You can contribute to the Hugo project by:
+
+- Answering questions on the [forum]
+- Improving the [documentation]
+- Monitoring the [issue queue]
+- Creating or improving [themes]
+- Squashing [bugs]
+
+Please submit documentation issues and pull requests to the [documentation repository].
+
+If you have an idea for an enhancement or new feature, create a new topic on the [forum] in the "Feature" category. This will help you to:
+
+- Determine if the capability already exists
+- Measure interest
+- Refine the concept
+
+If there is sufficient interest, [create a proposal]. Do not submit a pull request until the project lead accepts the proposal.
+
+For a complete guide to contributing to Hugo, see the [Contribution Guide].
+
+[bugs]: https://github.com/gohugoio/hugo/issues?q=is%3Aopen+is%3Aissue+label%3ABug
+[contributing]: CONTRIBUTING.md
+[create a proposal]: https://github.com/gohugoio/hugo/issues/new?labels=Proposal%2C+NeedsTriage&template=feature_request.md
+[documentation repository]: https://github.com/gohugoio/hugoDocs
+[documentation]: https://gohugo.io/documentation
+[forum]: https://discourse.gohugo.io
+[issue queue]: https://github.com/gohugoio/hugo/issues
+[themes]: https://themes.gohugo.io/
+[contribution guide]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md
+
+## Prerequisites
+
+To build the extended edition of Hugo from source you must:
+
+1. Install [Git]
+1. Install [Go] version 1.20 or later
+1. Install a C compiler, either [GCC] or [Clang]
+1. Update your `PATH` environment variable as described in the [Go documentation]
+
+[Clang]: https://clang.llvm.org/
+[GCC]: https://gcc.gnu.org/
+[Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Go documentation]: https://go.dev/doc/code#Command
+[Go]: https://go.dev/doc/install
+
+{{% note %}}
+See these [detailed instructions](https://discourse.gohugo.io/t/41370) to install GCC on Windows.
+{{% /note %}}
+
+## GitHub workflow
+
+{{% note %}}
+This section assumes that you have a working knowledge of Go, Git and GitHub, and are comfortable working on the command line.
+{{% /note %}}
+
+Use this workflow to create and submit pull requests.
+
+Step 1
+: Fork the [project repository].
+
+[project repository]: https://github.com/gohugoio/hugo/
+
+Step 2
+: Clone your fork.
+
+Step 3
+: Create a new branch with a descriptive name that includes the corresponding issue number.
+
+For a new feature:
+
+```sh
+git checkout -b feat/implement-some-feature-99999
+```
+
+For a bug fix:
+
+```sh
+git checkout -b fix/fix-some-bug-99999
+```
+
+Step 4
+: Make changes.
+
+Step 5
+: Compile and install:
+
+```text
+CGO_ENABLED=1 go install -tags extended
+```
+
+Step 6
+: Test your changes:
+
+```text
+go test ./...
+```
+
+Step 7
+: Commit your changes with a descriptive commit message:
+
+- Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
+- Optionally, provide a detailed description where each line is 80 characters or less, followed by a blank line.
+- Add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change.
+
+[issues]: https://github.com/gohugoio/hugo/issues
+
+For example:
+
+```sh
+git commit -m "tpl/strings: Create wrap function
+
+The strings.Wrap function wraps a string into one or more lines,
+splitting the string after the given number of characters, but not
+splitting in the middle of a word.
+
+Fixes #99998
+Closes #99999"
+```
+
+See the [commit message guidelines] for details.
+
+[commit message guidelines]: https://github.com/gohugoio/hugo/blob/master/CONTRIBUTING.md#git-commit-message-guidelines
+
+Step 8
+: Push the new branch to your fork of the documentation repository.
+
+Step 9
+: Visit the [project repository] and create a pull request (PR).
+
+Step 10
+: A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
+
+## Building from source
+
+You can build, install, and test Hugo at any point in its development history. The examples below build and install the extended version of Hugo.
+
+To build and install the latest release:
+
+```sh
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@latest
+```
+
+To build and install a specific release:
+
+```sh
++CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@v0.128.0
+```
+
+To build and install at the latest commit on the master branch:
+
+```sh
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@master
+```
+
+To build and install at a specific commit:
+
+```sh
+CGO_ENABLED=1 go install -tags extended github.com/gohugoio/hugo@0851c17
+```
--- /dev/null
+---
+title: Documentation
+description: Help us to improve the documentation by identifying issues and suggesting changes.
+categories: [contribute]
+keywords: [documentation]
+menu:
+ docs:
+ parent: contribute
+ weight: 30
+weight: 30
+toc: true
+aliases: [/contribute/docs/]
+---
+
+## Introduction
+
+We welcome corrections and improvements to the documentation. Please note that the documentation resides in its own repository, separate from the project repository.
+
+For corrections and improvements to the current documentation, please submit issues and pull requests to the [documentation repository].
+
+For documentation related to a new feature, please include the documentation changes when you submit a pull request to the [project repository].
+
+## Guidelines
+
+### Markdown
+
+Please follow these guidelines:
+
+- Use [ATX] headings, not [setext] headings, levels 2 through 4
+- Use [fenced code blocks], not [indented code blocks]
+- Use hyphens, not asterisks, with unordered [list items]
+- Use the [note shortcode] instead of blockquotes
+- Do not mix [raw HTML] within Markdown
+- Do not use bold text instead of a heading or description term (`dt`)
+- Remove consecutive blank lines (maximum of two)
+- Remove trailing spaces
+
+### Style
+
+Although we do not strictly adhere to the [Microsoft Writing Style Guide], it is an excellent resource for questions related to style, grammar, and voice.
+
+#### Terminology
+
+Please link to the [glossary of terms] when necessary, and use the terms consistently throughout the documentation. Of special note:
+
+- The term "front matter" is two words unless you are referring to the configuration key
++- The term "home page" is two words
++- The term "website" is one word
+- The term "standalone" is one word, not hyphenated
+- Use the word "map" instead of "dictionary"
+- Use the word "flag" instead of "option" when referring to a command line flag
+- Capitalize the word "Markdown"
+- Hyphenate the term "open-source" when used an adjective.
+
+#### Page titles and headings
+
+Please follow these guidelines for page titles and headings:
+
+- Use sentence-style capitalization
+- Avoid formatted strings in headings and page titles
+- Shorter is better
+
+#### Use active voice with present tense
+
+In software documentation, passive voice is unavoidable in some cases. Please use active voice when possible.
+
+No → With Hugo you can build a static site.\
+Yes → Build a static site with Hugo.
+
+No → This will cause Hugo to generate HTML files in the public directory.\
+Yes → Hugo generates HTML files in the public directory.
+
+#### Use second person instead of third person
+
+No → Users should exercise caution when deleting files.\
+Better → You must be cautious when deleting files.\
+Best → Be cautious when deleting files.
+
+#### Avoid adverbs when possible
+
+No → Hugo is extremely fast.\
+Yes → Hugo is fast.
+
+{{% note %}}
+"It's an adverb, Sam. It's a lazy tool of a weak mind." (Outbreak, 1995).
+{{% /note %}}
+
+#### Miscellaneous
+
+Other guidelines to consider:
+
+- Do not place list items directly under a heading; include an introductory sentence or phrase before the list.
+- Avoid use of **bold** text. Use the [note shortcode] to draw attention to important content.
+- Do not place description terms (`dt`) within backticks unless required for syntactic clarity.
+- Do not use Hugo's `ref` or `relref` shortcodes. We use a link render hook to resolve and validate link destinations, including fragments.
+- Shorter is better. If there is more than one way to do something, describe the current best practice. For example, avoid phrases such as "you can also do..." and "in older versions you had to..."
+- When including code samples, use short snippets that demonstrate the concept.
+- The Hugo user community is global; use [basic english](https://simple.wikipedia.org/wiki/Basic_English) when possible.
+
+#### Level 6 headings
+
+Level 6 headings are styled as `dt` elements. This was implemented to support a [glossary] with linkable terms.
+
+[glossary]: /getting-started/glossary/
+
+## Code examples
+
+Indent code by two spaces. With examples of template code, include a space after opening action delimiters, and include a space before closing action delimiters.
+
+### Fenced code blocks
+
+Always include the language code when using a fenced code block:
+
+````text
+```go-html-template
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
+{{ end }}
+```
+````
+
+Rendered:
+
+```go-html-template
+{{ if eq $foo "bar" }}
+ {{ print "foo is bar" }}
+{{ end }}
+```
+
+### Shortcode calls
+
+Use this syntax to include shortcodes calls within your code examples:
+
+```text
+{{</*/* foo */*/>}}
+{{%/*/* foo */*/%}}
+```
+
+Rendered:
+
+```text
+{{</* foo */>}}
+{{%/* foo */%}}
+```
+
+### Site configuration
+
+Use the [code-toggle shortcode] to include site configuration examples:
+
+```text
+{{</* code-toggle file=hugo */>}}
+baseURL = 'https://example.org/'
+languageCode = 'en-US'
+title = 'My Site'
+{{</* /code-toggle */>}}
+```
+
+Rendered:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+languageCode = 'en-US'
+title = 'My Site'
+{{< /code-toggle >}}
+
+### Front matter
+
+Use the [code-toggle shortcode] to include front matter examples:
+
+```text
+{{</* code-toggle file=content/posts/my-first-post.md fm=true */>}}
+title = 'My first post'
+date = 2023-11-09T12:56:07-08:00
+draft = false
+{{</* /code-toggle */>}}
+```
+
+Rendered:
+
+{{< code-toggle file=content/posts/my-first-post.md fm=true >}}
+title = 'My first post'
+date = 2023-11-09T12:56:07-08:00
+draft = false
+{{< /code-toggle >}}
+
+### Other code examples
+
+Use the [code shortcode] for other code examples that require a file name:
+
+```text
+{{</* code file=layouts/_default/single.html */>}}
+{{ range .Site.RegularPages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{</* /code */>}}
+```
+
+Rendered:
+
+{{< code file=layouts/_default/single.html >}}
+{{ range .Site.RegularPages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{< /code >}}
+
+## Shortcodes
+
+These shortcodes are commonly used throughout the documentation. Other shortcodes are available for specialized use.
+
+### code
+
+Use the "code" shortcode for other code examples that require a file name. See the [code examples] above. This shortcode takes these arguments:
+
+copy
+: (`bool`) Whether to display a copy-to-clipboard button. Default is `false`.
+
+file
+: (`string`) The file name to display.
+
+lang
+: (`string`) The code language. If you do not provide a `lang` argument, the code language is determined by the file extension. If the file extension is `html`, sets the code language to `go-html-template`. Default is `text`.
+
+### code-toggle
+
+Use the "code-toggle" shortcode to display examples of site configuration, front matter, or data files. See the [code examples] above. This shortcode takes these arguments:
+
+copy
+: (`bool`) Whether to display a copy-to-clipboard button. Default is `false`.
+
+file
+: (`string`) The file name to display. Omit the file extension for site configuration examples.
+
+fm
+: (`bool`) Whether the example is front matter. Default is `false`.
+
+
+### deprecated-in
+
+Use the “deprecated-in” shortcode to indicate that a feature is deprecated:
+
+```text
+{{%/* deprecated-in 0.127.0 */%}}
+Use [`hugo.IsServer`] instead.
+
+[`hugo.IsServer`]: /functions/hugo/isserver/
+{{%/* /deprecated-in */%}}
+```
+
+Rendered:
+
+{{% deprecated-in 0.127.0 %}}
+Use [`hugo.IsServer`] instead.
+
+[`hugo.IsServer`]: /functions/hugo/isserver/
+{{% /deprecated-in %}}
+
+### eturl
+
+Use the embedded template URL (eturl) shortcode to insert an absolute URL to the source code for an embedded template. The shortcode takes a single argument, the base file name of the template (omit the file extension).
+
+```text
+This is a link to the [embedded alias template].
+
+[embedded alias template]: {{%/* eturl alias */%}}
+```
+
+Rendered:
+
+This is a link to the [embedded alias template].
+
+[embedded alias template]: {{% eturl alias %}}
+
+### new-in
+
+Use the "new-in" shortcode to indicate a new feature:
+
+```text
+{{</* new-in 0.127.0 */>}}
+```
+
+Rendered:
+
+{{< new-in 0.127.0 >}}
+
+### note
+
+Use the "note" shortcode with `{{%/* */%}}` delimiters to call attention to important content:
+
+```text
+{{%/* note */%}}
+Use the [`math.Mod`] function to control...
+
+[`math.Mod`]: /functions/math/mod/
+{{%/* /note */%}}
+```
+
+Rendered:
+
+{{% note %}}
+Use the [`math.Mod`] function to control...
+
+[`math.Mod`]: /functions/math/mod/
+{{% /note %}}
+
+## New features
+
+Use the "new-in" shortcode to indicate a new feature:
+
+{{< code file=content/something/foo.md lang=text >}}
+{{</* new-in 0.120.0 */>}}
+{{< /code >}}
+
+The "new in" label will be hidden if the specified version is older than a predefined threshold, based on differences in major and minor versions. See [details](https://github.com/gohugoio/hugoDocs/blob/master/_vendor/github.com/gohugoio/gohugoioTheme/layouts/shortcodes/new-in.html).
+
+## Deprecated features
+
+Use the "deprecated-in" shortcode to indicate that a feature is deprecated:
+
+{{< code file=content/something/foo.md >}}
+{{%/* deprecated-in 0.120.0 */%}}
+Use [`hugo.IsServer`] instead.
+
+[`hugo.IsServer`]: /functions/hugo/isserver/
+{{%/* /deprecated-in */%}}
+{{< /code >}}
+
+When deprecating a function or method, add this to front matter:
+
+{{< code-toggle file=content/something/foo.md fm=true >}}
+expiryDate: 2024-10-30
+{{< /code-toggle >}}
+
+Set the `expiryDate` to one year from the date of deprecation, and add a brief front matter comment to explain the setting.
+
+## GitHub workflow
+
+{{% note %}}
+This section assumes that you have a working knowledge of Git and GitHub, and are comfortable working on the command line.
+{{% /note %}}
+
+Use this workflow to create and submit pull requests.
+
+Step 1
+: Fork the [documentation repository].
+
+Step 2
+: Clone your fork.
+
+Step 3
+: Create a new branch with a descriptive name that includes the corresponding issue number, if any:
+
+```sh
+git checkout -b restructure-foo-page-99999
+```
+
+Step 4
+: Make changes.
+
+Step 5
+: Build the site locally to preview your changes.
+
+Step 6
+: Commit your changes with a descriptive commit message:
+
+- Provide a summary on the first line, typically 50 characters or less, followed by a blank line.
+- Optionally, provide a detailed description where each line is 80 characters or less, followed by a blank line.
+- Optionally, add one or more "Fixes" or "Closes" keywords, each on its own line, referencing the [issues] addressed by this change.
+
+For example:
+
+```sh
+git commit -m "Restructure the taxonomy page
+
+This restructures the taxonomy page by splitting topics into logical
+sections, each with one or more examples.
+
+Fixes #9999
+Closes #9998"
+```
+
+Step 7
+: Push the new branch to your fork of the documentation repository.
+
+Step 8
+: Visit the [documentation repository] and create a pull request (PR).
+
+Step 9
+: A project maintainer will review your PR and may request changes. You may delete your branch after the maintainer merges your PR.
+
+[ATX]: https://spec.commonmark.org/0.30/#atx-headings
+[Microsoft Writing Style Guide]: https://learn.microsoft.com/en-us/style-guide/welcome/
+[basic english]: https://simple.wikipedia.org/wiki/Basic_English
+[code examples]: #code-examples
+[code shortcode]: #code
+[code-toggle shortcode]: #code-toggle
+[documentation repository]: https://github.com/gohugoio/hugoDocs/
+[fenced code blocks]: https://spec.commonmark.org/0.30/#fenced-code-blocks
+[glossary of terms]: /getting-started/glossary/
+[indented code blocks]: https://spec.commonmark.org/0.30/#indented-code-blocks
+[issues]: https://github.com/gohugoio/hugoDocs/issues
+[list items]: https://spec.commonmark.org/0.30/#list-items
+[note shortcode]: #note
+[project repository]: https://github.com/gohugoio/hugo
+[raw HTML]: https://spec.commonmark.org/0.30/#raw-html
+[setext]: https://spec.commonmark.org/0.30/#setext-heading
--- /dev/null
- You can use `after` in combination with the [`first`] function and Hugo's [powerful sorting methods][lists]. Let's assume you have a list page at `example.com/articles`. You have 10 articles, but you want your templating for the [list/section page] to show only two rows:
+---
+title: collections.After
+description: Slices an array to the items after the Nth item.
+categories: []
+keywords: []
+action:
+ aliases: [after]
+ related:
+ - functions/collections/First
+ - functions/collections/Last
+ returnType: any
+ signatures: [collections.After INDEX COLLECTION]
+aliases: [/functions/after]
+---
+
+The following shows `after` being used in conjunction with the [`slice`]function:
+
+```go-html-template
+{{ $data := slice "one" "two" "three" "four" }}
+<ul>
+ {{ range after 2 $data }}
+ <li>{{ . }}</li>
+ {{ end }}
+</ul>
+```
+
+The template above is rendered to:
+
+```html
+<ul>
+ <li>three</li>
+ <li>four</li>
+</ul>
+```
+
+## Example of `after` with `first`: 2nd–4th most recent articles
+
- [list/section page]: /templates/section-templates/
- [lists]: /templates/lists/#sort-content
++You can use `after` in combination with the [`first`] function and Hugo's [powerful sorting methods](/quick-reference/page-collections/#sort). Let's assume you have a `section` page at `example.com/articles`. You have 10 articles, but you want your template to show only two rows:
+
+1. The top row is titled "Featured" and shows only the most recently published article (i.e. by `publishdate` in the content files' front matter).
+2. The second row is titled "Recent Articles" and shows only the 2nd- to 4th-most recently published articles.
+
+{{< code file=layouts/section/articles.html >}}
+{{ define "main" }}
+ <section class="row featured-article">
+ <h2>Featured Article</h2>
+ {{ range first 1 .Pages.ByPublishDate.Reverse }}
+ <header>
+ <h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
+ </header>
+ <p>{{ .Description }}</p>
+ {{ end }}
+ </section>
+ <div class="row recent-articles">
+ <h2>Recent Articles</h2>
+ {{ range first 3 (after 1 .Pages.ByPublishDate.Reverse) }}
+ <section class="recent-article">
+ <header>
+ <h3><a href="{{ .RelPermalink }}">{{ .Title }}</a></h3>
+ </header>
+ <p>{{ .Description }}</p>
+ </section>
+ {{ end }}
+ </div>
+{{ end }}
+{{< /code >}}
+
+[`first`]: /functions/collections/first/
+[`slice`]: /functions/collections/slice/
--- /dev/null
- The page group you get from `group` is of the same type you get from the built-in [group methods](/templates/lists#group-content) in Hugo. The above example can be [paginated](/templates/pagination/#list-paginator-pages).
+---
+title: collections.Group
+description: Groups the given page collection by the given key.
+categories: []
+keywords: []
+action:
+ aliases: [group]
+ related: []
+ returnType: any
+ signatures: [collections.Group KEY PAGES]
+aliases: [/functions/group]
+---
+
+```go-html-template
+{{ $new := .Site.RegularPages | first 10 | group "New" }}
+{{ $old := .Site.RegularPages | last 10 | group "Old" }}
+{{ $groups := slice $new $old }}
+{{ range $groups }}
+ <h3>{{ .Key }}{{/* Prints "New", "Old" */}}</h3>
+ <ul>
+ {{ range .Pages }}
+ <li>
+ <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
+ </li>
+ {{ end }}
+ </ul>
+{{ end }}
+```
+
++The page group you get from `group` is of the same type you get from the built-in [group methods](/quick-reference/page-collections/#group) in Hugo. The example above can be [paginated](/templates/pagination/).
--- /dev/null
-
- [partials]: /templates/partials/
- [single]: /templates/single-page-templates/
+---
+title: collections.Intersect
+description: Returns the common elements of two arrays or slices, in the same order as the first array.
+categories: []
+keywords: []
+action:
+ aliases: [intersect]
+ related:
+ - functions/collections/Complement
+ - functions/collections/SymDiff
+ - functions/collections/Union
+ returnType: any
+ signatures: [collections.Intersect SET1 SET2]
+aliases: [/functions/intersect]
+---
+
+A useful example is to use it as `AND` filters when combined with where:
+
+```go-html-template
+{{ $pages := where .Site.RegularPages "Type" "not in" (slice "page" "about") }}
+{{ $pages := $pages | union (where .Site.RegularPages "Params.pinned" true) }}
+{{ $pages := $pages | intersect (where .Site.RegularPages "Params.images" "!=" nil) }}
+```
+
+The above fetches regular pages not of `page` or `about` type unless they are pinned. And finally, we exclude all pages with no `images` set in Page parameters.
+
+See [union](/functions/collections/union) for `OR`.
--- /dev/null
- description: Returns the FNV (Fowler–Noll–Vo) 32-bit hash of a given string.
+---
+title: crypto.FNV32a
- aliases: [/functions/crypto.fnv32a]
++description: Returns the 32-bit FNV (Fowler–Noll–Vo) non-cryptographic hash of the given string.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
++ - functions/hash/Xxhash
+ - functions/crypto/HMAC
+ - functions/crypto/MD5
+ - functions/crypto/SHA1
+ - functions/crypto/SHA256
+ returnType: int
+ signatures: [crypto.FNV32a STRING]
- {{< new-in 0.98.0 >}}
++expiryDate: 2025-07-31 # deprecated 2024-07-31
+---
+
- This function calculates the 32-bit [FNV1a hash](https://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function#FNV-1a_hash) of a given string according to the [specification](https://datatracker.ietf.org/doc/html/draft-eastlake-fnv-12):
++{{% deprecated-in 0.129.0 %}}
++Use [`hash.FNV32a`] instead.
+
++[`hash.FNV32a`]: /functions/hash/FNV32a/
++{{% /deprecated-in %}}
+
+```go-html-template
+{{ crypto.FNV32a "Hello world" }} → 1498229191
+```
--- /dev/null
--- /dev/null
++---
++title: css.PostCSS
++description: Processes the given resource with PostCSS using any PostCSS plugin.
++categories: []
++keywords: []
++action:
++ aliases: [postCSS]
++ related:
++ - functions/css/Sass
++ - functions/css/TailwindCSS
++ returnType: resource.Resource
++ signatures: ['css.PostCSS [OPTIONS] RESOURCE']
++toc: true
++---
++
++{{< new-in 0.128.0 >}}
++
++```go-html-template
++{{ with resources.Get "css/main.css" | postCSS }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++{{ end }}
++```
++
++## Setup
++
++Follow the steps below to transform CSS using any of the available [PostCSS plugins].
++
++Step 1
++: Install [Node.js].
++
++Step 2
++: Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to your CSS rules:
++
++```sh
++npm i -D postcss postcss-cli autoprefixer
++```
++
++Step 3
++: Create a PostCSS configuration file in the root of your project. You must name this file `postcss.config.js` or another [supported file name]. For example:
++
++```js
++module.exports = {
++ plugins: [
++ require('autoprefixer')
++ ]
++};
++```
++
++{{% note %}}
++{{% include "functions/resources/_common/postcss-windows-warning.md" %}}
++{{% /note %}}
++
++Step 4
++: Place your CSS file within the `assets/css` directory.
++
++Step 5
++: Process the resource with PostCSS:
++
++```go-html-template
++{{ with resources.Get "css/main.css" | postCSS }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++{{ end }}
++```
++
++## Options
++
++The `css.PostCSS` method takes an optional map of options.
++
++config
++: (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory.
++
++noMap
++: (`bool`) Default is `false`. If `true`, disables inline sourcemaps.
++
++inlineImports
++: (`bool`) Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once. URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides.
++
++skipInlineImportsNotFound
++: (`bool`) Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
++
++```go-html-template
++{{ $opts := dict "config" "config-directory" "noMap" true }}
++{{ with resources.Get "css/main.css" | postCSS $opts }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++{{ end }}
++```
++
++## No configuration file
++
++To avoid using a PostCSS configuration file, you can specify a minimal configuration using the options map.
++
++use
++: (`string`) A space-delimited list of PostCSS plugins to use.
++
++parser
++: (`string`) A custom PostCSS parser.
++
++stringifier
++: (`string`) A custom PostCSS stringifier.
++
++syntax
++: (`string`) Custom postcss syntax.
++
++```go-html-template
++{{ $opts := dict "use" "autoprefixer postcss-color-alpha" }}
++{{ with resources.Get "css/main.css" | postCSS $opts }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++{{ end }}
++```
++
++## Check environment
++
++The current Hugo environment name (set by `--environment` or in configuration or OS environment) is available in the Node context, which allows constructs like this:
++
++```js
++const autoprefixer = require('autoprefixer');
++const purgecss = require('@fullhuman/postcss-purgecss');
++module.exports = {
++ plugins: [
++ autoprefixer,
++ process.env.HUGO_ENVIRONMENT !== 'development' ? purgecss : null
++ ]
++}
++```
++
++[node.js]: https://nodejs.org/en/download
++[postcss plugins]: https://www.postcss.parts/
++[supported file name]: https://github.com/postcss/postcss-load-config#usage
++[transpile to CSS]: /functions/css/sass/
--- /dev/null
--- /dev/null
++---
++title: css.Sass
++description: Transpiles Sass to CSS.
++categories: []
++keywords: []
++action:
++ aliases: [toCSS]
++ related:
++ - functions/resources/Fingerprint
++ - functions/resources/Minify
++ - functions/css/PostCSS
++ - functions/resources/PostProcess
++ returnType: resource.Resource
++ signatures: ['css.Sass [OPTIONS] RESOURCE']
++toc: true
++---
++
++{{< new-in 0.128.0 >}}
++
++```go-html-template
++{{ with resources.Get "sass/main.scss" }}
++ {{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
++ {{ with . | toCSS $opts }}
++ {{ if hugo.IsDevelopment }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++ {{ else }}
++ {{ with . | minify | fingerprint }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
++ {{ end }}
++ {{ end }}
++ {{ end }}
++{{ end }}
++```
++
++Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended edition, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language.
++
++Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both.
++
++[scss]: https://sass-lang.com/documentation/syntax#scss
++[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
++
++## Options
++
++transpiler
++: (`string`) The transpiler to use, either `libsass` (default) or `dartsass`. Hugo's extended edition includes the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass) below.
++
++targetPath
++: (`string`) If not set, the transformed resource's target path will be the original path of the asset file with its extension replaced by `.css`.
++
++vars
++: (`map`) A map of key-value pairs that will be available in the `hugo:vars` namespace. Useful for [initializing Sass variables from Hugo templates](https://discourse.gohugo.io/t/42053/).
++
++```scss
++// LibSass
++@import "hugo:vars";
++
++// Dart Sass
++@use "hugo:vars" as v;
++```
++
++outputStyle
++: (`string`) Output styles available to LibSass include `nested` (default), `expanded`, `compact`, and `compressed`. Output styles available to Dart Sass include `expanded` (default) and `compressed`.
++
++precision
++: (`int`) Precision of floating point math. Not applicable to Dart Sass.
++
++enableSourceMap
++: (`bool`) If `true`, generates a source map.
++
++sourceMapIncludeSources
++: (`bool`) If `true`, embeds sources in the generated source map. Not applicable to LibSass.
++
++includePaths
++: (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements.
++
++```go-html-template
++{{ $opts := dict
++ "transpiler" "dartsass"
++ "targetPath" "css/style.css"
++ "vars" site.Params.styles
++ "enableSourceMap" (not hugo.IsProduction)
++ "includePaths" (slice "node_modules/bootstrap/scss")
++}}
++{{ with resources.Get "sass/main.scss" | toCSS $opts | minify | fingerprint }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
++{{ end }}
++```
++
++## Dart Sass
++
++The extended version of Hugo includes [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
++
++Use the latest features of the Sass language by installing Dart Sass in your development and production environments.
++
++### Installation overview
++
++Dart Sass is compatible with Hugo v0.114.0 and later.
++
++If you have been using Embedded Dart Sass[^1] with Hugo v0.113.0 and earlier, uninstall Embedded Dart Sass, then install Dart Sass. If you have installed both, Hugo will use Dart Sass.
++
++If you install Hugo as a [Snap package] there is no need to install Dart Sass. The Hugo Snap package includes Dart Sass.
++
++[^1]: In 2023, the Sass team deprecated Embedded Dart Sass in favor of Dart Sass.
++
++### Installing in a development environment
++
++When you install Dart Sass somewhere in your PATH, Hugo will find it.
++
++OS|Package manager|Site|Installation
++:--|:--|:--|:--
++Linux|Homebrew|[brew.sh]|`brew install sass/sass/sass`
++Linux|Snap|[snapcraft.io]|`sudo snap install dart-sass`
++macOS|Homebrew|[brew.sh]|`brew install sass/sass/sass`
++Windows|Chocolatey|[chocolatey.org]|`choco install sass`
++Windows|Scoop|[scoop.sh]|`scoop install sass`
++
++You may also install [prebuilt binaries] for Linux, macOS, and Windows.
++
++Run `hugo env` to list the active transpilers.
++
++### Installing in a production environment
++
++For [CI/CD] deployments (e.g., GitHub Pages, GitLab Pages, Netlify, etc.) you must edit the workflow to install Dart Sass before Hugo builds the site[^2]. Some providers allow you to use one of the package managers above, or you can download and extract one of the prebuilt binaries.
++
++[^2]: You do not have to do this if (a) you have not modified the assets cache location, and (b) you have not set `useResourceCacheWhen` to `never` in your [site configuration], and (c) you add and commit your resources directory to your repository.
++
++#### GitHub Pages
++
++To install Dart Sass for your builds on GitHub Pages, add this step to the GitHub Pages workflow file:
++
++```yaml
++- name: Install Dart Sass
++ run: sudo snap install dart-sass
++```
++
++If you are using GitHub Pages for the first time with your repository, GitHub provides a [starter workflow] for Hugo that includes Dart Sass. This is the simplest way to get started.
++
++#### GitLab Pages
++
++To install Dart Sass for your builds on GitLab Pages, the `.gitlab-ci.yml` file should look something like this:
++
++```yaml
++variables:
++ HUGO_VERSION: 0.128.0
++ DART_SASS_VERSION: 1.77.5
++ GIT_DEPTH: 0
++ GIT_STRATEGY: clone
++ GIT_SUBMODULE_STRATEGY: recursive
++ TZ: America/Los_Angeles
++image:
++ name: golang:1.20-buster
++pages:
++ script:
++ # Install Dart Sass
++ - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
++ - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
++ - cp -r dart-sass/* /usr/local/bin
++ - rm -rf dart-sass*
++ # Install Hugo
++ - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
++ - apt install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
++ - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
++ # Build
++ - hugo --gc --minify
++ artifacts:
++ paths:
++ - public
++ rules:
++ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
++```
++
++#### Netlify
++
++To install Dart Sass for your builds on Netlify, the `netlify.toml` file should look something like this:
++
++```toml
++[build.environment]
++HUGO_VERSION = "0.128.0"
++DART_SASS_VERSION = "1.77.5"
++TZ = "America/Los_Angeles"
++
++[build]
++publish = "public"
++command = """\
++ curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
++ tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
++ rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
++ export PATH=/opt/build/repo/dart-sass:$PATH && \
++ hugo --gc --minify \
++ """
++```
++
++### Example
++
++To transpile with Dart Sass, set `transpiler` to `dartsass` in the options map passed to `css.Sass`. For example:
++
++```go-html-template
++{{ with resources.Get "sass/main.scss" }}
++ {{ $opts := dict "transpiler" "dartsass" "targetPath" "css/style.css" }}
++ {{ with . | toCSS $opts }}
++ {{ if hugo.IsDevelopment }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++ {{ else }}
++ {{ with . | minify | fingerprint }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
++ {{ end }}
++ {{ end }}
++ {{ end }}
++{{ end }}
++```
++
++### Miscellaneous
++
++If you build Hugo from source and run `mage test -v`, the test will fail if you install Dart Sass as a Snap package. This is due to the Snap package's strict confinement model.
++
++[brew.sh]: https://brew.sh/
++[chocolatey.org]: https://community.chocolatey.org/packages/sass
++[ci/cd]: https://en.wikipedia.org/wiki/CI/CD
++[dart sass]: https://sass-lang.com/dart-sass
++[libsass]: https://sass-lang.com/libsass
++[prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
++[scoop.sh]: https://scoop.sh/#/apps?q=sass
++[site configuration]: /getting-started/configuration/#configure-build
++[snap package]: /installation/linux/#snap
++[snapcraft.io]: https://snapcraft.io/dart-sass
++[starter workflow]: https://github.com/actions/starter-workflows/blob/main/pages/hugo.yml
--- /dev/null
--- /dev/null
++---
++title: css.TailwindCSS
++description: Processes the given resource with the Tailwind CSS CLI.
++categories: []
++keywords: []
++action:
++ aliases: []
++ related:
++ - functions/resources/Fingerprint
++ - functions/resources/Minify
++ - functions/css/PostCSS
++ returnType: resource.Resource
++ signatures: ['css.TailwindCSS [OPTIONS] RESOURCE']
++toc: true
++---
++
++{{< new-in 0.128.0 >}}
++
++<!-- TODO remove this admonition when feature is stable. -->
++
++{{% note %}}
++This is an experimental feature pending the release of TailwindCSS v4.0.
++
++The functionality, configuration requirements, and documentation are subject to change at any time and may be not compatible with prior releases.
++{{% /note %}}
++
++## Prerequisites
++
++To use this function you must install the Tailwind CSS CLI v4.0 or later. You may install the CLI as an npm package or as a standalone executable. See the [Tailwind CSS documentation] for details.
++
++[Tailwind CSS documentation]: https://tailwindcss.com/docs/installation
++
++{{% note %}}
++Use npm to install the CLI prior to the v4.0 release of Tailwind CSS.
++
++`npm install --save-dev tailwindcss@next @tailwindcss/cli@next`
++{{% /note %}}
++
++## Options
++
++minify
++: (`bool`) Whether to optimize and minify the output. Default is `false`.
++
++optimize
++: (`bool`) Whether to optimize the output without minifying. Default is `false`.
++
++inlineImports
++: (`bool`) Whether to enable inlining of `@import` statements. Inlining is performed recursively, but currently once only per file. It is not possible to import the same file in different scopes (root, media query, etc.). Note that this import routine does not care about the CSS specification, so you can have `@import` statements anywhere in the file. Default is `false`.
++
++skipInlineImportsNotFound
++: (`bool`) When `inlineImports` is enabled, we fail the build if an import cannot be resolved. Enable this option to allow the build to continue and leave the import statement in place. Note that the inline importer does not process URL location or imports with media queries, so those will be left as-is even without enabling this option. Default is `false`.
++
++## Example
++
++Define a [cache buster] in your site configuration:
++
++[cache buster]: /getting-started/configuration/#configure-cache-busters
++
++{{< code-toggle file=hugo >}}
++[[build.cachebusters]]
++source = 'layouts/.*'
++target = 'css'
++{{< /code-toggle >}}
++
++Process the resource:
++
++```go-html-template
++{{ with resources.Get "css/main.css" }}
++ {{ $opts := dict "minify" true }}
++ {{ with . | css.TailwindCSS $opts }}
++ {{ if hugo.IsDevelopment }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}">
++ {{ else }}
++ {{ with . | fingerprint }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
++ {{ end }}
++ {{ end }}
++ {{ end }}
++{{ end }}
++```
++
++The example above publishes the minified CSS file to public/css/main.css.
++
++See [this repository] for more information about the integration with Tailwind CSS v4.0.
++
++[this repository]: https://github.com/bep/hugo-testing-tailwindcss-v4
--- /dev/null
--- /dev/null
++---
++title: CSS functions
++linkTitle: css
++description: Template functions to work with CSS and Sass files.
++categories: []
++keywords: []
++menu:
++ docs:
++ parent: functions
++---
++
++Use these functions to work with CSS and Sass files.
--- /dev/null
+---
+title: data.GetCSV
+description: Returns an array of arrays from a local or remote CSV file, or an error if the file does not exist.
+categories: []
+keywords: []
+action:
+ aliases: [getCSV]
+ related:
+ - functions/data/GetJSON
+ - functions/resources/Get
+ - functions/resources/GetRemote
+ - methods/page/Resources
+ returnType: '[][]string'
+ signatures: ['data.GetCSV SEPARATOR INPUT... [OPTIONS]']
+toc: true
++expiryDate: 2025-02-19 # deprecated 2024-02-19
+---
+
+{{% deprecated-in 0.123.0 %}}
+Instead, use [`transform.Unmarshal`] with a [global], [page], or [remote] resource.
+
+See the [remote data example].
+
+[`transform.Unmarshal`]: /functions/transform/unmarshal/
+[global]: /getting-started/glossary/#global-resource
+[page]: /getting-started/glossary/#page-resource
+[remote data example]: /functions/resources/getremote/#remote-data
+[remote]: /getting-started/glossary/#remote-resource
+{{% /deprecated-in %}}
+
+Given the following directory structure:
+
+```text
+my-project/
+└── other-files/
+ └── pets.csv
+```
+
+Access the data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "other-files/pets.csv" }}
+{{ $data := getCSV "," "other-files/" "pets.csv" }}
+```
+
+{{% note %}}
+When working with local data, the file path is relative to the working directory.
+
+You must not place CSV files in the project's data directory.
+{{% /note %}}
+
+Access remote data with either of the following:
+
+```go-html-template
+{{ $data := getCSV "," "https://example.org/pets.csv" }}
+{{ $data := getCSV "," "https://example.org/" "pets.csv" }}
+```
+
+The resulting data structure is an array of arrays:
+
+```json
+[
+ ["name","type","breed","age"],
+ ["Spot","dog","Collie","3"],
+ ["Felix","cat","Malicious","7"]
+]
+```
+
+## Options
+
+Add headers to the request by providing an options map:
+
+```go-html-template
+{{ $opts := dict "Authorization" "Bearer abcd" }}
+{{ $data := getCSV "," "https://example.org/pets.csv" $opts }}
+```
+
+Add multiple headers using a slice:
+
+```go-html-template
+{{ $opts := dict "X-List" (slice "a" "b" "c") }}
+{{ $data := getCSV "," "https://example.org/pets.csv" $opts }}
+```
+
+## Global resource alternative
+
+Consider using the [`resources.Get`] function with [`transform.Unmarshal`] when accessing a global resource.
+
+```text
+my-project/
+└── assets/
+ └── data/
+ └── pets.csv
+```
+
+```go-html-template
+{{ $data := dict }}
+{{ $p := "data/pets.csv" }}
+{{ with resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Page resource alternative
+
+Consider using the [`Resources.Get`] method with [`transform.Unmarshal`] when accessing a page resource.
+
+```text
+my-project/
+└── content/
+ └── posts/
+ └── my-pets/
+ ├── index.md
+ └── pets.csv
+```
+
+```go-html-template
+{{ $data := dict }}
+{{ $p := "pets.csv" }}
+{{ with .Resources.Get $p }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Remote resource alternative
+
+Consider using the [`resources.GetRemote`] function with [`transform.Unmarshal`] when accessing a remote resource to improve error handling and cache control.
+
+```go-html-template
+{{ $data := dict }}
+{{ $u := "https://example.org/pets.csv" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ {{ $opts := dict "delimiter" "," }}
+ {{ $data = . | transform.Unmarshal $opts }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
+
+[`Resources.Get`]: /methods/page/resources/
+[`resources.GetRemote`]: /functions/resources/getremote/
+[`resources.Get`]: /functions/resources/get/
+[`transform.Unmarshal`]: /functions/transform/unmarshal/
--- /dev/null
+---
+title: data.GetJSON
+description: Returns a JSON object from a local or remote JSON file, or an error if the file does not exist.
+categories: []
+keywords: []
+action:
+ aliases: [getJSON]
+ related:
+ - functions/data/GetCSV
+ - functions/resources/Get
+ - functions/resources/GetRemote
+ - methods/page/Resources
+ returnType: any
+ signatures: ['data.GetJSON INPUT... [OPTIONS]']
+toc: true
++expiryDate: 2025-02-19 # deprecated 2024-02-19
+---
+
+{{% deprecated-in 0.123.0 %}}
+Instead, use [`transform.Unmarshal`] with a [global], [page], or [remote] resource.
+
+See the [remote data example].
+
+[`transform.Unmarshal`]: /functions/transform/unmarshal/
+[global]: /getting-started/glossary/#global-resource
+[page]: /getting-started/glossary/#page-resource
+[remote data example]: /functions/resources/getremote/#remote-data
+[remote]: /getting-started/glossary/#remote-resource
+{{% /deprecated-in %}}
+
+Given the following directory structure:
+
+```text
+my-project/
+└── other-files/
+ └── books.json
+```
+
+Access the data with either of the following:
+
+```go-html-template
+{{ $data := getJSON "other-files/books.json" }}
+{{ $data := getJSON "other-files/" "books.json" }}
+```
+
+{{% note %}}
+When working with local data, the file path is relative to the working directory.
+{{% /note %}}
+
+Access remote data with either of the following:
+
+```go-html-template
+{{ $data := getJSON "https://example.org/books.json" }}
+{{ $data := getJSON "https://example.org/" "books.json" }}
+```
+
+The resulting data structure is a JSON object:
+
+```json
+[
+ {
+ "author": "Victor Hugo",
+ "rating": 5,
+ "title": "Les Misérables"
+ },
+ {
+ "author": "Victor Hugo",
+ "rating": 4,
+ "title": "The Hunchback of Notre Dame"
+ }
+]
+```
+
+## Options
+
+Add headers to the request by providing an options map:
+
+```go-html-template
+{{ $opts := dict "Authorization" "Bearer abcd" }}
+{{ $data := getJSON "https://example.org/books.json" $opts }}
+```
+
+Add multiple headers using a slice:
+
+```go-html-template
+{{ $opts := dict "X-List" (slice "a" "b" "c") }}
+{{ $data := getJSON "https://example.org/books.json" $opts }}
+```
+
+## Global resource alternative
+
+Consider using the [`resources.Get`] function with [`transform.Unmarshal`] when accessing a global resource.
+
+```text
+my-project/
+└── assets/
+ └── data/
+ └── books.json
+```
+
+```go-html-template
+{{ $data := dict }}
+{{ $p := "data/books.json" }}
+{{ with resources.Get $p }}
+ {{ $data = . | transform.Unmarshal }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Page resource alternative
+
+Consider using the [`Resources.Get`] method with [`transform.Unmarshal`] when accessing a page resource.
+
+```text
+my-project/
+└── content/
+ └── posts/
+ └── reading-list/
+ ├── books.json
+ └── index.md
+```
+
+```go-html-template
+{{ $data := dict }}
+{{ $p := "books.json" }}
+{{ with .Resources.Get $p }}
+ {{ $data = . | transform.Unmarshal }}
+{{ else }}
+ {{ errorf "Unable to get resource %q" $p }}
+{{ end }}
+```
+
+## Remote resource alternative
+
+Consider using the [`resources.GetRemote`] function with [`transform.Unmarshal`] when accessing a remote resource to improve error handling and cache control.
+
+```go-html-template
+{{ $data := dict }}
+{{ $u := "https://example.org/books.json" }}
+{{ with resources.GetRemote $u }}
+ {{ with .Err }}
+ {{ errorf "%s" . }}
+ {{ else }}
+ {{ $data = . | transform.Unmarshal }}
+ {{ end }}
+{{ else }}
+ {{ errorf "Unable to get remote resource %q" $u }}
+{{ end }}
+```
+
+[`Resources.Get`]: /methods/page/resources/
+[`resources.GetRemote`]: /functions/resources/getremote/
+[`resources.Get`]: /functions/resources/get/
+[`transform.Unmarshal`]: /functions/transform/unmarshal/
--- /dev/null
- And this code in the home page template:
+---
+title: page
+description: Provides global access to a Page object.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/global/site
+ returnType:
+ signatures: [page]
+toc: true
+aliases: [/functions/page]
+---
+
+{{< new-in 0.111.0 >}}
+
+At the top level of a template that receives a `Page` object in context, these are equivalent:
+
+```go-html-template
+{{ .Params.foo }}
+{{ .Page.Params.foo }}
+{{ page.Params.foo }}
+```
+
+When a `Page` object is not in context, you can use the global `page` function:
+
+```go-html-template
+{{ page.Params.foo }}
+```
+
+{{% note %}}
+Do not use the global `page` function in shortcodes, partials called by shortcodes, or cached partials. See [warnings](#warnings) below.
+{{% /note %}}
+
+## Explanation
+
+Hugo almost always passes a `Page` as the data context into the top level template (e.g., `single.html`). The one exception is the multihost sitemap template. This means that you can access the current page with the `.` in the template.
+
+But when you are deeply nested inside of a [content view], [partial], or [render hook], it is not always practical or possible to access the `Page` object.
+
+Use the global `page` function to access the `Page` object from anywhere in any template.
+
+## Warnings
+
+### Be aware of top-level context
+
+The global `page` function accesses the `Page` object passed into the top-level template.
+
+With this content structure:
+
+```text
+content/
+├── posts/
+│ ├── post-1.md
+│ ├── post-2.md
+│ └── post-3.md
+└── _index.md <-- title is "My Home Page"
+```
+
- In the example above, the global `page` function accesses the `Page` object passed into the home page template; it does not access the `Page` object of the iterated pages.
++And this code in the home template:
+
+```go-html-template
+{{ range site.Sections }}
+ {{ range .Pages }}
+ {{ page.Title }}
+ {{ end }}
+{{ end }}
+```
+
+The rendered output will be:
+
+```text
+My Home Page
+My Home Page
+My Home Page
+```
+
++In the example above, the global `page` function accesses the `Page` object passed into the home template; it does not access the `Page` object of the iterated pages.
+
+### Be aware of caching
+
+Do not use the global `page` function in:
+
+- Shortcodes
+- Partials called by shortcodes
+- Partials cached by the [`partialCached`] function
+
+Hugo caches rendered shortcodes. If you use the global `page` function within a shortcode, and the page content is rendered in two or more templates, the cached shortcode may be incorrect.
+
+Consider this section template:
+
+```go-html-template
+{{ range .Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+ {{ .Summary }}
+{{ end }}
+```
+
+When you call the [`Summary`] method, Hugo renders the page content including shortcodes. In this case, within a shortcode, the global `page` function accesses the `Page` object of the section page, not the content page.
+
+If Hugo renders the section page before a content page, the cached rendered shortcode will be incorrect. You cannot control the rendering sequence due to concurrency.
+
+[`Summary`]: /methods/page/summary/
+[`partialCached`]: /functions/partials/includecached/
+[content view]: /getting-started/glossary/#content-view
+[partial]: /getting-started/glossary/#partial
+[render hook]: /getting-started/glossary/#render-hook
+[shortcode]: getting-started/glossary/#shortcode
--- /dev/null
- [partial templates]: /templates/partials/#returning-a-value-from-a-partial
+---
+title: return
+description: Used within partial templates, terminates template execution and returns the given value, if any.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/partials/Include
+ - functions/partials/IncludeCached
+ returnType: any
+ signatures: ['return [VALUE]']
+toc: true
+---
+
+The `return` statement is a custom addition to Go's [text/template] package. Used within partial templates, the `return` statement terminates template execution and returns the given value, if any.
+
+The returned value may be of any data type including, but not limited to, [`bool`], [`float`], [`int`], [`map`], [`resource`], [`slice`], and [`string`].
+
+A `return` statement without a value returns an empty string of type `template.HTML`.
+
+[`bool`]: /getting-started/glossary/#bool
+[`float`]: /getting-started/glossary/#float
+[`int`]: /getting-started/glossary/#int
+[`map`]: /getting-started/glossary/#map
+[`resource`]: /getting-started/glossary/#resource
+[`slice`]: /getting-started/glossary/#slice
+[`string`]: /getting-started/glossary/#string
+[text/template]: https://pkg.go.dev/text/template
+
+{{% note %}}
+Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks. See [usage](#usage) notes below.
+{{% /note %}}
+
+## Example
+
+By way of example, let's create a partial template that _renders_ HTML, describing whether the given number is odd or even:
+
+{{< code file="layouts/partials/odd-or-even.html" >}}
+{{ if math.ModBool . 2 }}
+ <p>{{ . }} is even</p>
+{{ else }}
+ <p>{{ . }} is odd</p>
+{{ end }}
+{{< /code >}}
+
+When called, the partial renders HTML:
+
+```go-html-template
+{{ partial "odd-or-even.html" 42 }} → <p>42 is even</p>
+```
+
+Instead of rendering HTML, let's create a partial that _returns_ a boolean value, reporting whether the given number is even:
+
+{{< code file="layouts/partials/is-even.html" >}}
+{{ return math.ModBool . 2 }}
+{{< /code >}}
+
+With this template:
+
+```go-html-template
+{{ $number := 42 }}
+{{ if partial "is-even.html" $number }}
+ <p>{{ $number }} is even</p>
+{{ else }}
+ <p>{{ $number }} is odd</p>
+{{ end }}
+```
+
+Hugo renders:
+
+```html
+<p>42 is even</p>
+```
+
+See additional examples in the [partial templates] section.
+
++[partial templates]: /templates/partial/#returning-a-value-from-a-partial
+
+## Usage
+
+{{% note %}}
+Unlike `return` statements in other languages, Hugo executes the first occurrence of the `return` statement regardless of its position within logical blocks.
+{{% /note %}}
+
+A partial that returns a value must contain only one `return` statement, placed at the end of the template.
+
+For example:
+
+{{< code file="layouts/partials/is-even.html" >}}
+{{ $result := false }}
+{{ if math.ModBool . 2 }}
+ {{ $result = "even" }}
+{{ else }}
+ {{ $result = "odd" }}
+{{ end }}
+{{ return $result }}
+{{< /code >}}
+
+{{% note %}}
+The construct below is incorrect; it contains more than one `return` statement.
+{{% /note %}}
+
+{{< code file="layouts/partials/do-not-do-this.html" >}}
+{{ if math.ModBool . 2 }}
+ {{ return "even" }}
+{{ else }}
+ {{ return "odd" }}
+{{ end }}
+{{< /code >}}
--- /dev/null
- [inline partial]: /templates/partials/#inline-partials
+---
+title: template
+description: Executes the given template, optionally passing context.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/go-template/define
+ - functions/partials/Include
+ - functions/partials/IncludeCached
+ returnType:
+ signatures: ['template NAME [CONTEXT]']
+---
+
+Use the `template` function to execute [embedded templates]. For example:
+
+```go-html-template
+{{ range (.Paginate .Pages).Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{ template "_internal/pagination.html" . }}
+```
+
+You can also use the `template` function to execute a defined template:
+
+```go-html-template
+{{ template "foo" (dict "answer" 42) }}
+
+{{ define "foo" }}
+ {{ printf "The answer is %v." .answer }}
+{{ end }}
+```
+
+The example above can be rewritten using an [inline partial] template:
+
+```go-html-template
+{{ partial "inline/foo.html" (dict "answer" 42) }}
+
+{{ define "partials/inline/foo.html" }}
+ {{ printf "The answer is %v." .answer }}
+{{ end }}
+```
+
+{{% include "functions/go-template/_common/text-template.md" %}}
+
+[`partial`]: /functions/partials/include/
++[inline partial]: /templates/partial/#inline-partials
+[embedded templates]: /templates/embedded/
--- /dev/null
--- /dev/null
++---
++title: hash.FNV32a
++description: Returns the 32-bit FNV (Fowler–Noll–Vo) non-cryptographic hash of the given string.
++categories: []
++keywords: []
++action:
++ aliases: []
++ related:
++ - functions/hash/Xxhash
++ - functions/crypto/HMAC
++ - functions/crypto/MD5
++ - functions/crypto/SHA1
++ - functions/crypto/SHA256
++ returnType: int
++ signatures: [hash.FNV32a STRING]
++aliases: [/functions/crypto.fnv32a]
++---
++
++```go-html-template
++{{ hash.FNV32a "Hello world" }} → 1498229191
++```
--- /dev/null
--- /dev/null
++---
++title: hash.XxHash
++description: Returns the 64-bit xxHash non-cryptographic hash of the given string.
++categories: []
++keywords: []
++action:
++ aliases: [xxhash]
++ related:
++ - functions/hash/FNV32a
++ - functions/crypto/HMAC
++ - functions/crypto/MD5
++ - functions/crypto/SHA1
++ - functions/crypto/SHA256
++ returnType: string
++ signatures: [hash.XxHash STRING]
++---
++
++```go-html-template
++{{ hash.XxHash "Hello world" }} → c500b0c912b376d8
++```
--- /dev/null
--- /dev/null
++---
++title: Hash functions
++linkTitle: hash
++description: Template functions to create non-cryptographic hashes.
++categories: []
++keywords: []
++menu:
++ docs:
++ parent: functions
++---
++
++Use these functions to create non-cryptographic hashes.
--- /dev/null
- {{ hugo.Generator }} → <meta name="generator" content="Hugo 0.126.0">
+---
+title: hugo.Generator
+description: Renders an HTML meta element identifying the software that generated the site.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related: []
+ returnType: template.HTML
+ signatures: [hugo.Generator]
+---
+
+```go-html-template
++{{ hugo.Generator }} → <meta name="generator" content="Hugo 0.128.0">
+```
--- /dev/null
- {{< new-in 0.101.0 >}}
-
+---
+title: hugo.GoVersion
+description: Returns the Go version used to compile the Hugo binary
+categories: []
+keywords: []
+action:
+ aliases: []
+ related: []
+ returnType: string
+ signatures: [hugo.GoVersion]
+---
+
+```go-html-template
+{{ hugo.GoVersion }} → go1.21.1
+```
--- /dev/null
- {{ hugo.Version }} → 0.126.0
+---
+title: hugo.Version
+description: Returns the current version of the Hugo binary.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related: []
+ returnType: hugo.VersionString
+ signatures: [hugo.Version]
+---
+
+```go-html-template
++{{ hugo.Version }} → 0.128.0
+```
--- /dev/null
--- /dev/null
++---
++title: js.Babel
++description: Compiles the given JavaScript resource with Babel.
++categories: []
++keywords: []
++action:
++ aliases: [babel]
++ related:
++ - functions/js/Build
++ - functions/resources/Fingerprint
++ - functions/resources/Minify
++ returnType: resource.Resource
++ signatures: ['js.Babel [OPTIONS] RESOURCE']
++toc: true
++---
++
++{{< new-in 0.128.0 >}}
++
++```go-html-template
++{{ with resources.Get "js/main.js" }}
++ {{ if hugo.IsDevelopment }}
++ {{ with . | babel }}
++ <script src="{{ .RelPermalink }}"></script>
++ {{ end }}
++ {{ else }}
++ {{ $opts := dict "minified" true }}
++ {{ with . | babel $opts | fingerprint }}
++ <script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
++ {{ end }}
++ {{ end }}
++{{ end }}
++```
++
++## Setup
++
++Step 1
++: Install [Node.js](https://nodejs.org/en/download)
++
++Step 2
++: Install the required Node.js packages in the root of your project.
++
++```sh
++npm install --save-dev @babel/core @babel/cli
++```
++
++Step 3
++: Add the babel executable to Hugo's `security.exec.allow` list in your site configuration:
++
++{{< code-toggle file=hugo >}}
++[security.exec]
++ allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^npx$', '^postcss$', '^babel$']
++{{< /code-toggle >}}
++
++## Configuration
++
++We add the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.:
++
++```js
++module.exports = {
++ presets: [
++ [
++ require("@babel/preset-env"),
++ {
++ useBuiltIns: "entry",
++ corejs: 3,
++ },
++ ],
++ ],
++};
++```
++
++## Options
++
++config
++: (`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` in your project. More information on these configuration files can be found here: [babel configuration](https://babeljs.io/docs/en/configuration).
++
++minified
++: (`bool`) Save as many bytes as possible when printing
++
++noComments
++: (`bool`) Write comments to generated output (true by default)
++
++compact
++: (`bool`) Do not include superfluous whitespace characters and line terminators. Defaults to `auto` if not set.
++
++verbose
++: (`bool`) Log everything
++
++sourceMap
++: (`string`) Output `inline` or `external` sourcemap from the babel compile. External sourcemaps will be written to the target with the output file name + ".map". Input sourcemaps can be read from js.Build and node modules and combined into the output sourcemaps.
--- /dev/null
- - functions/resources/Babel
+---
+title: js.Build
+description: Bundles, transpiles, tree shakes, and minifies JavaScript resources.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
- import * as React from 'react'
- import * as ReactDOM from 'react-dom';
++ - functions/js/Babel
+ - functions/resources/Fingerprint
+ - functions/resources/Minify
+ returnType: resource.Resource
+ signatures: ['js.Build [OPTIONS] RESOURCE']
+toc: true
+---
+
+The `js.Build` function uses the [evanw/esbuild] package to:
+
+- Bundle
+- Transpile (TypeScript and JSX)
+- Tree shake
+- Minify
+- Create source maps
+
+[evanw/esbuild]: https://github.com/evanw/esbuild
+
+```go-html-template
+{{ with resources.Get "js/main.js" }}
+ {{ if hugo.IsDevelopment }}
+ {{ with . | js.Build }}
+ <script src="{{ .RelPermalink }}"></script>
+ {{ end }}
+ {{ else }}
+ {{ $opts := dict "minify" true }}
+ {{ with . | js.Build $opts | fingerprint }}
+ <script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+## Options
+
+targetPath
+: (`string`) If not set, the source path will be used as the base target path.
+Note that the target path's extension may change if the target MIME type is different, e.g. when the source is TypeScript.
+
+params
+: (`map` or `slice`) Params that can be imported as JSON in your JS files, e.g.
+
+```go-html-template
+{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
+```
+And then in your JS file:
+
+```js
+import * as params from '@params';
+```
+
+Note that this is meant for small data sets, e.g. configuration settings. For larger data, please put/mount the files into `/assets` and import them directly.
+
+minify
+: (`bool`)Let `js.Build` handle the minification.
+
+inject
+: (`slice`) This option allows you to automatically replace a global variable with an import from another file. The path names must be relative to `assets`. See https://esbuild.github.io/api/#inject
+
+shims
+: (`map`) This option allows swapping out a component with another. A common use case is to load dependencies like React from a CDN (with _shims_) when in production, but running with the full bundled `node_modules` dependency during development:
+
+```go-html-template
+{{ $shims := dict "react" "js/shims/react.js" "react-dom" "js/shims/react-dom.js" }}
+{{ $js = $js | js.Build dict "shims" $shims }}
+```
+
+The _shim_ files may look like these:
+
+```js
+// js/shims/react.js
+module.exports = window.React;
+```
+
+```js
+// js/shims/react-dom.js
+module.exports = window.ReactDOM;
+```
+
+With the above, these imports should work in both scenarios:
+
+```js
++import * as React from 'react';
++import * as ReactDOM from 'react-dom/client';
+```
+
+target
+: (`string`) The language target. One of: `es5`, `es2015`, `es2016`, `es2017`, `es2018`, `es2019`, `es2020` or `esnext`. Default is `esnext`.
+
+externals
+: (`slice`) External dependencies. Use this to trim dependencies you know will never be executed. See https://esbuild.github.io/api/#external
+
+defines
+: (`map`) Allow to define a set of string replacement to be performed when building. Should be a map where each key is to be replaced by its value.
+
+```go-html-template
+{{ $defines := dict "process.env.NODE_ENV" `"development"` }}
+```
+
+format
+: (`string`) The output format. One of: `iife`, `cjs`, `esm`. Default is `iife`, a self-executing function, suitable for inclusion as a `<script>` tag.
+
+sourceMap
+: (`string`) Whether to generate `inline` or `external` source maps from esbuild. External source maps will be written to the target with the output file name + ".map". Input source maps can be read from js.Build and node modules and combined into the output source maps. By default, source maps are not created.
+
+JSX {{< new-in 0.124.0 >}}
+: (`string`) How to handle/transform JSX syntax. One of: `transform`, `preserve`, `automatic`. Default is `transform`. Notably, the `automatic` transform was introduced in React 17+ and will cause the necessary JSX helper functions to be imported automatically. See https://esbuild.github.io/api/#jsx
+
+JSXImportSource {{< new-in 0.124.0 >}}
+: (`string`) Which library to use to automatically import its JSX helper functions from. This only works if `JSX` is set to `automatic`. The specified library needs to be installed through npm and expose certain exports. See https://esbuild.github.io/api/#jsx-import-source
+
+The combination of `JSX` and `JSXImportSource` is helpful if you want to use a non-React JSX library like Preact, e.g.:
+
+```go-html-template
+{{ $js := resources.Get "js/main.jsx" | js.Build (dict "JSX" "automatic" "JSXImportSource" "preact") }}
+```
+
+With the above, you can use Preact components and JSX without having to manually import `h` and `Fragment` every time:
+
+```jsx
+import { render } from 'preact';
+
+const App = () => <>Hello world!</>;
+
+const container = document.getElementById('app');
+if (container) render(<App />, container);
+```
+
+### Import JS code from /assets
+
+`js.Build` has full support for the virtual union file system in [Hugo Modules](/hugo-modules/). You can see some simple examples in this [test project](https://github.com/gohugoio/hugoTestProjectJSModImports), but in short this means that you can do this:
+
+```js
+import { hello } from 'my/module';
+```
+
+And it will resolve to the top-most `index.{js,ts,tsx,jsx}` inside `assets/my/module` in the layered file system.
+
+```js
+import { hello3 } from 'my/module/hello3';
+```
+
+Will resolve to `hello3.{js,ts,tsx,jsx}` inside `assets/my/module`.
+
+Any imports starting with `.` is resolved relative to the current file:
+
+```js
+import { hello4 } from './lib';
+```
+
+For other files (e.g. `JSON`, `CSS`) you need to use the relative path including any extension, e.g:
+
+```js
+import * as data from 'my/module/data.json';
+```
+
+Any imports in a file outside `/assets` or that does not resolve to a component inside `/assets` will be resolved by [ESBuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/). If you have any imported npm dependencies in your project, you need to make sure to run `npm install` before you run `hugo`.
+
+Also note the new `params` option that can be passed from template to your JS files, e.g.:
+
+```go-html-template
+{{ $js := resources.Get "js/main.js" | js.Build (dict "params" (dict "api" "https://example.org/api")) }}
+```
+And then in your JS file:
+
+```js
+import * as params from '@params';
+```
+
+Hugo will, by default, generate a `assets/jsconfig.json` file that maps the imports. This is useful for navigation/intellisense help inside code editors, but if you don't need/want it, you can [turn it off](/getting-started/configuration/#configure-build).
+
+## Node.js dependencies
+
+Use the `js.Build` function to include Node.js dependencies.
+
+Any imports in a file outside `/assets` or that does not resolve to a component inside `/assets` will be resolved by [esbuild](https://esbuild.github.io/) with the **project directory** as the resolve directory (used as the starting point when looking for `node_modules` etc.). Also see [hugo mod npm pack](/commands/hugo_mod_npm_pack/). If you have any imported npm dependencies in your project, you need to make sure to run `npm install` before you run `hugo`.
+
+The start directory for resolving npm packages (aka. packages that live inside a `node_modules` folder) is always the main project folder.
+
+{{% note %}}
+If you're developing a theme/component that is supposed to be imported and depends on dependencies inside `package.json`, we recommend reading about [hugo mod npm pack](/commands/hugo_mod_npm_pack/), a tool to consolidate all the npm dependencies in a project.
+{{% /note %}}
+
+## Examples
+
+```go-html-template
+{{ $built := resources.Get "js/index.js" | js.Build "main.js" }}
+```
+
+Or with options:
+
+```go-html-template
+{{ $externals := slice "react" "react-dom" }}
+{{ $defines := dict "process.env.NODE_ENV" `"development"` }}
+
+{{ $opts := dict "targetPath" "main.js" "externals" $externals "defines" $defines }}
+{{ $built := resources.Get "scripts/main.js" | js.Build $opts }}
+<script src="{{ $built.RelPermalink }}" defer></script>
+```
--- /dev/null
- {{ partial "breadcrumbs.html" }}
+---
+title: partials.Include
+description: Executes the given partial template, optionally passing context. If the partial template contains a return statement, returns the given value, else returns the rendered output.
+categories: []
+keywords: []
+action:
+ aliases: [partial]
+ related:
+ - functions/go-template/return
+ - functions/partials/IncludeCached
+ - functions/go-template/template
+ - methods/page/Render
+ returnType: any
+ signatures: ['partials.Include NAME [CONTEXT]']
+aliases: [/functions/partial]
+---
+
+Without a [`return`] statement, the `partial` function returns a string of type `template.HTML`. With a `return` statement, the `partial` function can return any data type.
+
+[`return`]: /functions/go-template/return/
+
+In this example we have three partial templates:
+
+```text
+layouts/
+└── partials/
+ ├── average.html
+ ├── breadcrumbs.html
+ └── footer.html
+```
+
+The "average" partial returns the average of one or more numbers. We pass the numbers in context:
+
+```go-html-template
+{{ $numbers := slice 1 6 7 42 }}
+{{ $average := partial "average.html" $numbers }}
+```
+
+The "breadcrumbs" partial renders [breadcrumb navigation], and needs to receive the current page in context:
+
+```go-html-template
+{{ partial "breadcrumbs.html" . }}
+```
+
+The "footer" partial renders the site footer. In this contrived example, the footer does not need access to the current page, so we can omit context:
+
+```go-html-template
++{{ partial "footer.html" }}
+```
+
+You can pass anything in context: a page, a page collection, a scalar value, a slice, or a map. In this example we pass the current page and three scalar values:
+
+```go-html-template
+{{ $ctx := dict
+ "page" .
+ "name" "John Doe"
+ "major" "Finance"
+ "gpa" 4.0
+}}
+{{ partial "render-student-info.html" $ctx }}
+```
+
+Then, within the partial template:
+
+```go-html-template
+<p>{{ .name }} is majoring in {{ .major }}.</p>
+<p>Their grade point average is {{ .gpa }}.</p>
+<p>See <a href="{{ .page.RelPermalink }}">details.</a></p>
+```
+
+To return a value from a partial template, it must contain only one `return` statement, placed at the end of the template:
+
+```go-html-template
+{{ $result := "" }}
+{{ if math.ModBool . 2 }}
+ {{ $result = "even" }}
+{{ else }}
+ {{ $result = "odd" }}
+{{ end }}
+{{ return $result }}
+```
+
+See [details][`return`].
+
+[`return`]: /functions/go-template/return/
+
+[breadcrumb navigation]: /content-management/sections/#ancestors-and-descendants
+[details]: /functions/go-template/return/
--- /dev/null
- {{< new-in 0.101.0 >}}
-
+---
+title: path.BaseName
+description: Replaces path separators with slashes (`/`) and returns the last element of the given path, removing the extension if present.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/path/Base
+ - functions/path/Clean
+ - functions/path/Dir
+ - functions/path/Ext
+ - functions/path/Join
+ - functions/path/Split
+ returnType: string
+ signatures: [path.BaseName PATH]
+aliases: [/functions/path.basename]
+---
+
+```go-html-template
+{{ path.BaseName "a/news.html" }} → news
+{{ path.BaseName "news.html" }} → news
+{{ path.BaseName "a/b/c" }} → c
+{{ path.BaseName "/x/y/z/" }} → z
+{{ path.BaseName "" }} → .
+```
--- /dev/null
- aliases: [babel]
+---
+title: resources.Babel
+description: Compiles the given JavaScript resource with Babel.
+categories: []
+keywords: []
+action:
+ related:
+ - functions/js/Build
+ - functions/resources/Fingerprint
+ - functions/resources/Minify
+ returnType: resource.Resource
+ signatures: ['resources.Babel [OPTIONS] RESOURCE']
+toc: true
++expiryDate: 2025-06-24 # deprecated 2024-06-24
+---
+
++{{% deprecated-in 0.128.0 %}}
++Use [js.Babel] instead.
++
++[js.Babel]: /functions/js/babel/
++{{% /deprecated-in %}}
++
+```go-html-template
+{{ with resources.Get "js/main.js" }}
+ {{ if hugo.IsDevelopment }}
+ {{ with . | babel }}
+ <script src="{{ .RelPermalink }}"></script>
+ {{ end }}
+ {{ else }}
+ {{ $opts := dict "minified" true }}
+ {{ with . | babel $opts | fingerprint }}
+ <script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+## Setup
+
+Step 1
+: Install [Node.js](https://nodejs.org/en/download)
+
+Step 2
+: Install the required Node.js packages in the root of your project.
+
+```sh
+npm install --save-dev @babel/core @babel/cli
+```
+
+Step 3
+: Add the babel executable to Hugo's `security.exec.allow` list in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[security.exec]
+ allow = ['^(dart-)?sass(-embedded)?$', '^go$', '^npx$', '^postcss$', '^babel$']
+{{< /code-toggle >}}
+
+## Configuration
+
+We add the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.:
+
+```js
+module.exports = {
+ presets: [
+ [
+ require("@babel/preset-env"),
+ {
+ useBuiltIns: "entry",
+ corejs: 3,
+ },
+ ],
+ ],
+};
+```
+
+## Options
+
+config
+: (`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` in your project. More information on these configuration files can be found here: [babel configuration](https://babeljs.io/docs/en/configuration).
+
+minified
+: (`bool`) Save as many bytes as possible when printing
+
+noComments
+: (`bool`) Write comments to generated output (true by default)
+
+compact
+: (`bool`) Do not include superfluous whitespace characters and line terminators. Defaults to `auto` if not set.
+
+verbose
+: (`bool`) Log everything
+
+sourceMap
+: (`string`) Output `inline` or `external` sourcemap from the babel compile. External sourcemaps will be written to the target with the output file name + ".map". Input sourcemaps can be read from js.Build and node modules and combined into the output sourcemaps.
--- /dev/null
- For page resources, use the [`Resources.ByType`] method on the Page object.
+---
+title: resources.ByType
+description: Returns a collection of global resources of the given media type, or nil if none found.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/resources/Get
+ - functions/resources/GetMatch
+ - functions/resources/GetRemote
+ - functions/resources/Match
+ - methods/page/Resources
+ returnType: resource.Resources
+ signatures: [resources.ByType MEDIATYPE]
+---
+
+The [media type] is typically one of `image`, `text`, `audio`, `video`, or `application`.
+
+```go-html-template
+{{ range resources.ByType "image" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+{{ end }}
+```
+
+{{% note %}}
+This function operates on global resources. A global resource is a file within the assets directory, or within any directory mounted to the assets directory.
+
++For page resources, use the [`Resources.ByType`] method on a `Page` object.
+
+[`Resources.ByType`]: /methods/page/resources/
+{{% /note %}}
+
+[media type]: https://en.wikipedia.org/wiki/Media_type
--- /dev/null
- {{< new-in 0.100.0 >}}
-
+---
+title: resources.Copy
+description: Copies the given resource to the target path.
+categories: []
+action:
+ aliases: []
+ related: []
+ returnType: resource.Resource
+ signatures: [resources.Copy TARGETPATH RESOURCE]
+---
+
+```go-html-template
+{{ with resources.Get "images/a.jpg" }}
+ {{ with resources.Copy "img/new-image-name.jpg" . }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+ {{ end }}
+{{ end }}
+```
+
+The relative URL of the new published resource will be:
+
+```text
+/img/new-image-name.jpg
+```
+
+{{% note %}}
+Use the `resources.Copy` function with global, page, and remote resources.
+{{% /note %}}
--- /dev/null
- - functions/js/Build
- - functions/resources/Babel
+---
+title: resources.Fingerprint
+description: Cryptographically hashes the content of the given resource.
+categories: []
+keywords: []
+action:
+ aliases: [fingerprint]
+ related:
- - functions/resources/PostCSS
- - functions/resources/PostProcess
- - functions/resources/ToCSS
+ - functions/resources/Minify
++ - functions/css/Sass
++ - functions/css/TailwindCSS
++ - functions/js/Build
++ - functions/js/Babel
+ returnType: resource.Resource
+ signatures: ['resources.Fingerprint [ALGORITHM] RESOURCE']
+---
+
+```go-html-template
+{{ with resources.Get "js/main.js" }}
+ {{ with . | fingerprint "sha256" }}
+ <script src="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"></script>
+ {{ end }}
+{{ end }}
+```
+
+Hugo renders this to something like:
+
+```html
+<script src="/js/main.62e...df1.js" integrity="sha256-Yuh...rfE=" crossorigin="anonymous"></script>
+```
+
+Although most commonly used with CSS and JavaScript resources, you can use the `resources.Fingerprint` function with any resource type.
+
+The hash algorithm may be one of `md5`, `sha256` (default), `sha384`, or `sha512`.
+
+After cryptographically hashing the resource content:
+
+1. The values returned by the `.Permalink` and `.RelPermalink` methods include the hash sum
+2. The resource's `.Data.Integrity` method returns a [Subresource Integrity] (SRI) value consisting of the name of the hash algorithm, one hyphen, and the base64-encoded hash sum
+
+[Subresource Integrity]: https://developer.mozilla.org/en-US/docs/Web/Security/Subresource_Integrity
--- /dev/null
- "hugo_version": "0.126.0",
+---
+title: resources.FromString
+description: Returns a resource created from a string.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/resources/ExecuteAsTemplate
+ returnType: resource.Resource
+ signatures: [resources.FromString TARGETPATH STRING]
+---
+
+The `resources.FromString` function returns a resource created from a string, caching the result using the target path as its cache key.
+
+Hugo publishes the resource to the target path when you call its [`Publish`], [`Permalink`], or [`RelPermalink`] methods.
+
+[`publish`]: /methods/resource/publish/
+[`permalink`]: /methods/resource/permalink/
+[`relpermalink`]: /methods/resource/relpermalink/
+
+Let's say you need to publish a file named "site.json" in the root of your public directory, containing the build date, the Hugo version used to build the site, and the date that the content was last modified. For example:
+
+```json
+{
+ "build_date": "2024-02-19T12:27:05-08:00",
++ "hugo_version": "0.128.0",
+ "last_modified": "2024-02-19T12:01:42-08:00"
+}
+```
+
+Place this in your baseof.html template:
+
+```go-html-template
+{{ if .IsHome }}
+ {{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }}
+ {{ $m := dict
+ "hugo_version" hugo.Version
+ "build_date" (now.Format $rfc3339)
+ "last_modified" (site.Lastmod.Format $rfc3339)
+ }}
+ {{ $json := jsonify $m }}
+ {{ $r := resources.FromString "site.json" $json }}
+ {{ $r.Publish }}
+{{ end }}
+```
+
+The example above:
+
+1. Creates a map with the relevant key-value pairs using the [`dict`] function
+2. Encodes the map as a JSON string using the [`jsonify`] function
+3. Creates a resource from the JSON string using the `resources.FromString` function
+4. Publishes the file to the root of the public directory using the resource's `.Publish` method
+
+Combine `resources.FromString` with [`resources.ExecuteAsTemplate`] if your string contains template actions. Rewriting the example above:
+
+```go-html-template
+{{ if .IsHome }}
+ {{ $string := `
+ {{ $rfc3339 := "2006-01-02T15:04:05Z07:00" }}
+ {{ $m := dict
+ "hugo_version" hugo.Version
+ "build_date" (now.Format $rfc3339)
+ "last_modified" (site.Lastmod.Format $rfc3339)
+ }}
+ {{ $json := jsonify $m }}
+ `
+ }}
+ {{ $r := resources.FromString "" $string }}
+ {{ $r = $r | resources.ExecuteAsTemplate "site.json" . }}
+ {{ $r.Publish }}
+{{ end }}
+```
+
+[`dict`]: /functions/collections/dictionary/
+[`jsonify`]: /functions/encoding/jsonify/
+[`resources.ExecuteAsTemplate`]: /functions/resources/executeastemplate/
--- /dev/null
- For page resources, use the [`Resources.Get`] method on the Page object.
+---
+title: resources.Get
+description: Returns a global resource from the given path, or nil if none found.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/resources/ByType
+ - functions/resources/GetMatch
+ - functions/resources/GetRemote
+ - functions/resources/Match
+ - methods/page/Resources
+ returnType: resource.Resource
+ signatures: [resources.Get PATH]
+---
+
+```go-html-template
+{{ with resources.Get "images/a.jpg" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+{{ end }}
+```
+
+{{% note %}}
+This function operates on global resources. A global resource is a file within the assets directory, or within any directory mounted to the assets directory.
+
++For page resources, use the [`Resources.Get`] method on a `Page` object.
+
+[`Resources.Get`]: /methods/page/resources/
+{{% /note %}}
--- /dev/null
- For page resources, use the [`Resources.GetMatch`] method on the Page object.
+---
+title: resources.GetMatch
+description: Returns the first global resource from paths matching the given glob pattern, or nil if none found.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/resources/ByType
+ - functions/resources/Get
+ - functions/resources/GetRemote
+ - functions/resources/Match
+ - methods/page/Resources
+ returnType: resource.Resource
+ signatures: [resources.GetMatch PATTERN]
+---
+
+```go-html-template
+{{ with resources.GetMatch "images/*.jpg" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+{{ end }}
+```
+
+{{% note %}}
+This function operates on global resources. A global resource is a file within the assets directory, or within any directory mounted to the assets directory.
+
++For page resources, use the [`Resources.GetMatch`] method on a `Page` object.
+
+[`Resources.GetMatch`]: /methods/page/resources/
+{{% /note %}}
+
+Hugo determines a match using a case-insensitive [glob pattern].
+
+{{% include "functions/_common/glob-patterns.md" %}}
+
+[glob pattern]: https://github.com/gobwas/glob#example
--- /dev/null
- For page resources, use the [`Resources.Match`] method on the Page object.
+---
+title: resources.Match
+description: Returns a collection of global resources from paths matching the given glob pattern, or nil if none found.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
+ - functions/resources/ByType
+ - functions/resources/Get
+ - functions/resources/GetMatch
+ - functions/resources/GetRemote
+ - methods/page/Resources
+ returnType: resource.Resources
+ signatures: [resources.Match PATTERN]
+---
+
+```go-html-template
+{{ range resources.Match "images/*.jpg" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+{{ end }}
+```
+
+{{% note %}}
+This function operates on global resources. A global resource is a file within the assets directory, or within any directory mounted to the assets directory.
+
++For page resources, use the [`Resources.Match`] method on a `Page` object.
+
+[`Resources.Match`]: /methods/page/resources/
+{{% /note %}}
+
+Hugo determines a match using a case-insensitive [glob pattern].
+
+{{% include "functions/_common/glob-patterns.md" %}}
+
+[glob pattern]: https://github.com/gobwas/glob#example
--- /dev/null
- - functions/js/Build
- - functions/resources/Babel
+---
+title: resources.Minify
+description: Minifies the given resource.
+categories: []
+keywords: []
+action:
+ aliases: [minify]
+ related:
- - functions/resources/PostCSS
- - functions/resources/ToCSS
+ - functions/resources/Fingerprint
++ - functions/css/Sass
++ - functions/css/TailwindCSS
++ - functions/js/Build
++ - functions/js/Babel
+ returnType: resource.Resource
+ signatures: [resources.Minify RESOURCE]
+---
+
+```go-html-template
+{{ $css := resources.Get "css/main.css" }}
+{{ $style := $css | minify }}
+```
+
+Any CSS, JS, JSON, HTML, SVG, or XML resource can be minified using resources.Minify which takes for argument the resource object.
--- /dev/null
- aliases: [postCSS]
+---
+title: resources.PostCSS
+description: Processes the given resource with PostCSS using any PostCSS plugin.
+categories: []
+keywords: []
+action:
- - functions/resources/ToCSS
+ related:
+ - functions/resources/Fingerprint
+ - functions/resources/Minify
+ - functions/resources/PostProcess
- [transpile to CSS]: /functions/resources/tocss.md
++ - functions/css/Sass
+ returnType: resource.Resource
+ signatures: ['resources.PostCSS [OPTIONS] RESOURCE']
+toc: true
++expiryDate: 2025-06-24 # deprecated 2024-06-24
+---
+
++{{% deprecated-in 0.128.0 %}}
++Use [css.PostCSS] instead.
++
++[css.PostCSS]: /functions/css/postcss/
++{{% /deprecated-in %}}
++
+```go-html-template
+{{ with resources.Get "css/main.css" | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+```
+
+## Setup
+
+Follow the steps below to transform CSS using any of the available [PostCSS plugins].
+
+Step 1
+: Install [Node.js].
+
+Step 2
+: Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to your CSS rules:
+
+```sh
+npm i -D postcss postcss-cli autoprefixer
+```
+
+Step 3
+: Create a PostCSS configuration file in the root of your project. You must name this file `postcss.config.js` or another [supported file name]. For example:
+
+```js
+module.exports = {
+ plugins: [
+ require('autoprefixer')
+ ]
+};
+```
+
+{{% note %}}
+{{% include "functions/resources/_common/postcss-windows-warning.md" %}}
+{{% /note %}}
+
+Step 4
+: Place your CSS file within the `assets/css` directory.
+
+Step 5
+: Process the resource with PostCSS:
+
+```go-html-template
+{{ with resources.Get "css/main.css" | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+```
+
+## Options
+
+The `resources.PostCSS` method takes an optional map of options.
+
+config
+: (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory.
+
+noMap
+: (`bool`) Default is `false`. If `true`, disables inline sourcemaps.
+
+inlineImports
+: (`bool`) Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once. URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored. Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file. Hugo will look for imports relative to the module mount and will respect theme overrides.
+
+skipInlineImportsNotFound
+: (`bool`) Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
+
+```go-html-template
+{{ $opts := dict "config" "config-directory" "noMap" true }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+```
+
+## No configuration file
+
+To avoid using a PostCSS configuration file, you can specify a minimal configuration using the options map.
+
+use
+: (`string`) A space-delimited list of PostCSS plugins to use.
+
+parser
+: (`string`) A custom PostCSS parser.
+
+stringifier
+: (`string`) A custom PostCSS stringifier.
+
+syntax
+: (`string`) Custom postcss syntax.
+
+```go-html-template
+{{ $opts := dict "use" "autoprefixer postcss-color-alpha" }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+```
+
+## Check environment
+
+The current Hugo environment name (set by `--environment` or in configuration or OS environment) is available in the Node context, which allows constructs like this:
+
+```js
+const autoprefixer = require('autoprefixer');
+const purgecss = require('@fullhuman/postcss-purgecss');
+module.exports = {
+ plugins: [
+ autoprefixer,
+ process.env.HUGO_ENVIRONMENT !== 'development' ? purgecss : null
+ ]
+}
+```
+
+[node.js]: https://nodejs.org/en/download
+[postcss plugins]: https://www.postcss.parts/
+[supported file name]: https://github.com/postcss/postcss-load-config#usage
++[transpile to CSS]: /functions/css/sass/
--- /dev/null
- - functions/resources/Fingerprint
- - functions/resources/Minify
- - functions/resources/PostCSS
- - functions/resources/ToCSS
+---
+title: resources.PostProcess
+description: Processes the given resource after the build.
+categories: []
+keywords: []
+action:
+ aliases: []
+ related:
- {{ $css = $css | resources.PostCSS | minify | fingerprint | resources.PostProcess }}
++ - functions/css/PostCSS
++ - functions/css/Sass
+ returnType: postpub.PostPublishedResource
+ signatures: [resources.PostProcess RESOURCE]
+toc: true
+---
+
+```go-html-template
+{{ with resources.Get "css/main.css" }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | postCSS | minify | fingerprint | resources.PostProcess }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+Marking a resource with `resources.PostProcess` postpones transformations until the build has finished.
+
+Call `resources.PostProcess` when one or more of the steps in the transformation chain depends on the result of the build.
+
+A prime use case for this is purging unused CSS rules using the [PurgeCSS] plugin for the PostCSS Node.js package.
+
+## CSS Purging
+
+{{% note %}}
+There are several ways to set up CSS purging with PostCSS in Hugo. If you have a simple project, you should consider going the simpler route and drop the use of `resources.PostProcess` and just extract keywords from the templates. See the [Tailwind documentation](https://tailwindcss.com/docs/controlling-file-size/#app) for examples.
+{{% /note %}}
+
+Step 1
+: Install [Node.js].
+
+Step 2
+: Install the required Node.js packages in the root of your project:
+
+```sh
+npm i -D postcss postcss-cli autoprefixer @fullhuman/postcss-purgecss
+```
+
+Step 3
+: Create a PostCSS configuration file in the root of your project. You must name this file `postcss.config.js` or another [supported file name]. For example:
+
+```js
+const autoprefixer = require('autoprefixer');
+const purgecss = require('@fullhuman/postcss-purgecss')({
+ content: ['./hugo_stats.json'],
+ defaultExtractor: content => {
+ const els = JSON.parse(content).htmlElements;
+ return [
+ ...(els.tags || []),
+ ...(els.classes || []),
+ ...(els.ids || []),
+ ];
+ },
+ // https://purgecss.com/safelisting.html
+ safelist: []
+});
+
+module.exports = {
+ plugins: [
+ autoprefixer,
+ process.env.HUGO_ENVIRONMENT !== 'development' ? purgecss : null
+ ]
+};
+```
+
+{{% note %}}
+{{% include "functions/resources/_common/postcss-windows-warning.md" %}}
+{{% /note %}}
+
+Step 4
+: Enable creation of the `hugo_stats.json` file when building the site. If you are only using this for the production build, consider placing it below [config/production].
+
+{{< code-toggle file=hugo >}}
+[build.buildStats]
+enable = true
+{{< /code-toggle >}}
+
+See the [configure build] documentation for details and options.
+
+Step 5
+: Place your CSS file within the `assets/css` directory.
+
+Step 6
+: If the current environment is not `development`, process the resource with PostCSS:
+
+```go-html-template
+{{ with resources.Get "css/main.css" }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | postCSS | minify | fingerprint | resources.PostProcess }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+## Environment variables
+
+Hugo passes these environment variables to PostCSS, which allows you to do something like:
+
+```js
+process.env.HUGO_ENVIRONMENT === 'production' ? [autoprefixer] : []
+```
+
+PWD
+: The absolute path to the project working directory.
+
+HUGO_ENVIRONMENT
+: The current Hugo environment, set with the `--environment` command line flag.
+Default is `production` for `hugo` and `development` for `hugo server`.
+
+HUGO_PUBLISHDIR
+: The absolute path to the publish directory (the `public` directory). Note that the value will always point to a directory on disk even when running `hugo server` in memory mode. If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:
+
+```sh
+hugo server --renderToDisk
+hugo server --renderStaticToDisk
+```
+
+Also, Hugo will add environment variables for all files mounted below `assets/_jsconfig`. A default mount will be set up with files in the project root matching this regexp: `(babel|postcss|tailwind)\.config\.js`.
+
+These will get environment variables named on the form `HUGO_FILE_:filename:` where `:filename:` is all upper case with periods replaced with underscore. This allows you to do something like:
+
+```js
+let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js';
+```
+
+## Limitations
+
+Do not use `resources.PostProcess` when running Hugo's built-in development server. The examples above specifically prevent this by verifying that the current environment is not "development".
+
+The `resources.PostProcess` function only works within templates that produce HTML files.
+
+You cannot manipulate the values returned from the resource’s methods. For example, the `strings.ToUpper` function in this example will not work as expected:
+
+```go-html-template
+{{ $css := resources.Get "css/main.css" }}
++{{ $css = $css | css.PostCSS | minify | fingerprint | resources.PostProcess }}
+{{ $css.RelPermalink | strings.ToUpper }}
+```
+
+[node.js]: https://nodejs.org/en/download
+[supported file name]: https://github.com/postcss/postcss-load-config#usage
+[config/production]: /getting-started/configuration/#configuration-directory
+[configure build]: /getting-started/configuration/#configure-build
+[purgecss]: https://github.com/FullHuman/purgecss#readme
--- /dev/null
- aliases: [toCSS]
+---
+title: resources.ToCSS
+description: Transpiles Sass to CSS.
+categories: []
+keywords: []
+action:
- - functions/resources/PostCSS
+ related:
+ - functions/resources/Fingerprint
+ - functions/resources/Minify
- "enableSourceMap" (not hugo.IsProduction)
++ - functions/css/PostCSS
+ - functions/resources/PostProcess
+ returnType: resource.Resource
+ signatures: ['resources.ToCSS [OPTIONS] RESOURCE']
+toc: true
++expiryDate: 2025-06-24 # deprecated 2024-06-24
+---
+
++{{% deprecated-in 0.128.0 %}}
++Use [css.Sass] instead.
++
++[css.Sass]: /functions/css/sass/
++{{% /deprecated-in %}}
++
+```go-html-template
+{{ with resources.Get "sass/main.scss" }}
+ {{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
+ {{ with . | toCSS $opts }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended edition, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language.
+
+Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both.
+
+[scss]: https://sass-lang.com/documentation/syntax#scss
+[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+
+## Options
+
+transpiler
+: (`string`) The transpiler to use, either `libsass` (default) or `dartsass`. Hugo's extended edition includes the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass) below.
+
+targetPath
+: (`string`) If not set, the transformed resource's target path will be the original path of the asset file with its extension replaced by `.css`.
+
+vars
+: (`map`) A map of key-value pairs that will be available in the `hugo:vars` namespace. Useful for [initializing Sass variables from Hugo templates](https://discourse.gohugo.io/t/42053/).
+
+```scss
+// LibSass
+@import "hugo:vars";
+
+// Dart Sass
+@use "hugo:vars" as v;
+```
+
+outputStyle
+: (`string`) Output styles available to LibSass include `nested` (default), `expanded`, `compact`, and `compressed`. Output styles available to Dart Sass include `expanded` (default) and `compressed`.
+
+precision
+: (`int`) Precision of floating point math. Not applicable to Dart Sass.
+
+enableSourceMap
+: (`bool`) If `true`, generates a source map.
+
+sourceMapIncludeSources
+: (`bool`) If `true`, embeds sources in the generated source map. Not applicable to LibSass.
+
+includePaths
+: (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements.
+
+```go-html-template
+{{ $opts := dict
+ "transpiler" "dartsass"
+ "targetPath" "css/style.css"
+ "vars" site.Params.styles
- HUGO_VERSION: 0.126.0
- DART_SASS_VERSION: 1.77.1
++ "enableSourceMap" (not hugo.IsProduction)
+ "includePaths" (slice "node_modules/bootstrap/scss")
+}}
+{{ with resources.Get "sass/main.scss" | toCSS $opts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+{{ end }}
+```
+
+## Dart Sass
+
+The extended version of Hugo includes [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
+
+Use the latest features of the Sass language by installing Dart Sass in your development and production environments.
+
+### Installation overview
+
+Dart Sass is compatible with Hugo v0.114.0 and later.
+
+If you have been using Embedded Dart Sass[^1] with Hugo v0.113.0 and earlier, uninstall Embedded Dart Sass, then install Dart Sass. If you have installed both, Hugo will use Dart Sass.
+
+If you install Hugo as a [Snap package] there is no need to install Dart Sass. The Hugo Snap package includes Dart Sass.
+
+[^1]: In 2023, the Sass team deprecated Embedded Dart Sass in favor of Dart Sass.
+
+### Installing in a development environment
+
+When you install Dart Sass somewhere in your PATH, Hugo will find it.
+
+OS|Package manager|Site|Installation
+:--|:--|:--|:--
+Linux|Homebrew|[brew.sh]|`brew install sass/sass/sass`
+Linux|Snap|[snapcraft.io]|`sudo snap install dart-sass`
+macOS|Homebrew|[brew.sh]|`brew install sass/sass/sass`
+Windows|Chocolatey|[chocolatey.org]|`choco install sass`
+Windows|Scoop|[scoop.sh]|`scoop install sass`
+
+You may also install [prebuilt binaries] for Linux, macOS, and Windows.
+
+Run `hugo env` to list the active transpilers.
+
+### Installing in a production environment
+
+For [CI/CD] deployments (e.g., GitHub Pages, GitLab Pages, Netlify, etc.) you must edit the workflow to install Dart Sass before Hugo builds the site[^2]. Some providers allow you to use one of the package managers above, or you can download and extract one of the prebuilt binaries.
+
+[^2]: You do not have to do this if (a) you have not modified the assets cache location, and (b) you have not set `useResourceCacheWhen` to `never` in your [site configuration], and (c) you add and commit your resources directory to your repository.
+
+#### GitHub Pages
+
+To install Dart Sass for your builds on GitHub Pages, add this step to the GitHub Pages workflow file:
+
+```yaml
+- name: Install Dart Sass
+ run: sudo snap install dart-sass
+```
+
+If you are using GitHub Pages for the first time with your repository, GitHub provides a [starter workflow] for Hugo that includes Dart Sass. This is the simplest way to get started.
+
+#### GitLab Pages
+
+To install Dart Sass for your builds on GitLab Pages, the `.gitlab-ci.yml` file should look something like this:
+
+```yaml
+variables:
- HUGO_VERSION = "0.126.0"
- DART_SASS_VERSION = "1.77.1"
++ HUGO_VERSION: 0.128.0
++ DART_SASS_VERSION: 1.77.5
+ GIT_DEPTH: 0
+ GIT_STRATEGY: clone
+ GIT_SUBMODULE_STRATEGY: recursive
+ TZ: America/Los_Angeles
+image:
+ name: golang:1.20-buster
+pages:
+ script:
+ # Install Dart Sass
+ - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - cp -r dart-sass/* /usr/local/bin
+ - rm -rf dart-sass*
+ # Install Hugo
+ - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - apt install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ # Build
+ - hugo --gc --minify
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+```
+
+#### Netlify
+
+To install Dart Sass for your builds on Netlify, the `netlify.toml` file should look something like this:
+
+```toml
+[build.environment]
++HUGO_VERSION = "0.128.0"
++DART_SASS_VERSION = "1.77.5"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = """\
+ curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ export PATH=/opt/build/repo/dart-sass:$PATH && \
+ hugo --gc --minify \
+ """
+```
+
+### Example
+
+To transpile with Dart Sass, set `transpiler` to `dartsass` in the options map passed to `resources.ToCSS`. For example:
+
+```go-html-template
+{{ with resources.Get "sass/main.scss" }}
+ {{ $opts := dict "transpiler" "dartsass" "targetPath" "css/style.css" }}
+ {{ with . | toCSS $opts }}
+ {{ if hugo.IsDevelopment }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+ {{ else }}
+ {{ with . | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+ {{ end }}
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+### Miscellaneous
+
+If you build Hugo from source and run `mage test -v`, the test will fail if you install Dart Sass as a Snap package. This is due to the Snap package's strict confinement model.
+
+[brew.sh]: https://brew.sh/
+[chocolatey.org]: https://community.chocolatey.org/packages/sass
+[ci/cd]: https://en.wikipedia.org/wiki/CI/CD
+[dart sass]: https://sass-lang.com/dart-sass
+[libsass]: https://sass-lang.com/libsass
+[prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
+[scoop.sh]: https://scoop.sh/#/apps?q=sass
+[site configuration]: /getting-started/configuration/#configure-build
+[snap package]: /installation/linux/#snap
+[snapcraft.io]: https://snapcraft.io/dart-sass
+[starter workflow]: https://github.com/actions/starter-workflows/blob/main/pages/hugo.yml
--- /dev/null
- 
+---
+title: strings.Diff
+description: Returns an anchored diff of the two texts OLD and NEW in the unified diff format. If OLD and NEW are identical, returns an empty string.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: string
+ signatures: [strings.Diff OLDNAME OLD NEWNAME NEW]
+---
+
+{{< new-in 0.125.0 >}}
+
+Use `strings.Diff` to compare two strings and render a highlighted diff:
+
+```go-html-template
+{{ $want := `
+<p>The product of 6 and 7 is 42.</p>
+<p>The product of 7 and 6 is 42.</p>
+`}}
+
+{{ $got := `
+<p>The product of 6 and 7 is 42.</p>
+<p>The product of 7 and 6 is 13.</p>
+`}}
+
+{{ $diff := strings.Diff "want" $want "got" $got }}
+{{ transform.Highlight $diff "diff" }}
+```
+
+Rendered:
+
++
--- /dev/null
--- /dev/null
++---
++title: templates.Defer
++description: Defer execution of a template until after all sites and output formats have been rendered.
++categories: []
++keywords: []
++toc: true
++action:
++ aliases: []
++ related: []
++ returnType: string
++ signatures: [templates.Defer OPTIONS]
++aliases: [/functions/templates.defer]
++---
++
++{{< new-in "0.128.0" >}}
++
++In some rare use cases, you may need to defer the execution of a template until after all sites and output formats have been rendered. One such example could be [TailwindCSS](/functions/css/tailwindcss/) using the output of [hugo_stats.json](/getting-started/configuration/#configure-build) to determine which classes and other HTML identifiers are being used in the final output:
++
++```go-html-template
++{{ with (templates.Defer (dict "key" "global")) }}
++ {{ $t := debug.Timer "tailwindcss" }}
++ {{ with resources.Get "css/styles.css" }}
++ {{ $opts := dict
++ "inlineImports" true
++ "optimize" hugo.IsProduction
++ }}
++ {{ with . | css.TailwindCSS $opts }}
++ {{ if hugo.IsDevelopment }}
++ <link rel="stylesheet" href="{{ .RelPermalink }}" />
++ {{ else }}
++ {{ with . | minify | fingerprint }}
++ <link
++ rel="stylesheet"
++ href="{{ .RelPermalink }}"
++ integrity="{{ .Data.Integrity }}"
++ crossorigin="anonymous" />
++ {{ end }}
++ {{ end }}
++ {{ end }}
++ {{ end }}
++ {{ $t.Stop }}
++{{ end }}
++```
++
++{{% note %}}
++This function only works in combination with the `with` keyword.
++{{% /note %}}
++
++
++{{% note %}}
++Variables defined on the outside are not visible on the inside and vice versa. To pass in data, use the `data` [option](#options).
++{{% /note %}}
++
++For the above to work well when running the server (or `hugo -w`), you want to have a configuration similar to this:
++
++{{< code-toggle file=hugo >}}
++[module]
++[[module.mounts]]
++source = "hugo_stats.json"
++target = "assets/notwatching/hugo_stats.json"
++disableWatch = true
++[build.buildStats]
++enable = true
++[[build.cachebusters]]
++source = "assets/notwatching/hugo_stats\\.json"
++target = "styles\\.css"
++[[build.cachebusters]]
++source = "(postcss|tailwind)\\.config\\.js"
++target = "css"
++{{< /code-toggle >}}
++
++## Options
++
++The `templates.Defer` function takes a single argument, a map with the following optional keys:
++
++key (`string`)
++: The key to use for the deferred template. This will, combined with a hash of the template content, be used as a cache key. If this is not set, Hugo will execute the deferred template on every render. This is not what you want for shared resources like CSS and JavaScript.
++
++data (`map`)
++: Optional map to pass as data to the deferred template. This will be available in the deferred template as `.` or `$`.
++
++
++```go-html-template
++Language Outside: {{ site.Language.Lang }}
++Page Outside: {{ .RelPermalink }}
++I18n Outside: {{ i18n "hello" }}
++{{ $data := (dict "page" . )}}
++{{ with (templates.Defer (dict "data" $data )) }}
++ Language Inside: {{ site.Language.Lang }}
++ Page Inside: {{ .page.RelPermalink }}
++ I18n Inside: {{ i18n "hello" }}
++{{ end }}
++```
++
++The [Output Format](/templates/output-formats/), [Site](/methods/page/site/), and [language](/methods/site/language) will be the same, even if the execution is deferred. In the example above, this means that the `site.Language.Lang` and `.RelPermalink` will be the same on the inside and the outside of the deferred template.
--- /dev/null
- [sc]: /templates/shortcode-templates/
+---
+title: transform.Emojify
+description: Runs a string through the Emoji emoticons processor.
+categories: []
+keywords: []
+action:
+ aliases: [emojify]
+ related: []
+ returnType: template.HTML
+ signatures: [transform.Emojify INPUT]
+aliases: [/functions/emojify]
+---
+
+`emojify` runs a passed string through the Emoji emoticons processor.
+
+See the list of [emoji shortcodes] for available emoticons.
+
+The `emojify` function can be called in your templates but not directly in your content files by default. For emojis in content files, set `enableEmoji` to `true` in your site's [configuration]. Then you can write emoji shorthand directly into your content files;
+
+
+```text
+I :heart: Hugo!
+```
+
+I :heart: Hugo!
+
+[configuration]: /getting-started/configuration/
+[emoji shortcodes]: /quick-reference/emojis/
++[sc]: /templates/shortcode/
+[scsource]: https://github.com/gohugoio/hugo/tree/master/docs/layouts/shortcodes
--- /dev/null
- #### Extras extension
+---
+title: Configure markup
+description: Configure rendering of markup to HTML.
+categories: [getting started,fundamentals]
+keywords: [markup,markdown,goldmark,asciidoc,asciidoctor,highlighting]
+menu:
+ docs:
+ parent: getting-started
+ weight: 50
+weight: 50
+slug: configuration-markup
+toc: true
+---
+
+## Default handler
+
+Hugo uses [Goldmark] to render Markdown to HTML.
+
+{{< code-toggle file=hugo >}}
+[markup]
+defaultMarkdownHandler = 'goldmark'
+{{< /code-toggle >}}
+
+Files with the `.md` or `.markdown` extension are processed as Markdown, provided that you have not specified a different [content format] using the `markup` field in front matter.
+
+To use a different renderer for Markdown files, specify one of `asciidocext`, `org`, `pandoc`, or `rst` in your site configuration.
+
+defaultMarkdownHandler|Description
+:--|:--
+`asciidocext`|[AsciiDoc]
+`goldmark`|[Goldmark]
+`org`|[Emacs Org Mode]
+`pandoc`|[Pandoc]
+`rst`|[reStructuredText]
+
+To use AsciiDoc, Pandoc, or reStructuredText you must install the relevant renderer and update your [security policy].
+
+{{% note %}}
+Unless you need a unique capability provided by one of the alternate Markdown handlers, we strongly recommend that you use the default setting. Goldmark is fast, well maintained, conforms to the [CommonMark] specification, and is compatible with [GitHub Flavored Markdown] (GFM).
+
+[commonmark]: https://spec.commonmark.org/0.30/
+[github flavored markdown]: https://github.github.com/gfm/
+{{% /note %}}
+
+[asciidoc]: https://asciidoc.org/
+[content format]: /content-management/formats/#formats
+[emacs org mode]: https://orgmode.org/
+[goldmark]: https://github.com/yuin/goldmark/
+[pandoc]: https://pandoc.org/
+[restructuredtext]: https://docutils.sourceforge.io/rst.html
+[security policy]: /about/security/#security-policy
+
+## Goldmark
+
+This is the default configuration for the Goldmark Markdown renderer:
+
+{{< code-toggle config=markup.goldmark />}}
+
+### Goldmark extensions
+
+The extensions below, excluding Extras and Passthrough, are enabled by default.
+
+Extension|Documentation|Enabled
+:--|:--|:-:
+cjk|[Goldmark Extensions: CJK]|:heavy_check_mark:
+definitionList|[PHP Markdown Extra: Definition lists]|:heavy_check_mark:
+extras|[Hugo Goldmark Extensions: Extras]|
+footnote|[PHP Markdown Extra: Footnotes]|:heavy_check_mark:
+linkify|[GitHub Flavored Markdown: Autolinks]|:heavy_check_mark:
+passthrough|[Hugo Goldmark Extensions: Passthrough]|
+strikethrough|[GitHub Flavored Markdown: Strikethrough]|:heavy_check_mark:
+table|[GitHub Flavored Markdown: Tables]|:heavy_check_mark:
+taskList|[GitHub Flavored Markdown: Task list items]|:heavy_check_mark:
+typographer|[Goldmark Extensions: Typographer]|:heavy_check_mark:
+
+[GitHub Flavored Markdown: Autolinks]: https://github.github.com/gfm/#autolinks-extension-
+[GitHub Flavored Markdown: Strikethrough]: https://github.github.com/gfm/#strikethrough-extension-
+[GitHub Flavored Markdown: Tables]: https://github.github.com/gfm/#tables-extension-
+[GitHub Flavored Markdown: Task list items]: https://github.github.com/gfm/#task-list-items-extension-
+[Goldmark Extensions: CJK]: https://github.com/yuin/goldmark?tab=readme-ov-file#cjk-extension
+[Goldmark Extensions: Typographer]: https://github.com/yuin/goldmark?tab=readme-ov-file#typographer-extension
+[Hugo Goldmark Extensions: Extras]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#extras-extension
+[Hugo Goldmark Extensions: Passthrough]: https://github.com/gohugoio/hugo-goldmark-extensions?tab=readme-ov-file#passthrough-extension
+[PHP Markdown Extra: Definition lists]: https://michelf.ca/projects/php-markdown/extra/#def-list
+[PHP Markdown Extra: Footnotes]: https://michelf.ca/projects/php-markdown/extra/#footnotes
+
- Configure the extras extension to enable [inserted text], [mark text], [subscript], and [superscript] elements in Markdown.
++#### Extras
+
+{{< new-in 0.126.0 >}}
+
- Inserted text|`++foo++`|`<ins>foo</ins>`
- Mark text|`==bar==`|`<mark>bar</mark>`
++Enable [deleted text], [inserted text], [mark text], [subscript], and [superscript] elements in Markdown.
+
+Element|Markdown|Rendered
+:--|:--|:--
- #### Passthrough extension
++Deleted text|`~~foo~~`|`<del>foo</del>`
++Inserted text|`++bar++`|`<ins>bar</ins>`
++Mark text|`==baz==`|`<mark>baz</mark>`
+Subscript|`H~2~O`|`H<sub>2</sub>O`
+Superscript|`1^st^`|`1<sup>st</sup>`
+
++[deleted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/del
+[inserted text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ins
+[mark text]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/mark
+[subscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sub
+[superscript]: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/sup
+
- #### Typographer extension
++To avoid a conflict when enabling the Hugo Goldmark Extras subscript extension, if you want to render subscript and strikethrough text concurrently you must:
++
++1. Disable the Goldmark strikethrough extension
++2. Enable the Hugo Goldmark Extras delete extension
++
++For example:
++
++{{< code-toggle file=hugo >}}
++[markup.goldmark.extensions]
++strikethrough = false
++
++[markup.goldmark.extensions.extras.delete]
++enable = true
++
++[markup.goldmark.extensions.extras.subscript]
++enable = true
++{{< /code-toggle >}}
++
++#### Passthrough
+
+{{< new-in 0.122.0 >}}
+
+Enable the passthrough extension to include mathematical equations and expressions in Markdown using LaTeX or TeX typesetting syntax. See [mathematics in Markdown] for details.
+
+[mathematics in Markdown]: content-management/mathematics/
+
++#### Typographer
+
+The Typographer extension replaces certain character combinations with HTML entities as specified below:
+
+Markdown|Replaced by|Description
+:--|:--|:--
+`...`|`…`|horizontal ellipsis
+`'`|`’`|apostrophe
+`--`|`–`|en dash
+`---`|`—`|em dash
+`«`|`«`|left angle quote
+`“`|`“`|left double quote
+`‘`|`‘`|left single quote
+`»`|`»`|right angle quote
+`”`|`”`|right double quote
+`’`|`’`|right single quote
+
+### Goldmark settings explained
+
+Most of the Goldmark settings above are self-explanatory, but some require explanation.
+
+###### duplicateResourceFiles
+
+{{< new-in 0.123.0 >}}
+
+(`bool`) If `true`, shared page resources on multilingual single-host sites will be duplicated for each language. See [multilingual page resources] for details. Default is `false`.
+
+[multilingual page resources]: /content-management/page-resources/#multilingual
+
+{{% note %}}
+With multilingual single-host sites, setting this parameter to `false` will enable Hugo's [embedded link render hook] and [embedded image render hook]. This is the default configuration for multilingual single-host sites.
+
+[embedded image render hook]: /render-hooks/images/#default
+[embedded link render hook]: /render-hooks/links/#default
+{{% /note %}}
+
+###### parser.wrapStandAloneImageWithinParagraph
+
+(`bool`) If `true`, image elements without adjacent content will be wrapped within a `p` element when rendered. This is the default Markdown behavior. Set to `false` when using an [image render hook] to render standalone images as `figure` elements. Default is `true`.
+
+[image render hook]: /render-hooks/images/
+
+###### parser.autoHeadingIDType
+
+(`string`) The strategy used to automatically generate heading `id` attributes, one of `github`, `github-ascii` or `blackfriday`.
+
+- `github` produces GitHub-compatible `id` attributes
+- `github-ascii` drops any non-ASCII characters after accent normalization
+- `blackfriday` produces `id` attributes compatible with the Blackfriday Markdown renderer
+
+This is also the strategy used by the [anchorize](/functions/urls/anchorize) template function. Default is `github`.
+
+###### parser.attribute.block
+
+(`bool`) If `true`, enables [Markdown attributes] for block elements. Default is `false`.
+
+[Markdown attributes]: /content-management/markdown-attributes/
+
+###### parser.attribute.title
+
+(`bool`) If `true`, enables [Markdown attributes] for headings. Default is `true`.
+
+###### renderHooks.image.enableDefault
+
+{{< new-in 0.123.0 >}}
+
+(`bool`) If `true`, enables Hugo's [embedded image render hook]. Default is `false`.
+
+[embedded image render hook]: /render-hooks/images/#default
+
+{{% note %}}
+The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
+
+[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
+{{% /note %}}
+
+###### renderHooks.link.enableDefault
+
+{{< new-in 0.123.0 >}}
+
+(`bool`) If `true`, enables Hugo's [embedded link render hook]. Default is `false`.
+
+[embedded link render hook]: /render-hooks/links/#default
+
+{{% note %}}
+The embedded link render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
+
+[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
+{{% /note %}}
+
+###### renderer.hardWraps
+
+(`bool`) If `true`, Goldmark replaces newline characters within a paragraph with `br` elements. Default is `false`.
+
+###### renderer.unsafe
+
+(`bool`) If `true`, Goldmark renders raw HTML mixed within the Markdown. This is unsafe unless the content is under your control. Default is `false`.
+
+## AsciiDoc
+
+This is the default configuration for the AsciiDoc renderer:
+
+{{< code-toggle config=markup.asciidocExt />}}
+
+### AsciiDoc settings explained
+
+###### attributes
+
+(`map`) A map of key-value pairs, each a document attributes,See Asciidoctor’s [attributes].
+
+[attributes]: https://asciidoctor.org/docs/asciidoc-syntax-quick-reference/#attributes-and-substitutions
+
+###### backend
+
+(`string`) The backend output file format. Default is `html5`.
+
+###### extensions
+
+(`string array`) An array of enabled extensions, one or more of `asciidoctor-html5s`, `asciidoctor-bibtex`, `asciidoctor-diagram`, `asciidoctor-interdoc-reftext`, `asciidoctor-katex`, `asciidoctor-latex`, `asciidoctor-mathematical`, or `asciidoctor-question`.
+
+{{% note %}}
+To mitigate security risks, entries in the extension array may not contain forward slashes (`/`), backslashes (`\`), or periods. Due to this restriction, extensions must be in Ruby's `$LOAD_PATH`.
+{{% /note %}}
+
+###### failureLevel
+
+(`string`) The minimum logging level that triggers a non-zero exit code (failure). Default is `fatal`.
+
+###### noHeaderOrFooter
+
+(`bool`) If `true`, outputs an embeddable document, which excludes the header, the footer, and everything outside the body of the document. Default is `true`.
+
+###### preserveTOC
+
+(`bool`) If `true`, preserves the table of contents (TOC) rendered by Asciidoctor. By default, to make the TOC compatible with existing themes, Hugo removes the TOC rendered by Asciidoctor. To render the TOC, use the [`TableOfContents`] method on a `Page` object in your templates. Default is `false`.
+
+[`TableOfContents`]: /methods/page/tableofcontents/
+
+###### safeMode
+
+(`string`) The safe mode level, one of `unsafe`, `safe`, `server`, or `secure`. Default is `unsafe`.
+
+###### sectionNumbers
+
+(`bool`) If `true`, numbers each section title. Default is `false`.
+
+###### trace
+
+(`bool`) If `true`, include backtrace information on errors. Default is `false`.
+
+###### verbose
+
+(`bool`)If `true`, verbosely prints processing information and configuration file checks to stderr. Default is `false`.
+
+###### workingFolderCurrent
+
+(`bool`) If `true`, sets the working directory to be the same as that of the AsciiDoc file being processed, allowing [includes] to work with relative paths. Set to `true` to render diagrams with the [asciidoctor-diagram] extension. Default is `false`.
+
+[asciidoctor-diagram]: https://asciidoctor.org/docs/asciidoctor-diagram/
+[includes]: https://docs.asciidoctor.org/asciidoc/latest/syntax-quick-reference/#includes
+
+### AsciiDoc configuration example
+
+{{< code-toggle file=hugo >}}
+[markup.asciidocExt]
+ extensions = ["asciidoctor-html5s", "asciidoctor-diagram"]
+ workingFolderCurrent = true
+ [markup.asciidocExt.attributes]
+ my-base-url = "https://example.com/"
+ my-attribute-name = "my value"
+{{< /code-toggle >}}
+
+### AsciiDoc troubleshooting
+
+Run `hugo --logLevel debug` to examine Hugo's call to the Asciidoctor executable:
+
+```txt
+INFO 2019/12/22 09:08:48 Rendering book-as-pdf.adoc with C:\Ruby26-x64\bin\asciidoctor.bat using asciidoc args [--no-header-footer -r asciidoctor-html5s -b html5s -r asciidoctor-diagram --base-dir D:\prototypes\hugo_asciidoc_ddd\docs -a outdir=D:\prototypes\hugo_asciidoc_ddd\build -] ...
+```
+
+## Highlight
+
+This is the default `highlight` configuration. Note that some of these settings can be set per code block, see [Syntax Highlighting](/content-management/syntax-highlighting/).
+
+{{< code-toggle config=markup.highlight />}}
+
+For `style`, see these galleries:
+
+* [Short snippets](https://xyproto.github.io/splash/docs/all.html)
+* [Long snippets](https://xyproto.github.io/splash/docs/longer/all.html)
+
+For CSS, see [Generate Syntax Highlighter CSS](/content-management/syntax-highlighting/#generate-syntax-highlighter-css).
+
+## Table of contents
+
+This is the default configuration for the table of contents, applicable to Goldmark and Asciidoctor:
+
+{{< code-toggle config=markup.tableOfContents />}}
+
+###### startLevel
+
+(`int`) Heading levels less than this value will be excluded from the table of contents. For example, to exclude `h1` elements from the table of contents, set this value to `2`. Default is `2`.
+
+###### endLevel
+
+(`int`) Heading levels greater than this value will be excluded from the table of contents. For example, to exclude `h4`, `h5`, and `h6` elements from the table of contents, set this value to `3`. Default is `3`.
+
+###### ordered
+
+(`bool`) If `true`, generates an ordered list instead of an unordered list. Default is `false`.
--- /dev/null
- ###### paginate
+---
+title: Configure Hugo
+linkTitle: Configuration
+description: How to configure your Hugo site.
+categories: [getting started,fundamentals]
+keywords: [configuration,toml,yaml,json]
+menu:
+ docs:
+ parent: getting-started
+ weight: 40
+weight: 40
+toc: true
+aliases: [/overview/source-directory/,/overview/configuration/]
+---
+
+## Configuration file
+
+Create a site configuration file in the root of your project directory, naming it `hugo.toml`, `hugo.yaml`, or `hugo.json`, with that order of precedence.
+
+```text
+my-project/
+└── hugo.toml
+```
+
+{{% note %}}
+With v0.109.0 and earlier the basename of the site configuration file was `config` instead of `hugo`. You can use either, but should transition to the new naming convention when practical.
+{{% /note %}}
+
+A simple example:
+
+{{< code-toggle file=hugo >}}
+baseURL = 'https://example.org/'
+languageCode = 'en-us'
+title = 'ABC Widgets, Inc.'
+[params]
+subtitle = 'The Best Widgets on Earth'
+[params.contact]
+email = 'info@example.org'
+phone = '+1 202-555-1212'
+{{< /code-toggle >}}
+
+To use a different configuration file when building your site, use the `--config` flag:
+
+```sh
+hugo --config other.toml
+```
+
+Combine two or more configuration files, with left-to-right precedence:
+
+```sh
+hugo --config a.toml,b.yaml,c.json
+```
+
+{{% note %}}
+See the specifications for each file format: [TOML], [YAML], and [JSON].
+
+[TOML]: https://toml.io/en/latest
+[YAML]: https://yaml.org/spec/
+[JSON]: https://datatracker.ietf.org/doc/html/rfc7159
+{{% /note %}}
+
+## Configuration directory
+
+Instead of a single site configuration file, split your configuration by [environment], root configuration key, and language. For example:
+
+[environment]: /getting-started/glossary/#environment
+
+```text
+my-project/
+└── config/
+ ├── _default/
+ │ ├── hugo.toml
+ │ ├── menus.en.toml
+ │ ├── menus.de.toml
+ │ └── params.toml
+ └── production/
+ └── params.toml
+```
+
+The root configuration keys are `build`, `caches`, `cascade`, `deployment`, `frontmatter`, `imaging`, `languages`, `markup`, `mediatypes`, `menus`, `minify`, `module`, `outputformats`, `outputs`, `params`, `permalinks`, `privacy`, `related`, `security`, `segments`, `server`, `services`, `sitemap`, and `taxonomies`.
+
+### Omit the root key
+
+When splitting the configuration by root key, omit the root key in the given file. For example, these are equivalent:
+
+{{< code-toggle file=hugo >}}
+[params]
+foo = 'bar'
+{{< /code-toggle >}}
+
+{{< code-toggle file=params >}}
+foo = 'bar'
+{{< /code-toggle >}}
+
+### Recursive parsing
+
+Hugo parses the `config` directory recursively, allowing you to organize the files into subdirectories. For example:
+
+```text
+my-project/
+└── config/
+ └── _default/
+ ├── navigation/
+ │ ├── menus.de.toml
+ │ └── menus.en.toml
+ └── hugo.toml
+```
+
+### Example
+
+```text
+my-project/
+└── config/
+ ├── _default/
+ │ ├── hugo.toml
+ │ ├── menus.en.toml
+ │ ├── menus.de.toml
+ │ └── params.toml
+ ├── production/
+ │ ├── hugo.toml
+ │ └── params.toml
+ └── staging/
+ ├── hugo.toml
+ └── params.toml
+```
+
+Considering the structure above, when running `hugo --environment staging`, Hugo will use every setting from `config/_default` and merge `staging`'s on top of those.
+
+Let's take an example to understand this better. Let's say you are using Google Analytics for your website. This requires you to specify a [Google tag ID] in your site configuration:
+
+[Google tag ID]: https://support.google.com/tagmanager/answer/12326985?hl=en
+
+{{< code-toggle file=hugo copy=false >}}
+[services.googleAnalytics]
+ID = 'G-XXXXXXXXX'
+{{< /code-toggle >}}
+
+Now consider the following scenario:
+
+1. You don't want to load the analytics code when running `hugo server`.
+2. You want to use different Google tag IDs for your production and staging environments. For example:
+
+ - `G-PPPPPPPPP` for production
+ - `G-SSSSSSSSS` for staging
+
+To satisfy these requirements, configure your site as follows:
+
+1. `config/_default/hugo.toml`
+
+ Exclude the `services.googleAnalytics` section. This will prevent loading of the analytics code when you run `hugo server`.
+
+ By default, Hugo sets its `environment` to `development` when running `hugo server`. In the absence of a `config/development` directory, Hugo uses the `config/_default` directory.
+
+2. `config/production/hugo.toml`
+
+ Include this section only:
+
+ {{< code-toggle file=hugo copy=false >}}
+ [services.googleAnalytics]
+ ID = 'G-PPPPPPPPP'
+ {{< /code-toggle >}}
+
+ You do not need to include other parameters in this file. Include only those parameters that are specific to your production environment. Hugo will merge these parameters with the default configuration.
+
+ By default, Hugo sets its `environment` to `production` when running `hugo`. The analytics code will use the `G-PPPPPPPPP` tag ID.
+
+3. `config/staging/hugo.toml`
+
+ Include this section only:
+
+ {{< code-toggle file=hugo copy=false >}}
+ [services.googleAnalytics]
+ ID = 'G-SSSSSSSSS'
+ {{< /code-toggle >}}
+
+ You do not need to include other parameters in this file. Include only those parameters that are specific to your staging environment. Hugo will merge these parameters with the default configuration.
+
+ To build your staging site, run `hugo --environment staging`. The analytics code will use the `G-SSSSSSSSS` tag ID.
+
+## Merge configuration from themes
+
+The configuration value for `_merge` can be one of:
+
+none
+: No merge.
+
+shallow
+: Only add values for new keys.
+
+deep
+: Add values for new keys, merge existing.
+
+Note that you don't need to be so verbose as in the default setup below; a `_merge` value higher up will be inherited if not set.
+
+{{< code-toggle file=hugo dataKey="config_helpers.mergeStrategy" skipHeader=true />}}
+
+## All configuration settings
+
+###### archetypeDir
+
+(`string`) The directory where Hugo finds archetype files (content templates). Default is `archetypes`. {{% module-mounts-note %}}
+
+###### assetDir
+
+(`string`) The directory where Hugo finds asset files used in [Hugo Pipes](/hugo-pipes/). Default is `assets`. {{% module-mounts-note %}}
+
+###### baseURL
+
+(`string`) The absolute URL (protocol, host, path, and trailing slash) of your published site (e.g., `https://www.example.org/docs/`).
+
+###### build
+
+See [Configure Build](#configure-build).
+
+###### buildDrafts
+
+(`bool`) Include drafts when building. Default is `false`.
+
+###### buildExpired
+
+(`bool`) Include content already expired. Default is `false`.
+
+###### buildFuture
+
+(`bool`) Include content with a future publication date. Default is `false`.
+
+###### caches
+
+See [Configure File Caches](#configure-file-caches).
+
+###### capitalizeListTitles
+
+{{< new-in 0.123.3 >}}
+
+(`bool`) Whether to capitalize automatic list titles. Applicable to section, taxonomy, and term pages. Default is `true`. You can change the capitalization style in your site configuration to one of `ap`, `chicago`, `go`, `firstupper`, or `none`. See [details].
+
+[details]: /getting-started/configuration/#configure-title-case
+
+###### cascade
+
+Pass down default configuration values (front matter) to pages in the content tree. The options in site config is the same as in page front matter, see [Front Matter Cascade](/content-management/front-matter#cascade).
+
+{{% note %}}
+For a website in a single language, define the `[[cascade]]` in [Front Matter](/content-management/front-matter#cascade). For a multilingual website, define the `[[cascade]]` in [Site Config](/getting-started/configuration/#cascade).
+
+To remain consistent and prevent unexpected behavior, do not mix these strategies.
+{{% /note %}}
+
+###### canonifyURLs
+
+(`bool`) See [details](/content-management/urls/#canonical-urls) before enabling this feature. Default is `false`.
+
+###### cleanDestinationDir
+
+(`bool`) When building, removes files from destination not found in static directories. Default is `false`.
+
+###### contentDir
+
+(`string`) The directory from where Hugo reads content files. Default is `content`. {{% module-mounts-note %}}
+
+###### copyright
+
+(`string`) Copyright notice for your site, typically displayed in the footer.
+
+###### dataDir
+
+(`string`) The directory from where Hugo reads data files. Default is `data`. {{% module-mounts-note %}}
+
+###### defaultContentLanguage
+
+(`string`) Content without language indicator will default to this language. Default is `en`.
+
+###### defaultContentLanguageInSubdir
+
+(`bool`) Render the default content language in subdir, e.g. `content/en/`. The site root `/` will then redirect to `/en/`. Default is `false`.
+
+###### disableAliases
+
+(`bool`) Will disable generation of alias redirects. Note that even if `disableAliases` is set, the aliases themselves are preserved on the page. The motivation with this is to be able to generate 301 redirects in an `.htaccess`, a Netlify `_redirects` file or similar using a custom output format. Default is `false`.
+
+###### disableHugoGeneratorInject
+
+(`bool`) Hugo will, by default, inject a generator meta tag in the HTML head on the _home page only_. You can turn it off, but we would really appreciate if you don't, as this is a good way to watch Hugo's popularity on the rise. Default is `false`.
+
+###### disableKinds
+
+(`string slice`) Disable rendering of the specified page [kinds], any of `404`, `home`, `page`, `robotstxt`, `rss`, `section`, `sitemap`, `taxonomy`, or `term`.
+
+[kinds]: /getting-started/glossary/#page-kind
+
+###### disableLiveReload
+
+(`bool`) Disable automatic live reloading of browser window. Default is `false`.
+
+###### disablePathToLower
+
+(`bool`) Do not convert the url/path to lowercase. Default is `false`.
+
+###### enableEmoji
+
+(`bool`) Enable Emoji emoticons support for page content; see the [emoji shortcode quick reference guide](/quick-reference/emojis/). Default is `false`.
+
+###### enableGitInfo
+
+(`bool`) Enable `.GitInfo` object for each page (if the Hugo site is versioned by Git). This will then update the `Lastmod` parameter for each page using the last git commit date for that content file. Default is `false`.
+
+###### enableMissingTranslationPlaceholders
+
+(`bool`) Show a placeholder instead of the default value or an empty string if a translation is missing. Default is `false`.
+
+###### enableRobotsTXT
+
+(`bool`) Enable generation of `robots.txt` file. Default is `false`.
+
+###### frontmatter
+
+See [Front matter Configuration](#configure-front-matter).
+
+###### hasCJKLanguage
+
+(`bool`) If true, auto-detect Chinese/Japanese/Korean Languages in the content. This will make `.Summary` and `.WordCount` behave correctly for CJK languages. Default is `false`.
+
+###### imaging
+
+See [image processing configuration](/content-management/image-processing/#imaging-configuration).
+
+###### languageCode
+
+(`string`) A language tag as defined by [RFC 5646](https://datatracker.ietf.org/doc/html/rfc5646). This value is used to populate:
+
+- The `<language>` element in the embedded [RSS template]({{% eturl rss %}})
+- The `lang` attribute of the `<html>` element in the embedded [alias template]({{% eturl alias %}})
+- The `og:locale` `meta` element in the embedded [Open Graph template]({{% eturl opengraph %}})
+
+When present in the root of the configuration, this value is ignored if one or more language keys exists. Please specify this value independently for each language key.
+
+###### languages
+
+See [Configure Languages](/content-management/multilingual/#configure-languages).
+
+###### disableLanguages
+
+See [Disable a Language](/content-management/multilingual/#disable-a-language)
+
+###### markup
+
+See [Configure Markup](/getting-started/configuration-markup).
+
+###### mediaTypes
+
+See [Configure Media Types](/templates/output-formats/#media-types).
+
+###### menus
+
+See [Menus](/content-management/menus/#define-in-site-configuration).
+
+###### minify
+
+See [Configure Minify](#configure-minify).
+
+###### module
+
+Module configuration see [module configuration](/hugo-modules/configuration/).
+
+###### newContentEditor
+
+(`string`) The editor to use when creating new content.
+
+###### noChmod
+
+(`bool`) Don't sync permission mode of files. Default is `false`.
+
+###### noTimes
+
+(`bool`) Don't sync modification time of files. Default is `false`.
+
+###### outputFormats
+
+See [custom output formats].
+
- (`int`) Default number of elements per page in [pagination](/templates/pagination/). Default is `10`.
-
- ###### paginatePath
-
- (`string`) The path element used during pagination (`https://example.org/page/2`). Default is `page`.
++###### pagination
+
- Default [sitemap configuration](/templates/sitemap-template/#configuration).
++See [configure pagination](/templates/pagination/#configuration).
+
+###### permalinks
+
+See [Content Management](/content-management/urls/#permalinks).
+
+###### pluralizeListTitles
+
+(`bool`) Whether to pluralize automatic list titles. Applicable to section pages. Default is `true`.
+
+###### publishDir
+
+(`string`) The directory to where Hugo will write the final static site (the HTML files etc.). Default is `public`.
+
+###### refLinksErrorLevel
+
+(`string`) When using `ref` or `relref` to resolve page links and a link cannot be resolved, it will be logged with this log level. Valid values are `ERROR` (default) or `WARNING`. Any `ERROR` will fail the build (`exit -1`). Default is `ERROR`.
+
+###### refLinksNotFoundURL
+
+(`string`) URL to be used as a placeholder when a page reference cannot be found in `ref` or `relref`. Is used as-is.
+
+###### related
+
+See [Related Content](/content-management/related/#configure-related-content).
+
+###### relativeURLs
+
+(`bool`) See [details](/content-management/urls/#relative-urls) before enabling this feature. Default is `false`.
+
+###### renderSegments
+
+{{< new-in 0.124.0 >}}
+
+(`string slice`) A list of segments to render. If not set, everything will be rendered. This is more commonly set in a CLI flag, e.g. `hugo --renderSegments segment1,segment2`. The segment names must match the names in the [segments](#configure-segments) configuration.
+
+###### removePathAccents
+
+(`bool`) Removes [non-spacing marks](https://www.compart.com/en/unicode/category/Mn) from [composite characters](https://en.wikipedia.org/wiki/Precomposed_character) in content paths. Default is `false`.
+
+```text
+content/post/hügó.md → https://example.org/post/hugo/
+```
+
+###### sectionPagesMenu
+
+See [Menus](/content-management/menus/#define-automatically).
+
+###### security
+
+See [Security Policy](/about/security/#security-policy).
+
+###### segments
+
+See [Segments](#configure-segments).
+
+###### sitemap
+
-
++Default [sitemap configuration](/templates/sitemap/#configuration).
+
+###### summaryLength
+
+(`int`) Applicable to automatic summaries, the approximate number of words to render when calling the [`Summary`] method on a `Page` object. Default is `70`.
+
+[`Summary`]: /methods/page/summary/
+
+###### taxonomies
+
+See [Configure Taxonomies](/content-management/taxonomies#configure-taxonomies).
+
+###### theme
+
+See [module configuration](/hugo-modules/configuration/#module-configuration-imports) for how to import a theme.
+
+###### themesDir
+
+(`string`) The directory where Hugo reads the themes from. Default is `themes`.
+
+###### timeout
+
+(`string`) Timeout for generating page contents, specified as a [duration](https://pkg.go.dev/time#Duration) or in seconds. *Note:* this is used to bail out of recursive content generation. You might need to raise this limit if your pages are slow to generate (e.g., because they require large image processing or depend on remote contents). Default is `30s`.
+
+###### timeZone
+
+(`string`) The time zone (or location), e.g. `Europe/Oslo`, used to parse front matter dates without such information and in the [`time`] function. The list of valid values may be system dependent, but should include `UTC`, `Local`, and any location in the [IANA Time Zone database](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones).
+
+###### title
+
+(`string`) Site title.
+
+###### titleCaseStyle
+
+(`string`) Default is `ap`. See [Configure Title Case](#configure-title-case).
+
+###### uglyURLs
+
+(`bool`) When enabled, creates URL of the form `/filename.html` instead of `/filename/`. Default is `false`.
+
+###### watch
+
+(`bool`) Watch filesystem for changes and recreate as needed. Default is `false`.
+
+{{% note %}}
+If you are developing your site on a \*nix machine, here is a handy shortcut for finding a configuration option from the command line:
+```txt
+cd ~/sites/yourhugosite
+hugo config | grep emoji
+```
+
+which shows output like
+
+```txt
+enableemoji: true
+```
+{{% /note %}}
+
+## Configure build
+
+The `build` configuration section contains global build-related configuration options.
+
+{{< code-toggle config=build />}}
+
+buildStats {{< new-in 0.115.1 >}}
+: When enabled, creates a `hugo_stats.json` file in the root of your project. This file contains arrays of the `class` attributes, `id` attributes, and tags of every HTML element within your published site. Use this file as data source when [removing unused CSS] from your site. This process is also known as pruning, purging, or tree shaking.
+
+[removing unused CSS]: /hugo-pipes/postprocess/#css-purging-with-postcss
+
+Exclude `class` attributes, `id` attributes, or tags from `hugo_stats.json` with the `disableClasses`, `disableIDs`, and `disableTags` keys.
+
+{{% note %}}
+With v0.115.0 and earlier this feature was enabled by setting `writeStats` to `true`. Although still functional, the `writeStats` key will be deprecated in a future release.
+
+Given that CSS purging is typically limited to production builds, place the `buildStats` object below [config/production].
+
+[config/production]: /getting-started/configuration/#configuration-directory
+
+Built for speed, there may be "false positive" detections (e.g., HTML elements that are not HTML elements) while parsing the published site. These "false positives" are infrequent and inconsequential.
+{{% /note %}}
+
+Due to the nature of partial server builds, new HTML entities are added while the server is running, but old values will not be removed until you restart the server or run a regular `hugo` build.
+
+cachebusters
+: See [Configure Cache Busters](#configure-cache-busters)
+
+noJSConfigInAssets
+: Turn off writing a `jsconfig.json` into your `/assets` folder with mapping of imports from running [js.Build](/hugo-pipes/js). This file is intended to help with intellisense/navigation inside code editors such as [VS Code](https://code.visualstudio.com/). Note that if you do not use `js.Build`, no file will be written.
+
+useResourceCacheWhen
+: When to use the cached resources in `/resources/_gen` for PostCSS and ToCSS. Valid values are `never`, `always` and `fallback`. The last value means that the cache will be tried if PostCSS/extended version is not available.
+
+## Configure cache busters
+
+{{< new-in 0.112.0 >}}
+
+The `build.cachebusters` configuration option was added to support development using Tailwind 3.x's JIT compiler where a `build` configuration may look like this:
+
+{{< code-toggle file=hugo >}}
+[build]
+ [build.buildStats]
+ enable = true
+ [[build.cachebusters]]
+ source = "assets/watching/hugo_stats\\.json"
+ target = "styles\\.css"
+ [[build.cachebusters]]
+ source = "(postcss|tailwind)\\.config\\.js"
+ target = "css"
+ [[build.cachebusters]]
+ source = "assets/.*\\.(js|ts|jsx|tsx)"
+ target = "js"
+ [[build.cachebusters]]
+ source = "assets/.*\\.(.*)$"
+ target = "$1"
+{{< /code-toggle >}}
+
+When `buildStats` {{< new-in 0.115.1 >}} is enabled, Hugo writes a `hugo_stats.json` file on each build with HTML classes etc. that's used in the rendered output. Changes to this file will trigger a rebuild of the `styles.css` file. You also need to add `hugo_stats.json` to Hugo's server watcher. See [Hugo Starter Tailwind Basic](https://github.com/bep/hugo-starter-tailwind-basic) for a running example.
+
+source
+: A regexp matching file(s) relative to one of the virtual component directories in Hugo, typically `assets/...`.
+
+target
+: A regexp matching the keys in the resource cache that should be expired when `source` changes. You can use the matching regexp groups from `source` in the expression, e.g. `$1`.
+
+## Configure server
+
+This is only relevant when running `hugo server`, and it allows to set HTTP headers during development, which allows you to test out your Content Security Policy and similar. The configuration format matches [Netlify's](https://docs.netlify.com/routing/headers/#syntax-for-the-netlify-configuration-file) with slightly more powerful [Glob matching](https://github.com/gobwas/glob):
+
+{{< code-toggle file=hugo >}}
+[server]
+[[server.headers]]
+for = "/**"
+
+[server.headers.values]
+X-Frame-Options = "DENY"
+X-XSS-Protection = "1; mode=block"
+X-Content-Type-Options = "nosniff"
+Referrer-Policy = "strict-origin-when-cross-origin"
+Content-Security-Policy = "script-src localhost:1313"
+{{< /code-toggle >}}
+
+Since this is "development only", it may make sense to put it below the `development` environment:
+
+{{< code-toggle file=config/development/server >}}
+[[headers]]
+for = "/**"
+
+[headers.values]
+X-Frame-Options = "DENY"
+X-XSS-Protection = "1; mode=block"
+X-Content-Type-Options = "nosniff"
+Referrer-Policy = "strict-origin-when-cross-origin"
+Content-Security-Policy = "script-src localhost:1313"
+{{< /code-toggle >}}
+
+You can also specify simple redirects rules for the server. The syntax is again similar to Netlify's.
+
+Note that a `status` code of 200 will trigger a [URL rewrite](https://docs.netlify.com/routing/redirects/rewrites-proxies/), which is what you want in SPA situations, e.g:
+
+{{< code-toggle file=config/development/server >}}
+[[redirects]]
+from = "/myspa/**"
+to = "/myspa/"
+status = 200
+force = false
+{{< /code-toggle >}}
+
+Setting `force=true` will make a redirect even if there is existing content in the path. Note that before Hugo 0.76 `force` was the default behavior, but this is inline with how Netlify does it.
+
+## 404 server error page {#_404-server-error-page}
+
+{{< new-in 0.103.0 >}}
+
+Hugo will, by default, render all 404 errors when running `hugo server` with the `404.html` template. Note that if you have already added one or more redirects to your [server configuration](#configure-server), you need to add the 404 redirect explicitly, e.g:
+
+{{< code-toggle file=config/development/server >}}
+[[redirects]]
+from = "/**"
+to = "/404.html"
+status = 404
+{{< /code-toggle >}}
+
+With a multilingual site, define the redirect for the default content language last:
+
+{{< code-toggle file=config/development/server >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = false
+[[redirects]]
+from = '/fr/**'
+to = '/fr/404.html'
+status = 404
+
+[[redirects]] # Default language must be last.
+from = '/**'
+to = '/404.html'
+status = 404
+{{< /code-toggle >}}
+
+If you are serving the default content language from a subdirectory:
+
+{{< code-toggle file=config/development/server >}}
+defaultContentLanguage = 'en'
+defaultContentLanguageInSubdir = true
+[[redirects]]
+from = '/fr/**'
+to = '/fr/404.html'
+status = 404
+
+[[redirects]] # Default language must be last.
+from = '/**'
+to = '/en/404.html'
+status = 404
+{{< /code-toggle >}}
+
+
+## Configure title case
+
+By default, Hugo follows the capitalization rules published in the [Associated Press Stylebook] when creating automatic section titles, and when transforming strings with the [`strings.Title`] function.
+
+Change this behavior by setting `titleCaseStyle` in your site configuration to any of the values below:
+
+ap
+: Use the capitalization rules published in the [Associated Press Stylebook].
+
+chicago
+: Use the capitalization rules published in the [Chicago Manual of Style].
+
+go
+: Capitalize the first letter of every word.
+
+firstupper
+: Capitalize the first letter of the first word.
+
+none
+: Disable transformation of automatic section titles, and disable the transformation performed by the `strings.Title` function. This is useful if you would prefer to manually capitalize section titles as needed, and to bypass opinionated theme usage of the `strings.Title` function.
+
+[`strings.Title`]: /functions/strings/title/
+[Associated Press Stylebook]: https://www.apstylebook.com/
+[Chicago Manual of Style]: https://www.chicagomanualofstyle.org/home.html
+[site configuration]: /getting-started/configuration/#configure-title-case
+
+## Configuration environment variables
+
+DART_SASS_BINARY
+: (`string`) The absolute path to the Dart Sass executable. By default, Hugo searches for the executable in each of the paths in the `PATH` environment variable.
+
+HUGO_ENVIRONMENT
+: (`string`) Overrides the default [environment], typically one of `development`, `staging`, or `production`.
+
+[environment]: /getting-started/glossary/#environment
+
+HUGO_FILE_LOG_FORMAT
+: (`string`) A format string for the file path, line number, and column number displayed when reporting errors, or when calling the `Position` method from a shortcode or Markdown render hook. Valid tokens are `:file`, `:line`, and `:col`. Default is `:file::line::col`.
+
+{{< new-in 0.123.0 >}}
+
+HUGO_MEMORYLIMIT
+: (`int`) The maximum amount of system memory, in gigabytes, that Hugo can use while rendering your site. Default is 25% of total system memory.
+
+HUGO_NUMWORKERMULTIPLIER
+: (`int`) The number of workers used in parallel processing. Default is the number of logical CPUs.
+
+## Configure with environment variables
+
+In addition to the 3 configuration options already mentioned, configuration key-values can be defined through operating system environment variables.
+
+For example, the following command will effectively set a website's title on Unix-like systems:
+
+```txt
+$ env HUGO_TITLE="Some Title" hugo
+```
+
+This is really useful if you use a service such as Netlify to deploy your site. Look at the Hugo docs [Netlify configuration file](https://github.com/gohugoio/hugoDocs/blob/master/netlify.toml) for an example.
+
+{{% note %}}
+Names must be prefixed with `HUGO_` and the configuration key must be set in uppercase when setting operating system environment variables.
+
+To set configuration parameters, prefix the name with `HUGO_PARAMS_`
+{{% /note %}}
+
+If you are using snake_cased variable names, the above will not work. Hugo determines the delimiter to use by the first character after `HUGO`. This allows you to define environment variables on the form `HUGOxPARAMSxAPI_KEY=abcdefgh`, using any [allowed](https://stackoverflow.com/questions/2821043/allowed-characters-in-linux-environment-variable-names#:~:text=So%20names%20may%20contain%20any,not%20begin%20with%20a%20digit.) delimiter.
+
+## Ignore content and data files when rendering
+
+{{% note %}}
+This works, but we recommend you use the newer and more powerful [includeFiles and excludeFiles](/hugo-modules/configuration/#module-configuration-mounts) mount options.
+{{% /note %}}
+
+To exclude specific files from the `content`, `data`, and `i18n` directories when rendering your site, set `ignoreFiles` to one or more regular expressions to match against the absolute file path.
+
+To ignore files ending with `.foo` or `.boo`:
+
+{{< code-toggle file=hugo >}}
+ignoreFiles = ['\.foo$', '\.boo$']
+{{< /code-toggle >}}
+
+To ignore a file using the absolute file path:
+
+{{< code-toggle file=hugo >}}
+ignoreFiles = ['^/home/user/project/content/test\.md$']
+{{< /code-toggle >}}
+
+## Configure front matter
+
+### Configure dates
+
+Dates are important in Hugo, and you can configure how Hugo assigns dates to your content pages. You do this by adding a `frontmatter` section to your `hugo.toml`.
+
+The default configuration is:
+
+{{< code-toggle config=frontmatter />}}
+
+If you, as an example, have a non-standard date parameter in some of your content, you can override the setting for `date`:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+date = ["myDate", ":default"]
+{{< /code-toggle >}}
+
+The `:default` is a shortcut to the default settings. The above will set `.Date` to the date value in `myDate` if present, if not we will look in `date`,`publishDate`, `lastmod` and pick the first valid date.
+
+In the list to the right, values starting with ":" are date handlers with a special meaning (see below). The others are just names of date parameters (case insensitive) in your front matter configuration. Also note that Hugo have some built-in aliases to the above: `lastmod` => `modified`, `publishDate` => `pubdate`, `published` and `expiryDate` => `unpublishdate`. With that, as an example, using `pubDate` as a date in front matter, will, by default, be assigned to `.PublishDate`.
+
+The special date handlers are:
+
+`:fileModTime`
+: Fetches the date from the content file's last modification timestamp.
+
+An example:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+lastmod = ["lastmod", ":fileModTime", ":default"]
+{{< /code-toggle >}}
+
+The above will try first to extract the value for `.Lastmod` starting with the `lastmod` front matter parameter, then the content file's modification timestamp. The last, `:default` should not be needed here, but Hugo will finally look for a valid date in `:git`, `date` and then `publishDate`.
+
+`:filename`
+: Fetches the date from the content file's file name. For example, `2018-02-22-mypage.md` will extract the date `2018-02-22`. Also, if `slug` is not set, `mypage` will be used as the value for `.Slug`.
+
+An example:
+
+{{< code-toggle file=hugo >}}
+[frontmatter]
+date = [":filename", ":default"]
+{{< /code-toggle >}}
+
+The above will try first to extract the value for `.Date` from the file name, then it will look in front matter parameters `date`, `publishDate` and lastly `lastmod`.
+
+`:git`
+: This is the Git author date for the last revision of this content file. This will only be set if `--enableGitInfo` is set or `enableGitInfo = true` is set in site configuration.
+
+## Configure minify
+
+See the [tdewolff/minify] project page for details.
+
+[tdewolff/minify]: https://github.com/tdewolff/minify
+
+Default configuration:
+
+{{< code-toggle config=minify />}}
+
+## Configure file caches
+
+Since Hugo 0.52 you can configure more than just the `cacheDir`. This is the default configuration:
+
+{{< code-toggle config=caches />}}
+
+You can override any of these cache settings in your own `hugo.toml`.
+
+### The keywords explained
+
+cacheDir
+: (`string`) See [Configure cacheDir](#configure-cachedir).
+
+project
+: (`string`) The base directory name of the current Hugo project. This means that, in its default setting, every project will have separated file caches, which means that when you do `hugo --gc` you will not touch files related to other Hugo projects running on the same PC.
+
+resourceDir
+: (`string`) This is the value of the `resourceDir` configuration option.
+
+maxAge
+: (`string`) This is the duration before a cache entry will be evicted, -1 means forever and 0 effectively turns that particular cache off. Uses Go's `time.Duration`, so valid values are `"10s"` (10 seconds), `"10m"` (10 minutes) and `"10h"` (10 hours).
+
+dir
+: (`string`) The absolute path to where the files for this cache will be stored. Allowed starting placeholders are `:cacheDir` and `:resourceDir` (see above).
+
+## Configure cacheDir
+
+This is the directory where Hugo by default will store its file caches. See [Configure File Caches](#configure-file-caches).
+
+This can be set using the `cacheDir` config option or via the OS environment variable `HUGO_CACHEDIR`.
+
+If this is not set, Hugo will use, in order of preference:
+
+1. If running on Netlify: `/opt/build/cache/hugo_cache/`. This means that if you run your builds on Netlify, all caches configured with `:cacheDir` will be saved and restored on the next build. For other CI vendors, please read their documentation. For an CircleCI example, see [this configuration](https://github.com/bep/hugo-sass-test/blob/6c3960a8f4b90e8938228688bc49bdcdd6b2d99e/.circleci/config.yml).
+1. In a `hugo_cache` directory below the OS user cache directory as defined by Go's [os.UserCacheDir](https://pkg.go.dev/os#UserCacheDir). On Unix systems, this is `$XDG_CACHE_HOME` as specified by [basedir-spec-latest](https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html) if non-empty, else `$HOME/.cache`. On MacOS, this is `$HOME/Library/Caches`. On Windows, this is`%LocalAppData%`. On Plan 9, this is `$home/lib/cache`. {{< new-in 0.116.0 >}}
+1. In a `hugo_cache_$USER` directory below the OS temp dir.
+
+If you want to know the current value of `cacheDir`, you can run `hugo config`, e.g: `hugo config | grep cachedir`.
+
+[`time`]: /functions/time/astime/
+[`.Site.Params`]: /method/site/params/
+[directory structure]: /getting-started/directory-structure/
+[lookup order]: /templates/lookup-order/
+[custom output formats]: /templates/output-formats/
+[templates]: /templates/
+[static-files]: /content-management/static-files/
+
+
+## Configure HTTP cache
+
+{{< new-in 0.127.0 >}}
+
+Note that this configuration is currently only relevant when using the [resources.GetRemote] function.
+
+The caching in Hugo is layered:
+
+```goat {.w-40}
+ .-----------.
+| dynacache |
+ '-----+-----'
+ |
+ v
+ .----------.
+| HTTP cache |
+ '-----+----'
+ |
+ v
+ .----------.
+| file cache |
+ '-----+----'
+```
+
+Dynacache
+: A in memory LRU cache that gets evicted on changes, [Cache Buster](#configure-cache-busters) matches and in low memory situations.
+
+HTTP Cache
+: Enables HTTP cache behavior (RFC 9111) for remote resources. This works best for resources with properly set up HTTP cache headers. The HTTP cache uses the [file cache] to store and serve cached resources.
+
+File Cache
+: See [file cache].
+
+The default HTTP cache disables everything:
+
+{{< code-toggle config=HTTPCache />}}
+
+caching
+: Enabled RFC 9111 cache behavior _for_ a configured set of resources. Stale resources will be refreshed from the [file cache] even if their configured TTL isn't reached.
+
+polling
+: Enables polling _for_ a set of resources. Note that you can enable polling for resources even if HTTP caching is disabled. This setting is only used when in watch mode (e.g. `hugo server`). When a changed resource is detected, that change triggers a rebuild of pages using that resource.
+
+[resources.GetRemote]: /functions/resources/getremote/
+[file cache]: #configure-file-caches
+
+## Configure segments
+
+{{< new-in 0.124.0 >}}
+
+{{% note %}}
+The `segments` configuration is currently only used to configure partitioned rendering.
+This feature is only about what gets rendered when, Hugo's entire object graph (sites and pages) is
+always available.
+{{% /note %}}
+
+* Each segment consists of zero or more `exclude` filters and zero or more `include` filters.
+* Each filter consists of one or more field Glob matchers.
+* Each filter in a section (`exclude` or `include`) is ORed together, each matcher in a filter is ANDed together.
+
+The fields that can be used in the filters are:
+
+path
+: The logical page [path].
+
+lang
+: The [page language].
+
+kind
+: The [kind] of the page.
+
+output
+: The [output format] of the page.
+
+It is recommended to put coarse grained filters (e.g. for language and output format) in the excludes section, e.g.:
+
+
+{{< code-toggle file=hugo >}}
+[segments.segment1]
+ [[segments.segment1.excludes]]
+ lang = "n*"
+ [[segments.segment1.excludes]]
+ lang = "en"
+ output = "rss"
+ [[segments.segment1.includes]]
+ kind = "{home,term,taxonomy}"
+ [[segments.segment1.includes]]
+ path = "{/docs,/docs/**}"
+{{< /code-toggle >}}
+
+With the above you can render only the pages in `segment1` by configuring the [renderSegments](#rendersegments) or setting the `--renderSegments` flag:
+
+```bash
+hugo --renderSegments segment1
+```
+
+Multiple segments can be configured, and the `--renderSegments` flag can take a comma separated list of segments.
+
+Some use cases for this feature:
+
+* Splitting builds of big sites.
+* Enable faster builds during development by only rendering a subset of the site.
+* Partial rebuilds, e.g. render the home page and the "news section" every hour, render the entire site once a week.
+* Render only e.g. the JSON output format to push to e.g. a search index.
+
+[path]: /methods/page/path/
+[page language]: /methods/page/language/
+[kind]: /getting-started/glossary/#page-kind
+[output format]: /getting-started/glossary/#output-format
+[type]: /getting-started/glossary/#content-type
--- /dev/null
- A template called with the `.Page.Render` method. See [details](/templates/views/).
+---
+title: Glossary of terms
+description: Terms commonly used throughout the documentation.
+categories: [getting started]
+keywords: [glossary]
+menu:
+ docs:
+ parent: getting-started
+ weight: 60
+weight: 60
+# Use level 6 headings for each term in the glossary.
+---
+
+[A](#action)
+[B](#bool)
+[C](#cache)
+[D](#default-sort-order)
+[E](#environment)
+[F](#field)
+[G](#global-resource)
+[H](#headless-bundle)
+[I](#identifier)
+[K](#kind)
+[L](#layout)
+[M](#map)
+[N](#node)
+[O](#object)
+[P](#page-bundle)
+[R](#regular-page)
+[S](#scalar)
+[T](#taxonomic-weight)
+[U](#unmarshal)
+[V](#variable)
+[W](#walk)
+[Z](#zero-time)
+
+###### action
+
+See [template action](#template-action).
+
+###### archetype
+
+A template for new content. See [details](/content-management/archetypes/).
+
+###### argument
+
+A [scalar](#scalar), [array](#array), [slice](#slice), [map](#map), or [object](#object) passed to a [function](#function), [method](#method), or [shortcode](#shortcode).
+
+###### array
+
+A numbered sequence of elements. Unlike Go's [slice](#slice) data type, an array has a fixed length. [Elements](#element) within an array can be [scalars](#scalar), slices, [maps](#map), pages, or other arrays. See the [Go documentation](https://go.dev/ref/spec#Array_types) for details.
+
+###### bool
+
+See [boolean](#boolean).
+
+###### boolean
+
+A data type with two possible values, either `true` or `false`.
+
+###### branch bundle
+
+A directory that contains an _index.md file and zero or more [resources](#resource). Analogous to a physical branch, a branch bundle may have descendants including leaf bundles and other branch bundles. Top level directories with or without _index.md files are also branch bundles. This includes the home page. See [details](/content-management/page-bundles/).
+
+###### build
+
+To generate a static site that includes HTML files and assets such as images, CSS, and JavaScript. The build process includes rendering and resource transformations.
+
+###### bundle
+
+See [page bundle](#page-bundle).
+
+###### cache
+
+A software component that stores data so that future requests for the same data are faster.
+
+###### chain
+
+Within a template, to connect one or more [identifiers](#identifier) with a dot. An identifier can represent a method, object, or field. For example, `.Site.Params.author.name` or `.Date.UTC.Hour`.
+
+###### CJK
+
+A collective term for the Chinese, Japanese, and Korean languages. See [details](https://en.wikipedia.org/wiki/CJK_characters).
+
+###### CLI
+
+Command line interface.
+
+###### collection
+
+An [array](#array), [slice](#slice), or [map](#map).
+
+###### content adapter
+
+A template that dynamically creates pages when building a site. For example, use a content adapter to create pages from a remote data source such as JSON, TOML, YAML, or XML. See [details](/content-management/content-adapters/).
+
+###### content format
+
+A markup language for creating content. Typically Markdown, but may also be HTML, AsciiDoc, Org, Pandoc, or reStructuredText. See [details](/content-management/formats/).
+
+###### content type
+
+A classification of content inferred from the top-level directory name or the `type` set in [front matter](#front-matter). Pages in the root of the content directory, including the home page, are of type "page". Accessed via `.Page.Type` in [templates](#template). See [details](/content-management/types/).
+
+###### content view
+
-
++A template called with the `.Page.Render` method. See [details](/templates/content-view/).
+
+###### context
+
+Represented by a dot "." within a [template action](#template-action), context is the current location in a data structure. For example, while iterating over a [collection](#collection) of pages, the context within each iteration is the page's data structure. The context received by each template depends on template type and/or how it was called. See [details](/templates/introduction/#context).
+
+###### default sort order
+
+The default sort order for page collections. Hugo sorts by [weight](#weight), then by date (descending), then by link title, and then by file path.
+
+###### element
+
+A member of a slice or array.
+
+###### environment
+
+Typically one of `development`, `staging`, or `production`, each environment may exhibit different behavior depending on configuration and template logic. For example, in a production environment you might minify and fingerprint CSS, but that probably doesn't make sense in a development environment.
+
+When running the built-in development server with the `hugo server` command, the environment is set to `development`. When building your site with the `hugo` command, the environment is set to `production`. To override the environment value, use the `--environment` command line flag or the `HUGO_ENVIRONMENT` environment variable.
+
+To determine the current environment within a template, use the [`hugo.Environment`] function.
+
+[`hugo.Environment`]: /functions/hugo/environment/
+
+###### field
+
+A predefined key-value pair in front matter such as `date` or `title`. See also [parameter](#parameter).
+
- Created by invoking the [`Alphabetical`] or [`ByCount`] method on a [taxonomy object](#taxonomy-object), which is a [map](#map), an ordered taxonomy is a [slice](#slice), where each element is an object that contains the [term](#term) and a slice of its [weighted pages](#weighted-page).
+###### flag
+
+An option passed to a command-line program, beginning with one or two hyphens. See [details](/commands/hugo/).
+
+###### float
+
+See [floating point](#floating-point).
+
+###### floating point
+
+A numeric data type with a fractional component. For example, `3.14159`.
+
+###### fragment
+
+The final segment of a URL, beginning with a hash (`#`) mark, that references an `id` attribute of an HTML element on the page.
+
+###### front matter
+
+Metadata at the beginning of each content page, separated from the content by format-specific delimiters. See [details](/content-management/front-matter/).
+
+###### function
+
+Used within a [template action](#template-action), a function takes one or more [arguments](#argument) and returns a value. Unlike [methods](#method), functions are not associated with an [object](#object). See [details](/functions/).
+
+###### global resource
+
+A file within the assets directory, or within any directory [mounted](/hugo-modules/configuration/#module-configuration-mounts) to the assets directory. Capture one or more global resources using the [`resources.Get`], [`resources.GetMatch`], [`resources.Match`], or [`resources.ByType`] functions.
+
+[`resources.Get`]: /functions/resources/get/
+[`resources.GetMatch`]: /functions/resources/getmatch/
+[`resources.Match`]: /functions/resources/match/
+[`resources.ByType`]: /functions/resources/byType/
+
+###### headless bundle
+
+An unpublished leaf or branch bundle whose content and resources you can include in other pages. See [build options](/content-management/build-options/).
+
+###### identifier
+
+A string that represents a variable, method, object, or field. It must conform to Go's [language specification](https://go.dev/ref/spec#Identifiers), beginning with a letter or underscore, followed by zero or more letters, digits, or underscores.
+
+###### int
+
+See [integer](#integer).
+
+###### integer
+
+A numeric data type without a fractional component. For example, `42`.
+
+###### internationalization
+
+Software design and development efforts that enable [localization](#localization). See the [W3C definition](https://www.w3.org/International/questions/qa-i18n). Abbreviated i18n.
+
+###### interval
+
+An [interval](https://en.wikipedia.org/wiki/Interval_(mathematics)) is a range of numbers between two endpoints: closed, open, or half-open.
+
+- A _closed_ interval, denoted by brackets, includes its endpoints. For example, [0, 1] is the interval where `0 <= x <= 1`.
+
+- An _open_ interval, denoted by parentheses, excludes its endpoints. For example, (0, 1) is the interval where `0 < x < 1`.
+
+- A _half-open_ interval includes only one of its endpoints. For example, (0, 1] is the _left-open_ interval where `0 < x <= 1`, while [0, 1) is the _right-open_ interval where `0 <= x < 1`.
+
+###### kind
+
+See [page kind](#page-kind).
+
+###### layout
+
+See [template](#template).
+
+###### leaf bundle
+
+A directory that contains an index.md file and zero or more [resources](#resource). Analogous to a physical leaf, a leaf bundle is at the end of a branch. It has no descendants. See [details](/content-management/page-bundles/).
+
+###### list page
+
+Any [page kind](#page-kind) that receives a page [collection](#collection) in [context](#context). This includes the home page, [section pages](#section-page), [taxonomy pages](#taxonomy-page), and [term pages](#term-page).
+
++###### list template
++
++Any template that renders a [list page](#list-page). This includes [home](/templates/types/#home), [section](/templates/types/#section), [taxonomy](/templates/types/#taxonomy), and [term](/templates/types/#term) templates.
++
+###### localization
+
+Adaptation of a site to meet language and regional requirements. This includes translations, language-specific media, date and currency formats, etc. See [details](/content-management/multilingual/) and the [W3C definition](https://www.w3.org/International/questions/qa-i18n). Abbreviated l10n.
+
+###### logical path
+
+{{< new-in 0.123.0 >}}
+
+A page or page resource identifier derived from the file path, excluding its extension and language identifier. This value is neither a file path nor a URL. Starting with a file path relative to the content directory, Hugo determines the logical path by stripping the file extension and language identifier, converting to lower case, then replacing spaces with hyphens. <!-- You may also set this value using the `path` front matter field. --> See [examples](/methods/page/path/#examples).
+
+###### map
+
+An unordered group of elements, each indexed by a unique key. See the [Go documentation](https://go.dev/ref/spec#Map_types) for details.
+
+###### Markdown attribute
+
+A list of attributes, containing one or more key-value pairs, separated by spaces or commas, and wrapped by braces. Apply Markdown attributes to images and block-level elements including blockquotes, fenced code blocks, headings, horizontal rules, lists, paragraphs, and tables. See [details](/getting-started/configuration-markup/#goldmark).
+
+###### marshal
+
+To transform a data structure into a serialized object. For example, transforming a [map](#map) into a JSON string. See [unmarshal](#unmarshal).
+
+###### method
+
+Used within a [template action](#template-action) and associated with an [object](#object), a method takes zero or more [arguments](#argument) and either returns a value or performs an action. For example, `.IsHome` is a method on the `.Page` object which returns `true` if the current page is the home page. See also [function](#function).
+
+###### module
+
+Like a [theme](#theme), a module is a packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translation tables, static files, or configuration settings. A module may serve as the basis for a new site, or to augment an existing site. See [details](/hugo-modules/).
+
+###### node
+
+A class of [page kinds](#page-kind) including `home`, `section`, `taxonomy`, and `term`.
+
+###### noop
+
+An abbreviated form of "no operation", a _noop_ is a statement that does nothing.
+
+###### object
+
+A data structure with or without associated [methods](#method).
+
+###### ordered taxonomy
+
- A slice of page objects.
++Created by invoking the [`Alphabetical`] or [`ByCount`] method on a [`Taxonomy`](#taxonomy-object) object, which is a [map](#map), an ordered taxonomy is a [slice](#slice), where each element is an object that contains the [term](#term) and a slice of its [weighted pages](#weighted-page).
+
+[`Alphabetical`]: /methods/taxonomy/alphabetical/
+[`ByCount`]: /methods/taxonomy/bycount/
+
+###### output format
+
+{{% include "methods/page/_common/output-format-definition.md" %}}
+
+###### page bundle
+
+A directory that encapsulates both content and associated [resources](#resource). There are two types of page bundles: [leaf bundles](#leaf-bundle) and [branch bundles](#branch-bundle). See [details](/content-management/page-bundles/).
+
+###### page collection
+
- Created during [pagination](#pagination), a pager contains a subset of a section list, and navigation links to other pagers.
++A slice of `Page` objects.
+
+###### page kind
+
+A classification of pages, one of `home`, `page`, `section`, `taxonomy`, or `term`. See [details](/methods/page/kind/).
+
+Note that there are also `RSS`, `sitemap`, `robotsTXT`, and `404` page kinds, but these are only available during the rendering of each of these respective page's kind and therefore *not* available in any of the `Pages` collections.
+
+###### page resource
+
+A file within a [page bundle](#page-bundle). Capture one or more page resources using any of the [`Resources`] methods on a `Page` object.
+
+[`Resources`]: /methods/page/resources/#methods
+
+###### pager
+
- To split a [section](#section) list into two or more [pagers](#pager) See [details](/templates/pagination/).
++Created during [pagination](#pagination), a pager contains a subset of a list page and navigation links to other pagers.
+
+###### paginate
+
- The process of [paginating](#paginate) a [section](#section) list.
++To split a list page into two or more subsets.
+
+###### pagination
+
- Defined in front matter and unique to each taxonomy, this [weight](#weight) determines the sort order of page collections contained within a [taxonomy object](#taxonomy-object). See [details](/templates/taxonomy-templates/#assign-weight).
++The process of [paginating](#paginate) a list page. See [details](/templates/pagination/).
++
++###### paginator
++
++A collection of [pagers](#pager).
+
+###### parameter
+
+Typically, a user-defined key-value pair at the site or page level, but may also refer to a configuration setting or an [argument](#argument). See also [field](#field).
+
+###### partial
+
+A [template](#template) called from any other template including [shortcodes](#shortcode), [render hooks](#render-hook), and other partials. A partial either renders something or returns something. A partial can also call itself, for example, to [walk](#walk) a data structure.
+
+###### permalink
+
+The absolute URL of a published resource or a rendered page, including scheme and host.
+
+###### pipe
+
+See [pipeline](#pipeline).
+
+###### pipeline
+
+Within a [template action](#template-action), a pipeline is a possibly chained sequence of values, [function](#function) calls, or [method](#method) calls. Functions and methods in the pipeline may take multiple [arguments](#argument).
+
+A pipeline may be *chained* by separating a sequence of commands with pipeline characters "|". In a chained pipeline, the result of each command is passed as the last argument to the following command. The output of the final command in the pipeline is the value of the pipeline. See the [Go documentation](https://pkg.go.dev/text/template#hdr-Pipelines) for details.
+
+###### publish
+
+See [build](#build).
+
+###### regular page
+
+Content with the "page" [page kind](#page-kind). See also [section page](#section-page).
+
+###### relative permalink
+
+The host-relative URL of a published resource or a rendered page.
+
+###### render hook
+
+A [template](#template) that overrides standard Markdown rendering. See [details](/render-hooks).
+
+###### remote resource
+
+A file on a remote server, accessible via HTTP or HTTPS with the [`resources.GetRemote`](/functions/resources/getremote) function.
+
+###### resource
+
+Any file consumed by the build process to augment or generate content, structure, behavior, or presentation. For example: images, videos, content snippets, CSS, Sass, JavaScript, and data.
+
+Hugo supports three types of resources: [global](#global-resource), [page](#page-resource), and [remote](#remote-resource)
+
+###### resource type
+
+The main type of a resource's [media type]. Content files such as Markdown, HTML, AsciiDoc, Pandoc, reStructuredText, and Emacs Org Mode have resource type `page`. Other resource types include `image`, `video`, etc. Retrieve the resource type using the [`ResourceType`] method on a `Resource` object.
+
+[media type]: /methods/resource/mediatype/
+[`ResourceType`]: /methods/resource/resourcetype/
+
+###### scalar
+
+A single value, one of [string](#string), [integer](#integer), [floating point](#floating-point), or [boolean](#boolean).
+
+###### scratch pad
+
+Conceptually, a [map](#map) with [methods](#method) to set, get, update, and delete values. Attach the data structure to a `Page` object using the [`Scratch`] or [`Store`] methods, or create a locally scoped scratch pad using the [`newScratch`] function.
+
+[`Scratch`]: /methods/page/scratch/
+[`Store`]: /methods/page/store/
+[`newScratch`]: /functions/collections/newscratch/
+
+###### section
+
+A top-level content directory, or any content directory with an _index.md file. A content directory with an _index.md file is also known as a [branch bundle](/getting-started/glossary/#branch-bundle). Section templates receive one or more page [collections](#collection) in [context](#context). See [details](/content-management/sections/).
+
+###### section page
+
+Content with the "section" [page kind](#page-kind). Typically a listing of [regular pages](#regular-page) and/or [section pages](#section-page) within the current [section](#section). See also [regular page](#regular-page).
+
+###### shortcode
+
+A [template](#template) called from within Markdown, taking zero or more [arguments](#argument). See [details](/content-management/shortcodes/).
+
+###### slice
+
+A numbered sequence of elements. Unlike Go's [array](#array) data type, slices are dynamically sized. [Elements](#element) within a slice can be [scalars](#scalar), [arrays](#array), [maps](#map), pages, or other slices. See the [Go documentation](https://go.dev/ref/spec#Slice_types) for details.
+
+###### string
+
+A sequence of bytes. For example, `"What is 6 times 7?"` .
+
+###### string literal (interpreted)
+
+Interpreted string literals are character sequences between double quotes, as in "foo". Within the quotes, any character may appear except a newline and an unescaped double quote. The text between the quotes forms the value of the literal, with backslash escapes interpreted. See [details](https://go.dev/ref/spec#String_literals).
+
+###### string literal (raw)
+
+Raw string literals are character sequences between backticks, as in \`bar\`. Within the backticks, any character may appear except a backtick. Backslashes have no special meaning and the string may contain newlines. Carriage return characters ('\r') inside raw string literals are discarded from the raw string value. See [details](https://go.dev/ref/spec#String_literals).
+
+###### taxonomic weight
+
- Contained within a [taxonomy object](#taxonomy-object), a weighted page is a [map](#map) with two elements: a `Page` object, and its [taxonomic weight](#taxonomic-weight) as defined in front matter. Access the elements using the `Page` and `Weight` keys.
++Defined in front matter and unique to each taxonomy, this [weight](#weight) determines the sort order of page collections contained within a [`Taxonomy`](#taxonomy-object) object. See [details](/content-management/taxonomies/#order-taxonomies).
+
+###### taxonomy
+
+A group of related [terms](#term) used to classify content. For example, a "colors" taxonomy might include the terms "red", "green", and "blue". See [details](/content-management/taxonomies/).
+
+###### taxonomy object
+
+A [map](#map) of [terms](#term) and the [weighted pages](#weighted-page) associated with each term.
+
+###### taxonomy page
+
+Content with the "taxonomy" [page kind](#page-kind). Typically a listing of [terms](#term) within a given [taxonomy](#taxonomy).
+
+###### template
+
+A file with [template actions](#template-action), located within the layouts directory of a project, theme, or module. See [details](/templates/).
+
+###### template action
+
+A data evaluation or control structure within a [template](#template), delimited by "{{" and "}}". See the [Go documentation](https://pkg.go.dev/text/template#hdr-Actions) for details.
+
+###### term
+
+A member of a [taxonomy](#taxonomy), used to classify content. See [details](/content-management/taxonomies/).
+
+###### term page
+
+Content with the "term" [page kind](#page-kind). Typically a listing of [regular pages](#regular-page) and [section pages](#section-page) with a given [term](#term).
+
+###### theme
+
+A packaged combination of [archetypes](#archetype), assets, content, data, [templates](#template), translation tables, static files, or configuration settings. A theme may serve as the basis for a new site, or to augment an existing site. See also [module](#module).
+
+###### token
+
+An identifier within a format string, beginning with a colon and replaced with a value when rendered. For example, use tokens in format strings for both [permalinks](/content-management/urls/#permalinks) and [dates](/functions/time/format/#localization).
+
+###### type
+
+See [content type](#content-type).
+
+###### unmarshal
+
+To transform a serialized object into a data structure. For example, transforming a JSON file into a [map](#map) that you can access within a template. See [marshal](#marshal).
+
+###### variable
+
+A user-defined [identifier](#identifier) prepended with a `$` symbol, representing a value of any data type, initialized or assigned within a [template action](#template-action). For example, `$foo` and `$bar` are variables.
+
+###### walk
+
+To recursively traverse a nested data structure. For example, rendering a multilevel menu.
+
+###### weight
+
+Used to position an element within a collection sorted by weight. Assign weights using non-zero integers. Lighter items float to the top, while heavier items sink to the bottom. Unweighted or zero-weighted elements are placed at the end of the collection. Weights are typically assigned to pages, menu entries, languages, and output formats.
+
+###### weighted page
+
++Contained within a [`Taxonomy`](#taxonomy-object) object, a weighted page is a [map](#map) with two elements: a `Page` object, and its [taxonomic weight](#taxonomic-weight) as defined in front matter. Access the elements using the `Page` and `Weight` keys.
+
+###### zero time
+
+The _zero time_ is January 1, 0001, 00:00:00 UTC. Formatted per [RFC3339](https://www.rfc-editor.org/rfc/rfc3339) the _zero time_ is 0001-01-01T00:00:00-00:00.
--- /dev/null
- DIR=my/directory/to/topologix.fr/ # the directory where your web site files should go
+---
+title: Deploy with Rsync
+description: If you have access to your web host with SSH, you can use a simple rsync one-liner to incrementally deploy your entire Hugo website.
+categories: [hosting and deployment]
+keywords: [deployment,rsync]
+menu:
+ docs:
+ parent: hosting-and-deployment
+toc: true
+aliases: [/tutorials/deployment-with-rsync/]
+---
+
+## Assumptions
+
+* A web host running a web server. This could be a shared hosting environment or a VPS.
+* Access to your web host with SSH
+* A functional static website built with Hugo
+
+The spoiler is that you can deploy your entire website with a command that looks like the following:
+
+```txt
+hugo && rsync -avz --delete public/ www-data@ftp.topologix.fr:~/www/
+```
+
+As you will see, we'll put this command in a shell script file, which makes building and deployment as easy as executing `./deploy`.
+
+## Copy Your SSH Key to your host
+
+To make logging in to your server more secure and less interactive, you can upload your SSH key. If you have already installed your SSH key to your server, you can move on to the next section.
+
+First, install the ssh client. On Debian distributions, use the following command:
+
+{{< code file=install-openssh.sh >}}
+sudo apt-get install openssh-client
+{{< /code >}}
+
+Then generate your ssh key. First, create the `.ssh` directory in your home directory if it doesn't exist:
+
+```txt
+~$ cd && mkdir .ssh & cd .ssh
+```
+
+Next, execute this command to generate a new keypair called `rsa_id`:
+
+```txt
+~/.ssh/$ ssh-keygen -t rsa -q -C "For SSH" -f rsa_id
+```
+
+You'll be prompted for a passphrase, which is an extra layer of protection. Enter the passphrase you'd like to use, and then enter it again when prompted, or leave it blank if you don't want to have a passphrase. Not using a passphrase will let you transfer files non-interactively, as you won't be prompted for a password when you log in, but it is slightly less secure.
+
+To make logging in easier, add a definition for your web host to the file `~/.ssh/config` with the following command, replacing `HOST` with the IP address or hostname of your web host, and `USER` with the username you use to log in to your web host when transferring files:
+
+```txt
+~/.ssh/$ cat >> config <<EOF
+Host HOST
+ Hostname HOST
+ Port 22
+ User USER
+ IdentityFile ~/.ssh/rsa_id
+EOF
+```
+
+Then copy your ssh public key to the remote server with the `ssh-copy-id` command:
+
+```txt
+~/.ssh/$ ssh-copy-id -i rsa_id.pub USER@HOST.com
+```
+
+Now you can easily connect to the remote server:
+
+```txt
+~$ ssh user@host
+Enter passphrase for key '/home/mylogin/.ssh/rsa_id':
+```
+
+Now that you can log in with your SSH key, let's create a script to automate deployment of your Hugo site.
+
+## Shell script
+
+Create a new script called `deploy` the root of your Hugo tree:
+
+```txt
+~/websites/topologix.fr$ editor deploy
+```
+
+Add the following content. Replace the `USER`, `HOST`, and `DIR` values with your own values:
+
+```sh
+#!/bin/sh
+USER=my-user
+HOST=my-server.com
++DIR=my/directory/to/topologix.fr/ # the directory where your website files should go
+
+hugo && rsync -avz --delete public/ ${USER}@${HOST}:~/${DIR} # this will delete everything on the server that's not in the local public folder
+
+exit 0
+```
+
+Note that `DIR` is the relative path from the remote user's home. If you have to specify a full path (for instance `/var/www/mysite/`) you must change `~/${DIR}` to `${DIR}` inside the command-line. For most cases you should not have to.
+
+Save and close, and make the `deploy` file executable:
+
+```txt
+~/websites/topologix.fr$ chmod +x deploy
+```
+
+Now you only have to enter the following command to deploy and update your website:
+
+```txt
+~/websites/topologix.fr$ ./deploy
+```
+
+Your site builds and deploys:
+
+```txt
+Started building sites ...
+Built site for language en:
+0 draft content
+0 future content
+0 expired content
+5 pages created
+0 non-page files copied
+0 paginator pages created
+0 tags created
+0 categories created
+total in 56 ms
+sending incremental file list
+404.html
+index.html
+index.xml
+sitemap.xml
+posts/
+posts/index.html
+
+sent 9,550 bytes received 1,708 bytes 7,505.33 bytes/sec
+total size is 966,557 speedup is 85.86
+```
+
+You can incorporate other processing tasks into this deployment script as well.
--- /dev/null
- HUGO_VERSION: 0.127.0
+---
+title: Host on GitHub Pages
+description: Host your site on GitHub Pages with continuous deployment using project, user, or organization pages.
+categories: [hosting and deployment]
+keywords: [hosting]
+menu:
+ docs:
+ parent: hosting-and-deployment
+toc: true
+aliases: [/tutorials/github-pages-blog/]
+---
+
+## Prerequisites
+
+1. [Create a GitHub account]
+2. [Install Git]
+3. [Create a Hugo site] and test it locally with `hugo server`.
+
+[Create a GitHub account]: https://github.com/signup
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+[Create a Hugo site]: /getting-started/quick-start/
+
+## Types of sites
+
+There are three types of GitHub Pages sites: project, user, and organization. Project sites are connected to a specific project hosted on GitHub. User and organization sites are connected to a specific account on GitHub.com.
+
+{{% note %}}
+See the [GitHub Pages documentation] to understand the requirements for repository ownership and naming.
+
+[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
+{{% /note %}}
+
+[GitHub Pages documentation]: https://docs.github.com/en/pages/getting-started-with-github-pages/about-github-pages#types-of-github-pages-sites
+
+## Procedure
+
+Step 1
+: Create a GitHub repository.
+
+Step 2
+: Push your local repository to GitHub.
+
+Step 3
+: Visit your GitHub repository. From the main menu choose **Settings** > **Pages**. In the center of your screen you will see this:
+
+
+{style="max-width: 280px"}
+
+Step 4
+: Change the **Source** to `GitHub Actions`. The change is immediate; you do not have to press a Save button.
+
+
+{style="max-width: 280px"}
+
+Step 5
+: Create an empty file in your local repository.
+
+```text
+.github/workflows/hugo.yaml
+```
+
+Step 6
+: Copy and paste the YAML below into the file you created. Change the branch name and Hugo version as needed.
+
+{{< code file=.github/workflows/hugo.yaml copy=true >}}
+# Sample workflow for building and deploying a Hugo site to GitHub Pages
+name: Deploy Hugo site to Pages
+
+on:
+ # Runs on pushes targeting the default branch
+ push:
+ branches:
+ - main
+
+ # Allows you to run this workflow manually from the Actions tab
+ workflow_dispatch:
+
+# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+permissions:
+ contents: read
+ pages: write
+ id-token: write
+
+# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+concurrency:
+ group: "pages"
+ cancel-in-progress: false
+
+# Default to bash
+defaults:
+ run:
+ shell: bash
+
+jobs:
+ # Build job
+ build:
+ runs-on: ubuntu-latest
+ env:
- uses: actions/configure-pages@v4
++ HUGO_VERSION: 0.128.0
+ steps:
+ - name: Install Hugo CLI
+ run: |
+ wget -O ${{ runner.temp }}/hugo.deb https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb \
+ && sudo dpkg -i ${{ runner.temp }}/hugo.deb
+ - name: Install Dart Sass
+ run: sudo snap install dart-sass
+ - name: Checkout
+ uses: actions/checkout@v4
+ with:
+ submodules: recursive
+ fetch-depth: 0
+ - name: Setup Pages
+ id: pages
- # For maximum backward compatibility with Hugo modules
++ uses: actions/configure-pages@v5
+ - name: Install Node.js dependencies
+ run: "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+ - name: Build with Hugo
+ env:
- HUGO_ENV: production
++ HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache
+ HUGO_ENVIRONMENT: production
+ TZ: America/Los_Angeles
+ run: |
+ hugo \
+ --gc \
+ --minify \
+ --baseURL "${{ steps.pages.outputs.base_url }}/"
+ - name: Upload artifact
+ uses: actions/upload-pages-artifact@v3
+ with:
+ path: ./public
+
+ # Deployment job
+ deploy:
+ environment:
+ name: github-pages
+ url: ${{ steps.deployment.outputs.page_url }}
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Deploy to GitHub Pages
+ id: deployment
+ uses: actions/deploy-pages@v4
+{{< /code >}}
+
+Step 7
+: Commit the change to your local repository with a commit message of something like "Add workflow", and push to GitHub.
+
+Step 8
+: From GitHub's main menu, choose **Actions**. You will see something like this:
+
+
+{style="max-width: 350px"}
+
+Step 9
+: When GitHub has finished building and deploying your site, the color of the status indicator will change to green.
+
+
+{style="max-width: 350px"}
+
+Step 10
+: Click on the commit message as shown above. You will see this:
+
+
+{style="max-width: 611px"}
+
+Under the deploy step, you will see a link to your live site.
+
+In the future, whenever you push a change from your local repository, GitHub will rebuild your site and deploy the changes.
+
+## Customize the workflow
+
+The example workflow above includes this step, which typically takes 10‑15 seconds:
+
+```yaml
+- name: Install Dart Sass
+ run: sudo snap install dart-sass
+```
+
+You may remove this step if your site, themes, and modules do not transpile Sass to CSS using the [Dart Sass] transpiler.
+
+[Dart Sass]: /hugo-pipes/transpile-sass-to-css/#dart-sass
+
+## Additional resources
+
+- [Learn more about GitHub Actions](https://docs.github.com/en/actions)
+- [Caching dependencies to speed up workflows](https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows)
+- [Manage a custom domain for your GitHub Pages site](https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/about-custom-domains-and-github-pages)
--- /dev/null
- DART_SASS_VERSION: 1.77.1
- HUGO_VERSION: 0.126.0
+---
+title: Host on GitLab Pages
+description: GitLab makes it easy to build, deploy, and host your Hugo website via their free GitLab Pages service, which provides native support for Hugo.
+categories: [hosting and deployment]
+keywords: [hosting,gitlab]
+menu:
+ docs:
+ parent: hosting-and-deployment
+toc: true
+aliases: [/tutorials/hosting-on-gitlab/]
+---
+
+## Assumptions
+
+* Working familiarity with Git for version control
+* Completion of the Hugo [Quick Start]
+* A [GitLab account](https://gitlab.com/users/sign_in)
+* A Hugo website on your local machine that you are ready to publish
+
+## BaseURL
+
+The `baseURL` in your [site configuration](/getting-started/configuration/) must reflect the full URL of your GitLab pages repository if you are using the default GitLab Pages URL (e.g., `https://<YourUsername>.gitlab.io/<your-hugo-site>/`) and not a custom domain.
+
+## Configure GitLab CI/CD
+
+Define your [CI/CD](https://docs.gitlab.com/ee/ci/quick_start/) jobs by creating a `.gitlab-ci.yml` file in the root of your project.
+
+{{< code file=.gitlab-ci.yml copy=true >}}
+variables:
++ DART_SASS_VERSION: 1.77.5
++ HUGO_VERSION: 0.128.0
+ NODE_VERSION: 20.x
+ GIT_DEPTH: 0
+ GIT_STRATEGY: clone
+ GIT_SUBMODULE_STRATEGY: recursive
+ TZ: America/Los_Angeles
+
+image:
+ name: golang:1.22.1-bookworm
+
+pages:
+ script:
+ # Install brotli
+ - apt-get update
+ - apt-get install -y brotli
+ # Install Dart Sass
+ - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - cp -r dart-sass/ /usr/local/bin
+ - rm -rf dart-sass*
+ - export PATH=/usr/local/bin/dart-sass:$PATH
+ # Install Hugo
+ - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - apt-get install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ # Install Node.js
+ - curl -fsSL https://deb.nodesource.com/setup_${NODE_VERSION} | bash -
+ - apt-get install -y nodejs
+ # Install Node.js dependencies
+ - "[[ -f package-lock.json || -f npm-shrinkwrap.json ]] && npm ci || true"
+ # Build
+ - hugo --gc --minify
+ # Compress
+ - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec gzip -f -k {} \;
+ - find public -type f -regex '.*\.\(css\|html\|js\|txt\|xml\)$' -exec brotli -f -k {} \;
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+{{% /code %}}
+
+## Push your Hugo website to GitLab
+
+Next, create a new repository on GitLab. It is *not* necessary to make the repository public. In addition, you might want to add `/public` to your .gitignore file, as there is no need to push compiled assets to GitLab or keep your output website in version control.
+
+```sh
+# initialize new git repository
+git init
+
+# add /public directory to our .gitignore file
+echo "/public" >> .gitignore
+
+# commit and push code to master branch
+git add .
+git commit -m "Initial commit"
+git remote add origin https://gitlab.com/YourUsername/your-hugo-site.git
+git push -u origin master
+```
+
+## Wait for your page to build
+
+That's it! You can now follow the CI agent building your page at `https://gitlab.com/<YourUsername>/<your-hugo-site>/pipelines`.
+
+After the build has passed, your new website is available at `https://<YourUsername>.gitlab.io/<your-hugo-site>/`.
+
+## Next steps
+
+GitLab supports using custom CNAME's and TLS certificates. For more details on GitLab Pages, see the [GitLab Pages setup documentation](https://about.gitlab.com/2016/04/07/gitlab-pages-setup/).
+
+[Quick Start]: /getting-started/quick-start/
--- /dev/null
- HUGO_VERSION = "0.126.0"
+---
+title: Host on Netlify
+description: Host your site on Netlify with continuous deployment.
+categories: [hosting and deployment]
+keywords: [hosting]
+menu:
+ docs:
+ parent: hosting-and-deployment
+toc: true
+---
+
+## Prerequisites
+
+1. [Create a Netlify account]
+2. [Install Git]
+3. [Create a Hugo site] and test it locally with `hugo server`
+4. Commit the changes to your local repository
+4. Push the local repository to your [GitHub], [GitLab], or [Bitbucket] account
+
+[Bitbucket]: https://bitbucket.org/product
+[Create a Hugo site]: /getting-started/quick-start/
+[Create a Netlify account]: https://app.netlify.com/signup
+[GitHub]: https://github.com
+[GitLab]: https://about.gitlab.com/
+[Install Git]: https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
+
+## Procedure
+
+This procedure will enable continuous deployment from a GitHub repository. The procedure is essentially the same if you are using GitLab or Bitbucket.
+
+Step 1
+: Log in to your Netlify account, navigate to the Sites page, press the **Add new site** button, and choose "Import an existing project" from the dropdown menu.
+
+Step 2
+: Select your deployment method.
+
+
+
+Step 3
+: Authorize Netlify to connect with your GitHub account by pressing the **Authorize Netlify** button.
+
+
+
+Step 4
+: Press the **Configure Netlify on GitHub** button.
+
+
+
+Step 5
+: Install the Netlify app by selecting your GitHub account.
+
+
+
+Step 6
+: Press the **Install** button.
+
+
+
+Step 7
+: Click on the site's repository from the list.
+
+
+
+Step 8
+: Set the site name and branch from which to deploy.
+
+
+
+Step 9
+: Define the build settings, press the **Add environment variables** button, then press the **New variable** button.
+
+
+
+Step 10
+: Create a new environment variable named `HUGO_VERSION` and set the value to the [latest version].
+
+[latest version]: https://github.com/gohugoio/hugo/releases/latest
+
+
+
+Step 11
+: Press the "Deploy my new site" button at the bottom of the page.
+
+
+
+Step 12
+: At the bottom of the screen, wait for the deploy to complete, then click on the deploy log entry.
+
+
+
+Step 13
+: Press the **Open production deploy** button to view the live site.
+
+
+
+## Configuration file
+
+In the procedure above we configured our site using the Netlify user interface. Most site owners find it easier to use a configuration file checked into source control.
+
+Create a new file named netlify.toml in the root of your project directory. In its simplest form, the configuration file might look like this:
+
+{{< code file=netlify.toml >}}
+[build.environment]
- HUGO_VERSION = "0.126.0"
- DART_SASS_VERSION = "1.77.1"
++HUGO_VERSION = "0.128.0"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = "hugo --gc --minify"
+{{< /code >}}
+
+If your site requires Dart Sass to transpile Sass to CSS, the configuration file should look something like this:
+
+{{< code file=netlify.toml >}}
+[build.environment]
++HUGO_VERSION = "0.128.0"
++DART_SASS_VERSION = "1.77.5"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = """\
+ curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ export PATH=/opt/build/repo/dart-sass:$PATH && \
+ hugo --gc --minify \
+ """
+{{< /code >}}
--- /dev/null
- : Comma separated glob list matching paths that should not use the proxy configured above.
+---
+title: Configure Hugo modules
+description: This page describes the configuration options for a module.
+categories: [hugo modules]
+keywords: [modules,themes]
+menu:
+ docs:
+ parent: modules
+ weight: 20
+weight: 20
+toc: true
+---
+
+## Module configuration: top level
+
+{{< code-toggle file=hugo >}}
+[module]
+noProxy = 'none'
+noVendor = ''
+private = '*.*'
+proxy = 'direct'
+replacements = ''
+vendorClosest = false
+workspace = 'off'
+{{< /code-toggle >}}
+
+noProxy
- : A optional Glob pattern matching module paths to skip when vendoring, e.g. "github.com/**"
++: (`string`) Comma separated glob list matching paths that should not use the proxy configured above.
+
+noVendor
- : Comma separated glob list matching paths that should be treated as private.
++: (`string`) A optional Glob pattern matching module paths to skip when vendoring, e.g. "github.com/**"
+
+private
- : Defines the proxy server to use to download remote modules. Default is `direct`, which means "git clone" and similar.
++: (`string`) Comma separated glob list matching paths that should be treated as private.
+
+proxy
- : When enabled, we will pick the vendored module closest to the module using it. The default behavior is to pick the first. Note that there can still be only one dependency of a given module path, so once it is in use it cannot be redefined.
++: (`string`) Defines the proxy server to use to download remote modules. Default is `direct`, which means "git clone" and similar.
+
+vendorClosest
- : The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work file names relative to the working directory.
++: (`bool`) When enabled, we will pick the vendored module closest to the module using it. The default behavior is to pick the first. Note that there can still be only one dependency of a given module path, so once it is in use it cannot be redefined. Default is `false`.
+
+workspace
- : A comma-separated list of mappings from module paths to directories, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary local development of a module, in which case you might want to save it as an environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Relative paths are relative to [themesDir](/getting-started/configuration/#all-configuration-settings). Absolute paths are allowed.
++: (`string`) The workspace file to use. This enables Go workspace mode. Note that this can also be set via OS env, e.g. `export HUGO_MODULE_WORKSPACE=/my/hugo.work` This only works with Go 1.18+. In Hugo `v0.109.0` we changed the default to `off` and we now resolve any relative work file names relative to the working directory.
+
+replacements
- : The minimum Hugo version supported, e.g. `0.55.0`
++: (`string`) A comma-separated list of mappings from module paths to directories, e.g. `github.com/bep/my-theme -> ../..,github.com/bep/shortcodes -> /some/path`. This is mostly useful for temporary local development of a module, in which case you might want to save it as an environment variable, e.g: `env HUGO_MODULE_REPLACEMENTS="github.com/bep/my-theme -> ../.."`. Relative paths are relative to [themesDir](/getting-started/configuration/#all-configuration-settings). Absolute paths are allowed.
+
+Note that the above terms maps directly to their counterparts in Go Modules. Some of these setting may be natural to set as OS environment variables. To set the proxy server to use, as an example:
+
+```txt
+env HUGO_MODULE_PROXY=https://proxy.example.org hugo
+```
+
+{{< gomodules-info >}}
+
+## Module configuration: hugoVersion
+
+If your module requires a particular version of Hugo to work, you can indicate that in the `module` section and the user will be warned if using a too old/new version.
+
+{{< code-toggle file=hugo >}}
+[module]
+[module.hugoVersion]
+ min = ""
+ max = ""
+ extended = false
+
+{{< /code-toggle >}}
+
+Any of the above can be omitted.
+
+min
- : The maximum Hugo version supported, e.g. `0.55.0`
++: (`string`) The minimum Hugo version supported, e.g. `0.55.0`
+
+max
- : Whether the extended version of Hugo is required.
++: (`string`) The maximum Hugo version supported, e.g. `0.55.0`
+
+extended
- **Default mounts**
++: (`bool`) Whether the extended version of Hugo is required.
+
+## Module configuration: imports
+
+{{< code-toggle file=hugo >}}
+[module]
+[[module.imports]]
+ path = "github.com/gohugoio/hugoTestModules1_linux/modh1_2_1v"
+ ignoreConfig = false
+ ignoreImports = false
+ disable = false
+[[module.imports]]
+ path = "my-shortcodes"
+{{< /code-toggle >}}
+
+path
+: Can be either a valid Go Module module path, e.g. `github.com/gohugoio/myShortcodes`, or the directory name for the module as stored in your themes folder.
+
+ignoreConfig
+: If enabled, any module configuration file, e.g. `hugo.toml`, will not be loaded. Note that this will also stop the loading of any transitive module dependencies.
+
+ignoreImports
+: If enabled, module imports will not be followed.
+
+disable
+: Set to `true` to disable the module while keeping any version info in the `go.*` files.
+
+noMounts
+: Do not mount any folder in this import.
+
+noVendor
+: Never vendor this import (only allowed in main project).
+
+{{< gomodules-info >}}
+
+## Module configuration: mounts
+
+{{% note %}}
+When the `mounts` configuration was introduced in Hugo 0.56.0, we were careful to preserve the existing `contentDir`, `staticDir`, and similar configuration to make sure all existing sites just continued to work. But you should not have both: if you add a `mounts` section you should remove the old `contentDir`, `staticDir`, etc. settings.
+{{% /note %}}
+
+{{% note %}}
+When you add a mount, the default mount for the concerned target root is ignored: be sure to explicitly add it.
+{{% /note %}}
+
- : The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
++### Default mounts
++
+{{< code-toggle file=hugo >}}
+[module]
+[[module.mounts]]
+ source="content"
+ target="content"
+[[module.mounts]]
+ source="static"
+ target="static"
+[[module.mounts]]
+ source="layouts"
+ target="layouts"
+[[module.mounts]]
+ source="data"
+ target="data"
+[[module.mounts]]
+ source="assets"
+ target="assets"
+[[module.mounts]]
+ source="i18n"
+ target="i18n"
+[[module.mounts]]
+ source="archetypes"
+ target="archetypes"
+{{< /code-toggle >}}
+
+source
- : Where it should be mounted into Hugo's virtual filesystem. It must start with one of Hugo's component folders: `static`, `content`, `layouts`, `data`, `assets`, `i18n`, or `archetypes`. E.g. `content/blog`.
++: (`string`) The source directory of the mount. For the main project, this can be either project-relative or absolute. For other modules it must be project-relative.
+
+target
- : The language code, e.g. "en". Only relevant for `content` mounts, and `static` mounts when in multihost mode.
++: (`string`) Where it should be mounted into Hugo's virtual filesystem. It must start with one of Hugo's component folders: `static`, `content`, `layouts`, `data`, `assets`, `i18n`, or `archetypes`. E.g. `content/blog`.
++
++disableWatch
++{{< new-in 0.128.0 >}}
++: (`bool`) Whether to disable watching in watch mode for this mount. Default is `false`.
+
+lang
- includeFiles (string or slice)
- : One or more [glob](https://github.com/gobwas/glob) patterns matching files or directories to include. If `excludeFiles` is not set, the files matching `includeFiles` will be the files mounted.
++: (`string`) The language code, e.g. "en". Only relevant for `content` mounts, and `static` mounts when in multihost mode.
+
- excludeFiles (string or slice)
- : One or more glob patterns matching files to exclude.
++includeFiles
++: (`string` or `string slice`) One or more [glob](https://github.com/gobwas/glob) patterns matching files or directories to include. If `excludeFiles` is not set, the files matching `includeFiles` will be the files mounted.
+
+The glob patterns are matched to the file names starting from the `source` root, they should have Unix styled slashes even on Windows, `/` matches the mount root and `**` can be used as a super-asterisk to match recursively down all directories, e.g `/posts/**.jpg`.
+
+The search is case-insensitive.
+
- **Example**
++excludeFiles
++: (`string` or `string slice`) One or more glob patterns matching files to exclude.
++
++### Example
+
+{{< code-toggle file=hugo >}}
+[module]
+[[module.mounts]]
+ source="content"
+ target="content"
+ excludeFiles="docs/*"
+[[module.mounts]]
+ source="node_modules"
+ target="assets"
+[[module.mounts]]
+ source="assets"
+ target="assets"
+{{< /code-toggle >}}
--- /dev/null
- signatures: ['resources.Babel [OPTIONS] RESOURCE']
+---
+title: Babel
+description: Hugo Pipes can process JS files with Babel.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ weight: 70
+weight: 70
+function:
+ aliases: [babel]
+ returnType: resource.Resource
- Any JavaScript resource file can be transpiled to another JavaScript version using `resources.Babel` which takes for argument the resource object and an optional dict of options listed below. Babel uses the [babel cli](https://babeljs.io/docs/en/babel-cli).
++ signatures: ['js.Babel [OPTIONS] RESOURCE']
+---
+
+## Usage
+
++Any JavaScript resource file can be transpiled to another JavaScript version using `js.Babel` which takes for argument the resource object and an optional dict of options listed below. Babel uses the [babel cli](https://babeljs.io/docs/en/babel-cli).
+
+{{% note %}}
+Hugo Pipe's Babel requires the `@babel/cli` and `@babel/core` JavaScript packages to be installed in the project or globally (`npm install -g @babel/cli @babel/core`) along with any Babel plugin(s) or preset(s) used (e.g., `npm install @babel/preset-env --save-dev`).
+
+If you are using the Hugo Snap package, Babel and plugin(s) need to be installed locally within your Hugo site directory, e.g., `npm install @babel/cli @babel/core --save-dev` without the `-g` flag.
+{{% /note %}}
+
+## Configuration
+
+We add the main project's `node_modules` to `NODE_PATH` when running Babel and similar tools. There are some known [issues](https://github.com/babel/babel/issues/5618) with Babel in this area, so if you have a `babel.config.js` living in a Hugo Module (and not in the project itself), we recommend using `require` to load the presets/plugins, e.g.:
+
+```js
+module.exports = {
+ presets: [
+ [
+ require("@babel/preset-env"),
+ {
+ useBuiltIns: "entry",
+ corejs: 3,
+ },
+ ],
+ ],
+};
+```
+
+## Options
+
+config
+: (`string`) Path to the Babel configuration file. Hugo will, by default, look for a `babel.config.js` in your project. More information on these configuration files can be found here: [babel configuration](https://babeljs.io/docs/en/configuration).
+
+minified
+: (`bool`) Save as many bytes as possible when printing
+
+noComments
+: (`bool`) Write comments to generated output (true by default)
+
+compact
+: (`bool`) Do not include superfluous whitespace characters and line terminators. Defaults to `auto` if not set.
+
+verbose
+: (`bool`) Log everything
+
+sourceMap
+: (`string`) Output `inline` or `external` sourcemap from the babel compile. External sourcemaps will be written to the target with the output file name + ".map". Input sourcemaps can be read from js.Build and node modules and combined into the output sourcemaps.
+
+## Examples
+
+```go-html-template
+{{- $transpiled := resources.Get "scripts/main.js" | babel -}}
+```
+
+Or with options:
+
+```go-html-template
+{{ $opts := dict "noComments" true }}
+{{- $transpiled := resources.Get "scripts/main.js" | babel $opts -}}
+```
--- /dev/null
- {{ $style := resources.Get "sass/main.scss" | resources.ToCSS | resources.Minify | resources.Fingerprint }}
+---
+title: Hugo Pipes
+linkTitle: Introduction
+description: Hugo Pipes is Hugo's asset processing set of functions.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ weight: 20
+weight: 20
+toc: true
+aliases: [/assets/]
+---
+
+## Find resources in assets
+
+This is about global and remote resources.
+
+global resource
+: A file within the assets directory, or within any directory [mounted] to the assets directory.
+
+remote resource
+: A file on a remote server, accessible via HTTP or HTTPS.
+
+For `.Page` scoped resources, see the [page resources] section.
+
+[mounted]: /hugo-modules/configuration/#module-configuration-mounts
+[page resources]: /content-management/page-resources/
+
+## Get a resource
+
+In order to process an asset with Hugo Pipes, it must be retrieved as a resource.
+
+For global resources, use:
+
+- [`resources.ByType`](/functions/resources/bytype/)
+- [`resources.Get`](/functions/resources/get/)
+- [`resources.GetMatch`](/functions/resources/getmatch/)
+- [`resources.Match`](/functions/resources/match/)
+
+For remote resources, use:
+
+- [`resources.GetRemote`](/functions/resources/getremote/)
+
+See the [GoDoc Page](https://pkg.go.dev/github.com/gohugoio/hugo/tpl/resources) for the `resources` package for an up to date overview of all template functions in this namespace.
+
+## Copy a resource
+
+See the [`resources.Copy`](/functions/resources/copy/) function.
+
+## Asset directory
+
+Asset files must be stored in the asset directory. This is `/assets` by default, but can be configured via the configuration file's `assetDir` key.
+
+## Asset publishing
+
+Hugo publishes assets to the `publishDir` (typically `public`) when you invoke `.Permalink`, `.RelPermalink`, or `.Publish`. You can use `.Content` to inline the asset.
+
+## Go Pipes
+
+For improved readability, the Hugo Pipes examples of this documentation will be written using [Go Pipes](/templates/introduction/#pipes):
+
+```go-html-template
++{{ $style := resources.Get "sass/main.scss" | css.Sass | resources.Minify | resources.Fingerprint }}
+<link rel="stylesheet" href="{{ $style.Permalink }}">
+```
+
+## Caching
+
+Hugo Pipes invocations are cached based on the entire *pipe chain*.
+
+An example of a pipe chain is:
+
+```go-html-template
+{{ $mainJs := resources.Get "js/main.js" | js.Build "main.js" | minify | fingerprint }}
+```
+
+The pipe chain is only invoked the first time it is encountered in a site build, and results are otherwise loaded from cache. As such, Hugo Pipes can be used in templates which are executed thousands or millions of times without negatively impacting the build performance.
--- /dev/null
- signatures: ['resources.PostCSS [OPTIONS] RESOURCE']
+---
+title: PostCSS
+description: Process CSS files with PostCSS, using any of the available plugins.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ weight: 40
+weight: 40
+toc: true
+action:
+ aliases: [postCSS]
+ returnType: resource.Resource
- : Capture the CSS file as a resource and pipe it through `resources.PostCSS` (alias `postCSS`):
++ signatures: ['css.PostCSS [OPTIONS] RESOURCE']
+---
+
+## Setup
+
+Follow the steps below to transform CSS using any of the [available PostCSS plugins](https://www.postcss.parts/).
+
+Step 1
+: Install [Node.js](https://nodejs.org/en/download).
+
+Step 2
+: Install the required Node.js packages in the root of your project. For example, to add vendor prefixes to CSS rules:
+
+```sh
+npm i -D postcss postcss-cli autoprefixer
+```
+
+Step 3
+: Create a PostCSS configuration file in the root of your project. You must name this file `postcss.config.js` or one of the other [supported file names]. For example:
+
+[supported file names]: https://github.com/postcss/postcss-load-config#usage
+
+{{< code file=postcss.config.js >}}
+module.exports = {
+ plugins: [
+ require('autoprefixer')
+ ]
+};
+{{< /code >}}
+
+{{% note %}}
+If you are a Windows user, and the path to your project contains a space, you must place the PostCSS configuration within the package.json file. See [this example](https://github.com/postcss/postcss-load-config#packagejson) and issue [#7333](https://github.com/gohugoio/hugo/issues/7333).
+{{% /note %}}
+
+Step 4
+: Place your CSS file within the `assets` directory.
+
+Step 5
- The `resources.PostCSS` method takes an optional map of options.
++: Capture the CSS file as a resource and pipe it through `css.PostCSS` (alias `postCSS`):
+
+{{< code file=layouts/partials/css.html >}}
+{{ with resources.Get "css/main.css" | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+If starting with a Sass file within the `assets` directory:
+
+{{< code file=layouts/partials/css.html >}}
+{{ with resources.Get "sass/main.scss" | toCSS | postCSS }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+## Options
+
- skipInlineImportsNotFound {{< new-in 0.99.0 >}}
- : (`bool`) Default is `false`. Before Hugo 0.99.0 when `inlineImports` was enabled and we failed to resolve an import, we logged it as a warning. We now fail the build. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
++The `css.PostCSS` method takes an optional map of options.
+
+config
+: (`string`) The directory that contains the PostCSS configuration file. Default is the root of the project directory.
+
+noMap
+: (`bool`) Default is `false`. If `true`, disables inline sourcemaps.
+
+inlineImports
+: (`bool`) Default is `false`. Enable inlining of @import statements. It does so recursively, but will only import a file once.
+URL imports (e.g. `@import url('https://fonts.googleapis.com/css?family=Open+Sans&display=swap');`) and imports with media queries will be ignored.
+Note that this import routine does not care about the CSS spec, so you can have @import anywhere in the file.
+Hugo will look for imports relative to the module mount and will respect theme overrides.
+
++skipInlineImportsNotFound
++: (`bool`) Default is `false`. If you have regular CSS imports in your CSS that you want to preserve, you can either use imports with URL or media queries (Hugo does not try to resolve those) or set `skipInlineImportsNotFound` to true.
+
+{{< code file=layouts/partials/css.html >}}
+{{ $opts := dict "config" "config-directory" "noMap" true }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+## No configuration file
+
+To avoid using a PostCSS configuration file, you can specify a minimal configuration using the options map.
+
+use
+: (`string`) A space-delimited list of PostCSS plugins to use.
+
+parser
+: (`string`) A custom PostCSS parser.
+
+stringifier
+: (`string`) A custom PostCSS stringifier.
+
+syntax
+: (`string`) Custom postcss syntax.
+
+{{< code file=layouts/partials/css.html >}}
+{{ $opts := dict "use" "autoprefixer postcss-color-alpha" }}
+{{ with resources.Get "css/main.css" | postCSS $opts }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}">
+{{ end }}
+{{< /code >}}
+
+## Check Hugo environment
+
+The current Hugo environment name (set by `--environment` or in configuration or OS environment) is available in the Node context, which allows constructs like this:
+
+{{< code file=postcss.config.js >}}
+module.exports = {
+ plugins: [
+ require('autoprefixer'),
+ ...process.env.HUGO_ENVIRONMENT === 'production'
+ ? [purgecss]
+ : []
+ ]
+}
+{{< /code >}}
--- /dev/null
- {{ $css = $css | resources.PostCSS | minify | fingerprint | resources.PostProcess }}
+---
+title: PostProcess
+description: Allows delaying of resource transformations to after the build.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ weight: 50
+weight: 50
+action:
+ aliases: []
+ returnType: postpub.PostPublishedResource
+ signatures: [resources.PostProcess RESOURCE]
+---
+
+## Usage
+
+Marking a resource with `resources.PostProcess` delays any transformations to after the build, typically because one or more of the steps in the transformation chain depends on the result of the build (e.g. files in `public`).
+
+A prime use case for this is [CSS purging with PostCSS](#css-purging-with-postcss).
+
+There are currently two limitations to this:
+
+1. This only works in `*.html` templates (i.e. templates that produces HTML files).
+2. You cannot manipulate the values returned from the resource's methods. E.g. the `upper` in this example will not work as expected:
+
+ ```go-html-template
+ {{ $css := resources.Get "css/main.css" }}
- {{ $css = $css | resources.PostCSS }}
++ {{ $css = $css | css.PostCSS | minify | fingerprint | resources.PostProcess }}
+ {{ $css.RelPermalink | upper }}
+ ```
+
+## CSS purging with PostCSS
+
+{{% note %}}
+There are several ways to set up CSS purging with PostCSS in Hugo. If you have a simple project, you should consider going the simpler route and drop the use of `resources.PostProcess` and just extract keywords from the templates. See the [Tailwind documentation](https://tailwindcss.com/docs/controlling-file-size/#app) for some examples.
+{{% /note %}}
+
+The below configuration will write a `hugo_stats.json` file to the project root as part of the build. If you're only using this for the production build, you should consider placing it below [config/production](/getting-started/configuration/#configuration-directory).
+
+{{< code-toggle file=hugo >}}
+[build.buildStats]
+ enable = true
+{{< /code-toggle >}}
+
+See the [configure build] documentation for details and options.
+
+[configure build]: /getting-started/configuration/#configure-build
+
+`postcss.config.js`
+
+```js
+const purgecss = require('@fullhuman/postcss-purgecss')({
+ content: [ './hugo_stats.json' ],
+ defaultExtractor: (content) => {
+ let els = JSON.parse(content).htmlElements;
+ return els.tags.concat(els.classes, els.ids);
+ }
+});
+
+module.exports = {
+ plugins: [
+ ...(process.env.HUGO_ENVIRONMENT === 'production' ? [ purgecss ] : [])
+ ]
+ };
+```
+
+Note that in the example above, the "CSS purge step" will only be applied to the production build. This means that you need to do something like this in your head template to build and include your CSS:
+
+```go-html-template
+{{ $css := resources.Get "css/main.css" }}
++{{ $css = $css | css.PostCSS }}
+{{ if hugo.IsProduction }}
+{{ $css = $css | minify | fingerprint | resources.PostProcess }}
+{{ end }}
+<link href="{{ $css.RelPermalink }}" rel="stylesheet" />
+```
+
+## Hugo environment variables available in PostCSS
+
+These are the environment variables Hugo passes down to PostCSS (and Babel), which allows you do do `process.env.HUGO_ENVIRONMENT === 'production' ? [autoprefixer] : []` and similar:
+
+PWD
+: The absolute path to the project working directory.
+
+HUGO_ENVIRONMENT
+: The value e.g. set with `hugo -e production` (defaults to `production` for `hugo` and `development` for `hugo server`).
+
+HUGO_PUBLISHDIR
+: {{< new-in 0.109.0 >}} The absolute path to the publish directory (the `public` directory). Note that the value will always point to a directory on disk even when running `hugo server` in memory mode. If you write to this folder from PostCSS when running the server, you could run the server with one of these flags:
+
+```sh
+hugo server --renderToDisk
+hugo server --renderStaticToDisk
+```
+
+Also, Hugo will add environment variables for all files mounted below `assets/_jsconfig`. A default mount will be set up with files in the project root matching this regexp: `(babel|postcss|tailwind)\.config\.js`.
+
+These will get environment variables named on the form `HUGO_FILE_:filename:` where `:filename:` is all upper case with periods replaced with underscore. This allows you to do this and similar:
+
+```js
+let tailwindConfig = process.env.HUGO_FILE_TAILWIND_CONFIG_JS || './tailwind.config.js';
+```
--- /dev/null
- {{ $style := $sassTemplate | resources.ExecuteAsTemplate "main.scss" . | resources.ToCSS }}
+---
+title: ExecuteAsTemplate
+linkTitle: Resource from template
+description: Creates a resource from a template
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ weight: 120
+weight: 120
+action:
+ aliases: []
+ returnType: resource.Resource
+ signatures: [resources.ExecuteAsTemplate TARGETPATH CONTEXT RESOURCE]
+---
+
+## Usage
+
+In order to use Hugo Pipes function on an asset file containing Go Template magic the function `resources.ExecuteAsTemplate` must be used.
+
+The function takes three arguments: the target path for the created resource, the template context, and the resource object. The target path is used to cache the result.
+
+```go-html-template
+// assets/sass/template.scss
+$backgroundColor: {{ .Param "backgroundColor" }};
+$textColor: {{ .Param "textColor" }};
+body{
+ background-color:$backgroundColor;
+ color: $textColor;
+}
+// [...]
+```
+
+```go-html-template
+{{ $sassTemplate := resources.Get "sass/template.scss" }}
++{{ $style := $sassTemplate | resources.ExecuteAsTemplate "main.scss" . | css.Sass }}
+```
--- /dev/null
- signatures: ['resources.ToCSS [OPTIONS] RESOURCE']
+---
+title: ToCSS
+linkTitle: Transpile Sass to CSS
+description: Transpile Sass to CSS.
+categories: [asset management]
+keywords: []
+menu:
+ docs:
+ parent: hugo-pipes
+ returnType: resource.Resource
+ weight: 30
+weight: 30
+action:
+ aliases: [toCSS]
+ returnType: resource.Resource
- "enableSourceMap" (not hugo.IsProduction)
++ signatures: ['css.Sass [OPTIONS] RESOURCE']
+toc: true
+aliases: [/hugo-pipes/transform-to-css/]
+---
+
+## Usage
+
+Transpile Sass to CSS using the LibSass transpiler included in Hugo's extended edition, or [install Dart Sass](#dart-sass) to use the latest features of the Sass language.
+
+```go-html-template
+{{ $opts := dict "transpiler" "libsass" "targetPath" "css/style.css" }}
+{{ with resources.Get "sass/main.scss" | toCSS $opts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+{{ end }}
+```
+
+Sass has two forms of syntax: [SCSS] and [indented]. Hugo supports both.
+
+[scss]: https://sass-lang.com/documentation/syntax#scss
+[indented]: https://sass-lang.com/documentation/syntax#the-indented-syntax
+
+## Options
+
+transpiler
+: (`string`) The transpiler to use, either `libsass` (default) or `dartsass`. Hugo's extended edition includes the LibSass transpiler. To use the Dart Sass transpiler, see the [installation instructions](#dart-sass) below.
+
+targetPath
+: (`string`) If not set, the transformed resource's target path will be the original path of the asset file with its extension replaced by `.css`.
+
+vars {{< new-in 0.109.0 >}}
+: (`map`) A map of key-value pairs that will be available in the `hugo:vars` namespace. Useful for [initializing Sass variables from Hugo templates](https://discourse.gohugo.io/t/42053/).
+
+```scss
+// LibSass
+@import "hugo:vars";
+
+// Dart Sass
+@use "hugo:vars" as v;
+```
+
+outputStyle
+: (`string`) Output styles available to LibSass include `nested` (default), `expanded`, `compact`, and `compressed`. Output styles available to Dart Sass include `expanded` (default) and `compressed`.
+
+precision
+: (`int`) Precision of floating point math. Not applicable to Dart Sass.
+
+enableSourceMap
+: (`bool`) If `true`, generates a source map.
+
+sourceMapIncludeSources {{< new-in 0.108.0 >}}
+: (`bool`) If `true`, embeds sources in the generated source map. Not applicable to LibSass.
+
+includePaths
+: (`slice`) A slice of paths, relative to the project root, that the transpiler will use when resolving `@use` and `@import` statements.
+
+```go-html-template
+{{ $opts := dict
+ "transpiler" "dartsass"
+ "targetPath" "css/style.css"
+ "vars" site.Params.styles
- HUGO_VERSION: 0.126.0
- DART_SASS_VERSION: 1.77.1
++ "enableSourceMap" (not hugo.IsProduction)
+ "includePaths" (slice "node_modules/bootstrap/scss")
+}}
+{{ with resources.Get "sass/main.scss" | toCSS $opts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+{{ end }}
+```
+
+## Dart Sass
+
+The extended version of Hugo includes [LibSass] to transpile Sass to CSS. In 2020, the Sass team deprecated LibSass in favor of [Dart Sass].
+
+Use the latest features of the Sass language by installing Dart Sass in your development and production environments.
+
+### Installation overview
+
+Dart Sass is compatible with Hugo v0.114.0 and later.
+
+If you have been using Embedded Dart Sass[^1] with Hugo v0.113.0 and earlier, uninstall Embedded Dart Sass, then install Dart Sass. If you have installed both, Hugo will use Dart Sass.
+
+If you install Hugo as a [Snap package] there is no need to install Dart Sass. The Hugo Snap package includes Dart Sass.
+
+[^1]: In 2023, the Sass team deprecated Embedded Dart Sass in favor of Dart Sass.
+
+### Installing in a development environment
+
+When you install Dart Sass somewhere in your PATH, Hugo will find it.
+
+OS|Package manager|Site|Installation
+:--|:--|:--|:--
+Linux|Homebrew|[brew.sh]|`brew install sass/sass/sass`
+Linux|Snap|[snapcraft.io]|`sudo snap install dart-sass`
+macOS|Homebrew|[brew.sh]|`brew install sass/sass/sass`
+Windows|Chocolatey|[chocolatey.org]|`choco install sass`
+Windows|Scoop|[scoop.sh]|`scoop install sass`
+
+You may also install [prebuilt binaries] for Linux, macOS, and Windows.
+
+Run `hugo env` to list the active transpilers.
+
+### Installing in a production environment
+
+For [CI/CD] deployments (e.g., GitHub Pages, GitLab Pages, Netlify, etc.) you must edit the workflow to install Dart Sass before Hugo builds the site[^2]. Some providers allow you to use one of the package managers above, or you can download and extract one of the prebuilt binaries.
+
+[^2]: You do not have to do this if (a) you have not modified the assets cache location, and (b) you have not set `useResourceCacheWhen` to `never` in your [site configuration], and (c) you add and commit your resources directory to your repository.
+
+#### GitHub Pages
+
+To install Dart Sass for your builds on GitHub Pages, add this step to the GitHub Pages workflow file:
+
+```yaml
+- name: Install Dart Sass
+ run: sudo snap install dart-sass
+```
+
+If you are using GitHub Pages for the first time with your repository, GitHub provides a [starter workflow] for Hugo that includes Dart Sass. This is the simplest way to get started.
+
+#### GitLab Pages
+
+To install Dart Sass for your builds on GitLab Pages, the `.gitlab-ci.yml` file should look something like this:
+
+```yaml
+variables:
- HUGO_VERSION = "0.122.2"
- DART_SASS_VERSION = "1.77.1"
++ HUGO_VERSION: 0.128.0
++ DART_SASS_VERSION: 1.77.5
+ GIT_DEPTH: 0
+ GIT_STRATEGY: clone
+ GIT_SUBMODULE_STRATEGY: recursive
+ TZ: America/Los_Angeles
+image:
+ name: golang:1.20-buster
+pages:
+ script:
+ # Install Dart Sass
+ - curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz
+ - cp -r dart-sass/* /usr/local/bin
+ - rm -rf dart-sass*
+ # Install Hugo
+ - curl -LJO https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - apt install -y ./hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ - rm hugo_extended_${HUGO_VERSION}_linux-amd64.deb
+ # Build
+ - hugo --gc --minify
+ artifacts:
+ paths:
+ - public
+ rules:
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
+```
+
+#### Netlify
+
+To install Dart Sass for your builds on Netlify, the `netlify.toml` file should look something like this:
+
+```toml
+[build.environment]
- To transpile with Dart Sass, set `transpiler` to `dartsass` in the options map passed to `resources.ToCSS`. For example:
++HUGO_VERSION = "0.128.0"
++DART_SASS_VERSION = "1.77.5"
+TZ = "America/Los_Angeles"
+
+[build]
+publish = "public"
+command = """\
+ curl -LJO https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ tar -xf dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ rm dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz && \
+ export PATH=/opt/build/repo/dart-sass:$PATH && \
+ hugo --gc --minify \
+ """
+```
+
+### Example
+
++To transpile with Dart Sass, set `transpiler` to `dartsass` in the options map passed to `css.Sass`. For example:
+
+```go-html-template
+{{ $opts := dict "transpiler" "dartsass" "targetPath" "css/style.css" }}
+{{ with resources.Get "sass/main.scss" | toCSS $opts | minify | fingerprint }}
+ <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous">
+{{ end }}
+```
+
+### Miscellaneous
+
+If you build Hugo from source and run `mage test -v`, the test will fail if you install Dart Sass as a Snap package. This is due to the Snap package's strict confinement model.
+
+[brew.sh]: https://brew.sh/
+[chocolatey.org]: https://community.chocolatey.org/packages/sass
+[ci/cd]: https://en.wikipedia.org/wiki/CI/CD
+[dart sass]: https://sass-lang.com/dart-sass
+[libsass]: https://sass-lang.com/libsass
+[prebuilt binaries]: https://github.com/sass/dart-sass/releases/latest
+[scoop.sh]: https://scoop.sh/#/apps?q=sass
+[site configuration]: /getting-started/configuration/#configure-build
+[snap package]: /installation/linux/#snap
+[snapcraft.io]: https://snapcraft.io/dart-sass
+[starter workflow]: https://github.com/actions/starter-workflows/blob/main/pages/hugo.yml
--- /dev/null
- [this example]: /templates/menu-templates/#example
+---
+title: Menu
+description: Returns the identifier of the menu that contains the given menu entry.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/IsMenuCurrent
+ - methods/page/HasMenuCurrent
+ returnType: string
+ signatures: [MENUENTRY.Menu]
+---
+
+```go-html-template
+{{ range .Site.Menus.main }}
+ {{ .Menu }} → main
+{{ end }}
+```
+
+Use this method with the [`IsMenuCurrent`] and [`HasMenuCurrent`] methods on a `Page` object to set "active" and "ancestor" classes on a rendered entry. See [this example].
+
+[`HasMenuCurrent`]: /methods/page/hasmenucurrent/
+[`IsMenuCurrent`]: /methods/page/ismenucurrent/
++[this example]: /templates/menu/#example
--- /dev/null
- [menu templates]: /templates/menu-templates/#page-references
+---
+title: Page
+description: Returns the Page object associated with the given menu entry.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: page.Page
+ signatures: [MENUENTRY.Page]
+---
+
+Regardless of how you [define menu entries], an entry associated with a page has access to its [methods].
+
+In this menu definition, the first two entries are associated with a page, the last entry is not:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+pageRef = '/about'
+weight = 10
+
+[[menus.main]]
+pageRef = '/contact'
+weight = 20
+
+[[menus.main]]
+name = 'Hugo'
+url = 'https://gohugo.io'
+weight = 30
+{{< /code-toggle >}}
+
+In this example, if the menu entry is associated with a page, we use page's [`RelPermalink`] and [`LinkTitle`] when rendering the anchor element.
+
+If the entry is not associated with a page, we use its `url` and `name` properties.
+
+```go-html-template
+<ul>
+ {{ range .Site.Menus.main }}
+ {{ with .Page }}
+ <li><a href="{{ .RelPermalink }}">{{ .Title }}</a></li>
+ {{ else }}
+ <li><a href="{{ .URL }}">{{ .Name }}</a></li>
+ {{ end }}
+ {{ end }}
+</ul>
+```
+
+See the [menu templates] section for more information.
+
+[`LinkTitle`]: /methods/page/linktitle/
+[`RelPermalink`]: /methods/page/relpermalink/
+[define menu entries]: /content-management/menus/
++[menu templates]: /templates/menu/#page-references
+[methods]: /methods/page/
--- /dev/null
- [menu templates]: /templates/menu-templates/#menu-entry-parameters
+---
+title: Params
+description: Returns the `params` property of the given menu entry.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: maps.Params
+ signatures: [MENUENTRY.Params]
+---
+
+When you define menu entries [in site configuration] or [in front matter], you can include a `params` key to attach additional information to the entry. For example:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'About'
+pageRef = '/about'
+weight = 10
+
+[[menus.main]]
+name = 'Contact'
+pageRef = '/contact'
+weight = 20
+
+[[menus.main]]
+name = 'Hugo'
+url = 'https://gohugo.io'
+weight = 30
+[menus.main.params]
+ rel = 'external'
+{{< /code-toggle >}}
+
+With this template:
+
+
+```go-html-template
+<ul>
+ {{ range .Site.Menus.main }}
+ <li>
+ <a href="{{ .URL }}" {{ with .Params.rel }}rel="{{ . }}"{{ end }}>
+ {{ .Name }}
+ </a>
+ </li>
+ {{ end }}
+</ul>
+```
+
+Hugo renders:
+
+```html
+<ul>
+ <li><a href="/about/">About</a></li>
+ <li><a href="/contact/">Contact</a></li>
+ <li><a href="https://gohugo.io" rel="external">Hugo</a></li>
+</ul>
+```
+
+See the [menu templates] section for more information.
+
++[menu templates]: /templates/menu/#menu-entry-parameters
+[in front matter]: /content-management/menus/#define-in-front-matter
+[in site configuration]: /content-management/menus/
--- /dev/null
- : (`page.Taxonomy`) Returns the taxonomy object, consisting of a map of terms and the [weighted pages] associated with each term.
+---
+title: Data
+description: Returns a unique data object for each page kind.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: page.Data
+ signatures: [PAGE.Data]
+toc: true
+---
+
+The `Data` method on a `Page` object returns a unique data object for each [page kind].
+
+[page kind]: /getting-started/glossary/#page-kind
+
+{{% note %}}
+The `Data` method is only useful within [taxonomy] and [term] templates.
+
+Themes that are not actively maintained may still use `.Data.Pages` in list templates. Although that syntax remains functional, use one of these methods instead: [`Pages`], [`RegularPages`], or [`RegularPagesRecursive`]
+
+[`Pages`]: /methods/page/pages/
+[`RegularPages`]: /methods/page/regularpages/
+[`RegularPagesRecursive`]: /methods/page/regularpagesrecursive/
+[term]: /getting-started/glossary/#term
+[taxonomy]: /getting-started/glossary/#taxonomy
+{{% /note %}}
+
+The examples that follow are based on this site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+genre = 'genres'
+author = 'authors'
+{{< /code-toggle >}}
+
+And this content structure:
+
+```text
+content/
+├── books/
+│ ├── and-then-there-were-none.md --> genres: suspense
+│ ├── death-on-the-nile.md --> genres: suspense
+│ └── jamaica-inn.md --> genres: suspense, romance
+│ └── pride-and-prejudice.md --> genres: romance
+└── _index.md
+```
+
+## In a taxonomy template
+
+Use these methods on the `Data` object within a taxonomy template.
+
+Singular
+: (`string`) Returns the singular name of the taxonomy.
+
+```go-html-template
+{{ .Data.Singular }} → genre
+```
+
+Plural
+: (`string`) Returns the plural name of the taxonomy.
+
+```go-html-template
+{{ .Data.Plural }} → genres
+```
+
+Terms
- Once you have captured the taxonomy object, use any of the [taxonomy methods] to sort, count, or capture a subset of its weighted pages.
++: (`page.Taxonomy`) Returns the `Taxonomy` object, consisting of a map of terms and the [weighted pages] associated with each term.
+
+```go-html-template
+{{ $taxonomyObject := .Data.Terms }}
+```
+
+{{% note %}}
- [taxonomy templates]: /templates/taxonomy-templates/
- [term templates]: /templates/taxonomy-templates/
++Once you have captured the `Taxonomy` object, use any of the [taxonomy methods] to sort, count, or capture a subset of its weighted pages.
+
+[taxonomy methods]: /methods/taxonomy/
+{{% /note %}}
+
+Learn more about [taxonomy templates].
+
+## In a term template
+
+Use these methods on the `Data` object within a term template.
+
+Singular
+: (`string`) Returns the singular name of the taxonomy.
+
+```go-html-template
+{{ .Data.Singular }} → genre
+```
+
+Plural
+: (`string`) Returns the plural name of the taxonomy.
+
+```go-html-template
+{{ .Data.Plural }} → genres
+```
+
+Term
+: (`string`) Returns the name of the term.
+
+```go-html-template
+{{ .Data.Term }} → suspense
+```
+
+Learn more about [term templates].
+
++[taxonomy templates]: /templates/types/#taxonomy
++[term templates]: /templates/types/#term
+[weighted pages]: /getting-started/glossary/#weighted-page
--- /dev/null
- In this contrived example from a single page template, we list all pages in the current section except for the current page.
+---
+title: Eq
+description: Reports whether two Page objects are equal.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: bool
+ signatures: [PAGE1.Eq PAGE2]
+---
+
++In this contrived example from a single template, we list all pages in the current section except for the current page.
+
+```go-html-template
+{{ $currentPage := . }}
+{{ range .CurrentSection.Pages }}
+ {{ if not (.Eq $currentPage) }}
+ <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
+ {{ end }}
+{{ end }}
+```
--- /dev/null
- The examples below depict the result of rendering works/paintings/the-mona-lisa.md with a single page template:
+---
+title: GetPage
+description: Returns a Page object from the given path.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/site/GetPage
+ returnType: page.Page
+ signatures: [PAGE.GetPage PATH]
+aliases: [/functions/getpage]
+---
+
+The `GetPage` method is also available on a `Site` object. See [details].
+
+[details]: /methods/site/getpage/
+
+When using the `GetPage` method on the `Page` object, specify a path relative to the current directory or relative to the content directory.
+
+If Hugo cannot resolve the path to a page, the method returns nil. If the path is ambiguous, Hugo throws an error and fails the build.
+
+Consider this content structure:
+
+```text
+content/
+├── works/
+│ ├── paintings/
+│ │ ├── _index.md
+│ │ ├── starry-night.md
+│ │ └── the-mona-lisa.md
+│ ├── sculptures/
+│ │ ├── _index.md
+│ │ ├── david.md
+│ │ └── the-thinker.md
+│ └── _index.md
+└── _index.md
+```
+
- ```go-html-template
++The examples below depict the result of rendering works/paintings/the-mona-lisa.md:
+
- ```
++{{< code file=layouts/works/single.html >}}
+{{ with .GetPage "starry-night" }}
+ {{ .Title }} → Starry Night
+{{ end }}
+
+{{ with .GetPage "./starry-night" }}
+ {{ .Title }} → Starry Night
+{{ end }}
+
+{{ with .GetPage "../paintings/starry-night" }}
+ {{ .Title }} → Starry Night
+{{ end }}
+
+{{ with .GetPage "/works/paintings/starry-night" }}
+ {{ .Title }} → Starry Night
+{{ end }}
+
+{{ with .GetPage "../sculptures/david" }}
+ {{ .Title }} → David
+{{ end }}
+
+{{ with .GetPage "/works/sculptures/david" }}
+ {{ .Title }} → David
+{{ end }}
++{{< /code >}}
--- /dev/null
- description: Reports whether the given page object matches the page object associated with one of the child menu entries under the given menu entry in the given menu.
+---
+title: HasMenuCurrent
- If the page object associated with the menu entry is a section, this method also returns `true` for any descendant of that section.
++description: Reports whether the given Page object matches the Page object associated with one of the child menu entries under the given menu entry in the given menu.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/IsMenuCurrent
+ returnType: bool
+ signatures: [PAGE.HasMenuCurrent MENU MENUENTRY]
+aliases: [/functions/hasmenucurrent]
+---
+
- [menu templates]: /templates/menu-templates/#example
++If the `Page` object associated with the menu entry is a section, this method also returns `true` for any descendant of that section.
+
+```go-html-template
+{{ $currentPage := . }}
+{{ range site.Menus.main }}
+ {{ if $currentPage.IsMenuCurrent .Menu . }}
+ <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else if $currentPage.HasMenuCurrent .Menu . }}
+ <a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="{{ .URL }}">{{ .Name }}</a>
+ {{ end }}
+{{ end }}
+```
+
+See [menu templates] for a complete example.
+
++[menu templates]: /templates/menu/#example
--- /dev/null
- The `InSection` method on a page object reports whether the given page is in the given section. Note that the method returns `true` when comparing a page to a sibling.
+---
+title: InSection
+description: Reports whether the given page is in the given section.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/Ancestors
+ - methods/page/CurrentSection
+ - methods/page/FirstSection
+ - methods/page/IsAncestor
+ - methods/page/IsDescendant
+ - methods/page/Parent
+ - methods/page/Sections
+ returnType: bool
+ signatures: [PAGE.InSection SECTION]
+toc: true
+---
+
++The `InSection` method on a `Page` object reports whether the given page is in the given section. Note that the method returns `true` when comparing a page to a sibling.
+
+{{% include "methods/page/_common/definition-of-section.md" %}}
+
+With this content structure:
+
+```text
+content/
+├── auctions/
+│ ├── 2023-11/
+│ │ ├── _index.md
+│ │ ├── auction-1.md
+│ │ └── auction-2.md
+│ ├── 2023-12/
+│ │ ├── _index.md
+│ │ ├── auction-3.md
+│ │ └── auction-4.md
+│ ├── _index.md
+│ ├── bidding.md
+│ └── payment.md
+└── _index.md
+```
+
+When rendering the "auction-1" page:
+
+```go-html-template
+{{ with .Site.GetPage "/" }}
+ {{ $.InSection . }} → false
+{{ end }}
+
+{{ with .Site.GetPage "/auctions" }}
+ {{ $.InSection . }} → false
+{{ end }}
+
+{{ with .Site.GetPage "/auctions/2023-11" }}
+ {{ $.InSection . }} → true
+{{ end }}
+
+{{ with .Site.GetPage "/auctions/2023-11/auction-2" }}
+ {{ $.InSection . }} → true
+{{ end }}
+```
+
+In the examples above we are coding defensively using the [`with`] statement, returning nothing if the page does not exist. By adding an [`else`] clause we can do some error reporting:
+
+```go-html-template
+{{ $path := "/auctions/2023-11" }}
+{{ with .Site.GetPage $path }}
+ {{ $.InSection . }} → true
+{{ else }}
+ {{ errorf "Unable to find the section with path %s" $path }}
+{{ end }}
+ ```
+
+## Understanding context
+
+Inside of the `with` block, the [context] (the dot) is the section `Page` object, not the `Page` object passed into the template. If we were to use this syntax:
+
+```go-html-template
+{{ with .Site.GetPage "/auctions" }}
+ {{ .InSection . }} → true
+{{ end }}
+```
+
+The result would be wrong when rendering the "auction-1" page because we are comparing the section page to itself.
+
+{{% note %}}
+Use the `$` to get the context passed into the template.
+{{% /note %}}
+
+```go-html-template
+{{ with .Site.GetPage "/auctions" }}
+ {{ $.InSection . }} → true
+{{ end }}
+```
+
+{{% note %}}
+Gaining a thorough understanding of context is critical for anyone writing template code.
+{{% /note %}}
+
+[context]: /getting-started/glossary/#context
+[`with`]: /functions/go-template/with/
+[`else`]: /functions/go-template/else/
--- /dev/null
- description: Reports whether the given page object matches the page object associated with the given menu entry in the given menu.
+---
+title: IsMenuCurrent
- [menu templates]: /templates/menu-templates/#example
++description: Reports whether the given Page object matches the Page object associated with the given menu entry in the given menu.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/HasMenuCurrent
+ returnType: bool
+ signatures: [PAGE.IsMenuCurrent MENU MENUENTRY]
+aliases: [/functions/ismenucurrent]
+---
+
+```go-html-template
+{{ $currentPage := . }}
+{{ range site.Menus.main }}
+ {{ if $currentPage.IsMenuCurrent .Menu . }}
+ <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else if $currentPage.HasMenuCurrent .Menu . }}
+ <a class="ancestor" aria-current="true" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="{{ .URL }}">{{ .Name }}</a>
+ {{ end }}
+{{ end }}
+```
+
+See [menu templates] for a complete example.
+
++[menu templates]: /templates/menu/#example
--- /dev/null
- By default, the number of elements on each pager is determined by the value of the `paginate` setting in your site configuration. The default value is `10`. Override the value in your site configuration by providing a second argument, an integer, when calling the `Paginate` method.
+---
+title: Paginate
+description: Paginates a collection of pages.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/Paginator
+ returnType: page.Pager
+ signatures: ['PAGE.Paginate COLLECTION [N]']
+---
+
+[Pagination] is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers.
+
- You can invoke pagination on the home page template, [`section`] templates, [`taxonomy`] templates, and [`term`] templates.
++By default, the number of elements on each pager is determined by your [site configuration]. The default is `10`. Override that value by providing a second argument, an integer, when calling the `Paginate` method.
++
++[site configuration]: /getting-started/configuration/#pagination
+
+{{% note %}}
+There is also a `Paginator` method on `Page` objects, but it can neither filter nor sort the page collection.
+
+The `Paginate` method is more flexible.
+{{% /note %}}
+
- 5. Call the internal "pagination" template to create the navigation links between pagers.
++You can invoke pagination on the [home template], [section templates], [taxonomy templates], and [term templates].
++
++[home template]: /templates/types/#home
++[section templates]: /templates/types/#section
++[taxonomy templates]: /templates/types/#taxonomy
++[term templates]: /templates/types/#term
+
+{{< code file=layouts/_default/list.html >}}
+{{ $pages := where .Site.RegularPages "Section" "articles" }}
+{{ $pages = $pages.ByTitle }}
+{{ range (.Paginate $pages 7).Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
+{{ end }}
+{{ template "_internal/pagination.html" . }}
+{{< /code >}}
+
+In the example above, we:
+
+1. Build a page collection
+2. Sort the collection by title
+3. Paginate the collection, with 7 elements per pager
+4. Range over the paginated page collection, rendering a link to each page
-
- [context]: /getting-started/glossary/#context
- [pagination]: /templates/pagination/
- [`section`]: /getting-started/glossary/#section
- [`taxonomy`]: /getting-started/glossary/#taxonomy
- [`term`]: /getting-started/glossary/#term
++5. Call the embedded pagination template to create navigation links between pagers
+
+{{% note %}}
+Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
+{{% /note %}}
--- /dev/null
- [Pagination] is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers. The number of elements on each pager is determined by the value of the `paginate` setting in your site configuration. The default value is `10`.
+---
+title: Paginator
+description: Paginates the collection of regular pages received in context.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/Paginate
+ returnType: page.Pager
+ signatures: [PAGE.Paginator]
+---
+
- You can invoke pagination on the home page template, [`section`] templates, [`taxonomy`] templates, and [`term`] templates. Each of these receive a collection of regular pages in [context]. When you invoke the `Paginator` method, it paginates the page collection received in context.
++[Pagination] is the process of splitting a list page into two or more pagers, where each pager contains a subset of the page collection and navigation links to other pagers.
+
- In the example above, the internal "pagination" template creates the navigation links between pagers.
++The number of elements on each pager is determined by your [site configuration]. The default is `10`.
++
++[site configuration]: /getting-started/configuration/#pagination
++
++You can invoke pagination on the [home template], [section templates], [taxonomy templates], and [term templates]. Each of these receives a collection of regular pages in [context]. When you invoke the `Paginator` method, it paginates the page collection received in context.
++
++[home template]: /templates/types/#home
++[section templates]: /templates/types/#section
++[taxonomy templates]: /templates/types/#taxonomy
++[term templates]: /templates/types/#term
++[context]: /getting-started/glossary/#context
+
+{{< code file=layouts/_default/list.html >}}
+{{ range .Paginator.Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+{{ template "_internal/pagination.html" . }}
+{{< /code >}}
+
-
- [context]: /getting-started/glossary/#context
- [pagination]: /templates/pagination/
- [`section`]: /getting-started/glossary/#section
- [`taxonomy`]: /getting-started/glossary/#taxonomy
- [`term`]: /getting-started/glossary/#term
++In the example above, the embedded pagination template creates navigation links between pagers.
+
+{{% note %}}
+Although simple to invoke, with the `Paginator` method you can neither filter nor sort the page collection. It acts upon the page collection received in context.
+
+The [`Paginate`] method is more flexible, and strongly recommended.
+
+[`paginate`]: /methods/page/paginate/
+{{% /note %}}
+
+{{% note %}}
+Please note that the results of pagination are cached. Once you have invoked either the `Paginator` or `Paginate` method, the paginated collection is immutable. Additional invocations of these methods will have no effect.
+{{% /note %}}
--- /dev/null
- [content views]: /templates/views/
+---
+title: Render
+description: Renders the given template with the given page as context.
+categories: []
+keywords: []
+action:
+ related:
+ - functions/partials/Include
+ - functions/partials/IncludeCached
+ returnType: template.HTML
+ signatures: [PAGE.Render NAME]
+aliases: [/functions/render]
+---
+
+Typically used when ranging over a page collection, the `Render` method on a `Page` object renders the given template, passing the given page as context.
+
+```go-html-template
+{{ range site.RegularPages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+ {{ .Render "summary" }}
+{{ end }}
+```
+
+In the example above, note that the template ("summary") is identified by its file name without directory or extension.
+
+Although similar to the [`partial`] function, there are key differences.
+
+`Render` method|`partial` function|
+:--|:--
+The `Page` object is automatically passed to the given template. You cannot pass additional context.| You must specify the context, allowing you to pass a combination of objects, slices, maps, and scalars.
+The path to the template is determined by the [content type].|You must specify the path to the template, relative to the layouts/partials directory.
+
+Consider this layout structure:
+
+```text
+layouts/
+├── _default/
+│ ├── baseof.html
+│ ├── home.html
+│ ├── li.html <-- used for other content types
+│ ├── list.html
+│ ├── single.html
+│ └── summary.html
+└── books/
+ ├── li.html <-- used when content type is "books"
+ └── summary.html
+```
+
+And this template:
+
+```go-html-template
+<ul>
+ {{ range site.RegularPages.ByDate }}
+ {{ .Render "li" }}
+ {{ end }}
+</ul>
+```
+
+When rendering content of type "books" the `Render` method calls:
+
+```text
+layouts/books/li.html
+```
+
+For all other content types the `Render` methods calls:
+
+```text
+layouts/_default/li.html
+```
+
+See [content views] for more examples.
+
++[content views]: /templates/content-view/
+[`partial`]: /functions/partials/include/
+[content type]: /getting-started/glossary/#content-type
--- /dev/null
- [sitemap templates]: /templates/sitemap-template/
+---
+title: Sitemap
+description: Returns the sitemap settings for the given page as defined in front matter, falling back to the sitemap settings as defined in the site configuration.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: config.SitemapConfig
+ signatures: [PAGE.Sitemap]
+toc: true
+---
+
+Access to the `Sitemap` method on a `Page` object is restricted to [sitemap templates].
+
+## Methods
+
+changefreq
+: (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#changefreqdef).
+
+```go-html-template
+{{ .Sitemap.ChangeFreq }}
+```
+
+disable {{< new-in 0.125.0 >}}
+: (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
+
+```go-html-template
+{{ .Sitemap.Disable }}
+```
+
+priority
+: (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#priority).
+
+```go-html-template
+{{ .Sitemap.Priority }}
+```
+
+## Example
+
+With this site configuration:
+
+{{< code-toggle file=hugo >}}
+[sitemap]
+changeFreq = 'monthly'
+{{< /code-toggle >}}
+
+And this content:
+
+{{< code-toggle file=content/news.md fm=true >}}
+title = 'News'
+[sitemap]
+changeFreq = 'hourly'
+{{< /code-toggle >}}
+
+And this simplistic sitemap template:
+
+{{< code file=layouts/_default/sitemap.xml >}}
+{{ printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }}
+<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
+ xmlns:xhtml="http://www.w3.org/1999/xhtml">
+ {{ range .Pages }}
+ <url>
+ <loc>{{ .Permalink }}</loc>
+ {{ if not .Lastmod.IsZero }}
+ <lastmod>{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }}</lastmod>
+ {{ end }}
+ {{ with .Sitemap.ChangeFreq }}
+ <changefreq>{{ . }}</changefreq>
+ {{ end }}
+ </url>
+ {{ end }}
+</urlset>
+{{< /code >}}
+
+The change frequency will be `hourly` for the news page, and `monthly` for other pages.
+
++[sitemap templates]: /templates/sitemap/
--- /dev/null
+---
+title: Page methods
+linkTitle: Page
+description: Use these methods with a Page object.
+categories: []
+keywords: []
+menu:
+ docs:
+ parent: methods
++aliases: [/variables/page/]
+---
+
+Use these methods with a Page object.
--- /dev/null
- description: Returns the maximum number of pages per pager.
+---
+title: PageSize
++description: Returns the number of pages per pager.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/Paginate
+ returnType: int
+ signatures: [PAGER.PageSize]
++expiryDate: 2025-06-09 # deprecated 2024-06-09
+---
+
++{{% deprecated-in 0.128.0 %}}
++Use [`PAGER.PagerSize`] instead.
++
++[`PAGER.PagerSize`]: /methods/pager/pagersize/
++{{% /deprecated-in %}}
++
++The number of pages per pager is determined by the optional second argument passed to the [`Paginate`] method, falling back to the `pagerSize` as defined in your [site configuration].
++
++[`Paginate`]: /methods/page/paginate/
++[site configuration]: /templates/pagination/#configuration
++
+```go-html-template
+{{ $pages := where site.RegularPages "Type" "posts" }}
+{{ $paginator := .Paginate $pages }}
+
+{{ range $paginator.Pages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+
+{{ with $paginator }}
+ {{ .PageSize }}
+{{ end }}
+```
--- /dev/null
--- /dev/null
++---
++title: PagerSize
++description: Returns the number of pages per pager.
++categories: []
++keywords: []
++action:
++ related:
++ - methods/page/Paginate
++ returnType: int
++ signatures: [PAGER.PagerSize]
++---
++
++{{< new-in 0.128.0 >}}
++
++The number of pages per pager is determined by the optional second argument passed to the [`Paginate`] method, falling back to the `pagerSize` as defined in your [site configuration].
++
++[`Paginate`]: /methods/page/paginate/
++[site configuration]: /templates/pagination/#configuration
++
++```go-html-template
++{{ $pages := where site.RegularPages "Type" "posts" }}
++{{ $paginator := .Paginate $pages }}
++
++{{ range $paginator.Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++{{ end }}
++
++{{ with $paginator }}
++ {{ .PagerSize }}
++{{ end }}
++```
--- /dev/null
- description: Applicable to JPEG and TIFF images, returns an EXIF object containing image metadata.
+---
+title: Exif
- Applicable to JPEG and TIFF images, the `Exif` method on an image `Resource` object returns an [EXIF] object containing image metadata.
++description: Applicable to JPEG, PNG, TIFF, and WebP images, returns an EXIF object containing image metadata.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: exif.ExifInfo
+ signatures: [RESOURCE.Exif]
+toc: true
+---
+
++Applicable to JPEG, PNG, TIFF, and WebP images, the `Exif` method on an image `Resource` object returns an [EXIF] object containing image metadata.
+
+## Methods
+
+Date
+: (`time.Time`) Returns the image creation date/time. Format with the [`time.Format`] function.
+
+Lat
+: (`float64`) Returns the GPS latitude in degrees.
+
+Long
+: (`float64`) Returns the GPS longitude in degrees.
+
+Tags
+: (`exif.Tags`) Returns a collection of the available EXIF tags for this image. You may include or exclude specific tags from this collection in the [site configuration].
+
+## Examples
+
+To list the creation date, location, and EXIF tags:
+
+```go-html-template
+{{ with resources.Get "images/a.jpg" }}
+ {{ with .Exif }}
+ <p>Date: {{ .Date }}</p>
+ <p>Lat/Long: {{ .Lat }}/{{ .Long }}</p>
+ {{ with .Tags }}
+ <p>Tags</p>
+ <table>
+ <thead>
+ <tr><th>Tag</th><th>Value</th></tr>
+ </thead>
+ <tbody>
+ {{ range $k, $v := . }}
+ <tr><td>{{ $k }}</td><td>{{ $v }}</td></tr>
+ {{ end }}
+ </tbody>
+ </table>
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+To list specific values:
+
+```go-html-template
+{{ with resources.Get "images/a.jpg" }}
+ {{ with .Exif }}
+ <ul>
+ {{ with .Date }}<li>Date: {{ .Format "January 02, 2006" }}</li>{{ end }}
+ {{ with .Tags.ApertureValue }}<li>Aperture: {{ lang.FormatNumber 2 . }}</li>{{ end }}
+ {{ with .Tags.BrightnessValue }}<li>Brightness: {{ lang.FormatNumber 2 . }}</li>{{ end }}
+ {{ with .Tags.ExposureTime }}<li>Exposure Time: {{ . }}</li>{{ end }}
+ {{ with .Tags.FNumber }}<li>F Number: {{ . }}</li>{{ end }}
+ {{ with .Tags.FocalLength }}<li>Focal Length: {{ . }}</li>{{ end }}
+ {{ with .Tags.ISOSpeedRatings }}<li>ISO Speed Ratings: {{ . }}</li>{{ end }}
+ {{ with .Tags.LensModel }}<li>Lens Model: {{ . }}</li>{{ end }}
+ </ul>
+ {{ end }}
+{{ end }}
+```
+
+{{% include "methods/resource/_common/global-page-remote-resources.md" %}}
+
+[exif]: https://en.wikipedia.org/wiki/Exif
+[site configuration]: /content-management/image-processing/#exif-data
+[`time.Format`]: /functions/time/format/
--- /dev/null
- This home page template:
+---
+title: GetPage
+description: Returns a Page object from the given path.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/GetPage
+ returnType: page.Page
+ signatures: [SITE.GetPage PATH]
+toc: true
+---
+
+The `GetPage` method is also available on `Page` objects, allowing you to specify a path relative to the current page. See [details].
+
+[details]: /methods/page/getpage/
+
+When using the `GetPage` method on a `Site` object, specify a path relative to the content directory.
+
+If Hugo cannot resolve the path to a page, the method returns nil.
+
+Consider this content structure:
+
+```text
+content/
+├── works/
+│ ├── paintings/
+│ │ ├── _index.md
+│ │ ├── starry-night.md
+│ │ └── the-mona-lisa.md
+│ ├── sculptures/
+│ │ ├── _index.md
+│ │ ├── david.md
+│ │ └── the-thinker.md
+│ └── _index.md
+└── _index.md
+```
+
- In the home page template, use the `GetPage` method on a `Site` object to render all the images in the headless [page bundle]:
++This home template:
+
+```go-html-template
+{{ with .Site.GetPage "/works/paintings" }}
+ <ul>
+ {{ range .Pages }}
+ <li>{{ .Title }} by {{ .Params.artist }}</li>
+ {{ end }}
+ </ul>
+{{ end }}
+```
+
+Is rendered to:
+
+```html
+<ul>
+ <li>Starry Night by Vincent van Gogh</li>
+ <li>The Mona Lisa by Leonardo da Vinci</li>
+</ul>
+```
+
+To get a regular page instead of a section page:
+
+```go-html-template
+{{ with .Site.GetPage "/works/paintings/starry-night" }}
+ {{ .Title }} → Starry Night
+ {{ .Params.artist }} → Vincent van Gogh
+{{ end }}
+```
+
+## Multilingual projects
+
+With multilingual projects, the `GetPage` method on a `Site` object resolves the given path to a page in the current language.
+
+To get a page from a different language, query the `Sites` object:
+
+```go-html-template
+{{ with where .Site.Sites "Language.Lang" "eq" "de" }}
+ {{ with index . 0 }}
+ {{ with .GetPage "/works/paintings/starry-night" }}
+ {{ .Title }} → Sternenklare Nacht
+ {{ end }}
+ {{ end }}
+{{ end }}
+```
+
+## Page bundles
+
+Consider this content structure:
+
+```text
+content/
+├── headless/
+│ ├── a.jpg
+│ ├── b.jpg
+│ ├── c.jpg
+│ └── index.md <-- front matter: headless = true
+└── _index.md
+```
+
++In the home template, use the `GetPage` method on a `Site` object to render all the images in the headless [page bundle]:
+
+```go-html-template
+{{ with .Site.GetPage "/headless" }}
+ {{ range .Resources.ByType "image" }}
+ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="">
+ {{ end }}
+{{ end }}
+```
+
+[page bundle]: /getting-started/glossary/#page-bundle
--- /dev/null
+---
+title: IsMultiLingual
+description: Reports whether there are two or more configured languages.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: bool
+ signatures: [SITE.IsMultiLingual]
++expiryDate: 2025-03-16 # deprecated 2024-03-16
+---
+
+{{% deprecated-in 0.124.0 %}}
+Use [`hugo.IsMultilingual`] instead.
+
+[`hugo.IsMultilingual`]: /functions/hugo/ismultilingual/
+{{% /deprecated-in %}}
+
+Site configuration:
+
+{{< code-toggle file=hugo >}}
+defaultContentLanguage = 'de'
+defaultContentLanguageInSubdir = true
+[languages]
+ [languages.de]
+ languageCode = 'de-DE'
+ languageName = 'Deutsch'
+ title = 'Projekt Dokumentation'
+ weight = 1
+ [languages.en]
+ languageCode = 'en-US'
+ languageName = 'English'
+ title = 'Project Documentation'
+ weight = 2
+{{< /code-toggle >}}
+
+Template:
+
+```go-html-template
+{{ .Site.IsMultiLingual }} → true
+```
--- /dev/null
+---
+title: LastChange
+description: Returns the last modification date of site content.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: time.Time
+ signatures: [SITE.LastChange]
++expiryDate: 2025-02-19 # deprecated 2024-02-19
+---
+
+{{% deprecated-in 0.123.0 %}}
+Use [`.Site.Lastmod`] instead.
+
+[`.Site.Lastmod`]: /methods/site/lastmod/
+{{% /deprecated-in %}}
+
+The `LastChange` method on a `Site` object returns a [`time.Time`] value. Use this with time [functions] and [methods]. For example:
+
+```go-html-template
+{{ .Site.LastChange | time.Format ":date_long" }} → January 31, 2024
+
+```
+
+[`time.Time`]: https://pkg.go.dev/time#Time
+[functions]: /functions/time/
+[methods]: /methods/time/
--- /dev/null
- Then your home page template can do something like this:
+---
+title: MainSections
+description: Returns a slice of the main section names as defined in the site configuration, falling back to the top level section with the most pages.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: '[]string'
+ signatures: [SITE.MainSections]
+---
+
+Site configuration:
+
+{{< code-toggle file=hugo >}}
+[params]
+mainSections = ['books','films']
+{{< /code-toggle >}}
+
+Template:
+
+```go-html-template
+{{ .Site.MainSections }} → [books films]
+```
+
+If `params.mainSections` is not defined in the site configuration, this method returns a slice with one element---the top level section with the most pages.
+
+With this content structure, the "films" section has the most pages:
+
+```text
+content/
+├── books/
+│ ├── book-1.md
+│ └── book-2.md
+├── films/
+│ ├── film-1.md
+│ ├── film-2.md
+│ └── film-3.md
+└── _index.md
+```
+
+Template:
+
+```go-html-template
+{{ .Site.MainSections }} → [films]
+```
+
+When creating a theme, instead of hardcoding section names when listing the most relevant pages on the front page, instruct site authors to set `params.mainSections` in their site configuration.
+
++Then your home template can do something like this:
+
+```go-html-template
+{{ range where .Site.RegularPages "Section" "in" .Site.MainSections }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
--- /dev/null
- [menu templates]: /templates/menu-templates/
+---
+title: Menus
+description: Returns a collection of menu objects for the given site.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/page/IsMenuCurrent
+ - methods/page/HasMenuCurrent
+ returnType: navigation.Menus
+ signatures: [SITE.Menus]
+---
+
+The `Menus` method on a `Site` object returns a collection of menus, where each menu contains one or more entries, either flat or nested. Each entry points to a page within the site, or to an external resource.
+
+{{% note %}}
+Menus can be defined and localized in several ways. Please see the [menus] section for a complete explanation and examples.
+
+[menus]: /content-management/menus/
+{{% /note %}}
+
+A site can have multiple menus. For example, a main menu and a footer menu:
+
+{{< code-toggle file=hugo >}}
+[[menus.main]]
+name = 'Home'
+pageRef = '/'
+weight = 10
+
+[[menus.main]]
+name = 'Books'
+pageRef = '/books'
+weight = 20
+
+[[menus.main]]
+name = 'Films'
+pageRef = '/films'
+weight = 30
+
+[[menus.footer]]
+name = 'Legal'
+pageRef = '/legal'
+weight = 10
+
+[[menus.footer]]
+name = 'Privacy'
+pageRef = '/privacy'
+weight = 20
+{{< /code-toggle >}}
+
+This template renders the main menu:
+
+```go-html-template
+{{ with site.Menus.main }}
+ <nav class="menu">
+ {{ range . }}
+ {{ if $.IsMenuCurrent .Menu . }}
+ <a class="active" aria-current="page" href="{{ .URL }}">{{ .Name }}</a>
+ {{ else }}
+ <a href="{{ .URL }}">{{ .Name }}</a>
+ {{ end }}
+ {{ end }}
+ </nav>
+{{ end }}
+```
+
+When viewing the home page, the result is:
+
+```html
+<nav class="menu">
+ <a class="active" aria-current="page" href="/">Home</a>
+ <a href="/books/">Books</a>
+ <a href="/films/">Films</a>
+</nav>
+```
+
+When viewing the "books" page, the result is:
+
+```html
+<nav class="menu">
+ <a href="/">Home</a>
+ <a class="active" aria-current="page" href="/books/">Books</a>
+ <a href="/films/">Films</a>
+</nav>
+```
+
+You will typically render a menu using a partial template. As the active menu entry will be different on each page, use the [`partial`] function to call the template. Do not use the [`partialCached`] function.
+
+The example above is simplistic. Please see the [menu templates] section for more information.
+
++[menu templates]: /templates/menu/
+
+[`partial`]: /functions/partials/include/
+[`partialCached`]: /functions/partials/includecached/
--- /dev/null
+---
+title: RegularPages
+description: Returns a collection of all regular pages.
+categories: []
+keywords: []
+action:
+ related:
+ - methods/site/AllPages
+ - methods/site/RegularPages
+ - methods/site/Sections
+ returnType: page.Pages
+ signatures: [SITE.RegularPages]
+---
+
++The `RegularPages` method on a `Site` object returns a collection of all [regular pages].
++
++[regular pages]: /getting-started/glossary/#regular-page
++
+```go-html-template
+{{ range .Site.RegularPages }}
+ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
+{{ end }}
+```
+
+By default, Hugo sorts page collections by:
+
+1. The page `weight` as defined in front matter
+1. The page `date` as defined in front matter
+1. The page `linkTitle` as defined in front matter
+1. The file path
+
+If the `linkTitle` is not defined, Hugo evaluates the `title` instead.
+
+To change the sort order, use any of the `Pages` [sorting methods]. For example:
+
+```go-html-template
+{{ range .Site.RegularPages.ByTitle }}
+ <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
+{{ end }}
+```
+
+[sorting methods]: /methods/pages/
--- /dev/null
- description: Returns a data structure containing the site's taxonomy objects, the terms within each taxonomy object, and the pages to which the terms are assigned.
+---
+title: Taxonomies
++description: Returns a data structure containing the site's Taxonomy objects, the terms within each Taxonomy object, and the pages to which the terms are assigned.
+categories: []
+keywords: []
+action:
+ related: []
+ returnType: page.TaxonomyList
+ signatures: [SITE.Taxonomies]
+---
+
++<!-- TODO
++Show template example: GetTerms
++
++
++
++-->
++
+Conceptually, the `Taxonomies` method on a `Site` object returns a data structure such as:
+
+{{< code-toggle >}}
+taxonomy a:
+ - term 1:
+ - page 1
+ - page 2
+ - term 2:
+ - page 1
+taxonomy b:
+ - term 1:
+ - page 2
+ - term 2:
+ - page 1
+ - page 2
+{{< /code-toggle >}}
+
+For example, on a book review site you might create two taxonomies; one for genres and another for authors.
+
+With this site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+genre = 'genres'
+author = 'authors'
+{{< /code-toggle >}}
+
+And this content structure:
+
+```text
+content/
+├── books/
+│ ├── and-then-there-were-none.md --> genres: suspense
+│ ├── death-on-the-nile.md --> genres: suspense
+│ └── jamaica-inn.md --> genres: suspense, romance
+│ └── pride-and-prejudice.md --> genres: romance
+└── _index.md
+```
+
+Conceptually, the taxonomies data structure looks like:
+
+{{< code-toggle >}}
+genres:
+ - suspense:
+ - And Then There Were None
+ - Death on the Nile
+ - Jamaica Inn
+ - romance:
+ - Jamaica Inn
+ - Pride and Prejudice
+authors:
+ - achristie:
+ - And Then There Were None
+ - Death on the Nile
+ - ddmaurier:
+ - Jamaica Inn
+ - jausten:
+ - Pride and Prejudice
+{{< /code-toggle >}}
+
+
+To list the "suspense" books:
+
+```go-html-template
+<ul>
+ {{ range .Site.Taxonomies.genres.suspense }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+</ul>
+```
+
+Hugo renders this to:
+
+```html
+<ul>
+ <li><a href="/books/and-then-there-were-none/">And Then There Were None</a></li>
+ <li><a href="/books/death-on-the-nile/">Death on the Nile</a></li>
+ <li><a href="/books/jamaica-inn/">Jamaica Inn</a></li>
+</ul>
+```
+
+{{% note %}}
+Hugo's taxonomy system is powerful, allowing you to classify content and create relationships between pages.
+
+Please see the [taxonomies] section for a complete explanation and examples.
+
+[taxonomies]: /content-management/taxonomies/
+{{% /note %}}
++
++## Examples
++
++### List content with the same taxonomy term
++
++If you are using a taxonomy for something like a series of posts, you can list individual pages associated with the same term. For example:
++
++```go-html-template
++<ul>
++ {{ range .Site.Taxonomies.series.golang }}
++ <li><a href="{{ .Page.RelPermalink }}">{{ .Page.Title }}</a></li>
++ {{ end }}
++</ul>
++```
++
++### List all content in a given taxonomy
++
++This would be very useful in a sidebar as “featured content”. You could even have different sections of “featured content” by assigning different terms to the content.
++
++```go-html-template
++<section id="menu">
++ <ul>
++ {{ range $term, $taxonomy := .Site.Taxonomies.featured }}
++ <li>{{ $term }}</li>
++ <ul>
++ {{ range $taxonomy.Pages }}
++ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
++ {{ end }}
++ </ul>
++ {{ end }}
++ </ul>
++</section>
++```
++
++### Render a site's taxonomies
++
++The following example displays all terms in a site's tags taxonomy:
++
++```go-html-template
++<ul>
++ {{ range .Site.Taxonomies.tags }}
++ <li><a href="{{ .Page.Permalink }}">{{ .Page.Title }}</a> {{ .Count }}</li>
++ {{ end }}
++</ul>
++```
++This example will list all taxonomies and their terms, as well as all the content assigned to each of the terms.
++
++{{< code file=layouts/partials/all-taxonomies.html >}}
++{{ with .Site.Taxonomies }}
++ {{ $numberOfTerms := 0 }}
++ {{ range $taxonomy, $terms := . }}
++ {{ $numberOfTerms = len . | add $numberOfTerms }}
++ {{ end }}
++
++ {{ if gt $numberOfTerms 0 }}
++ <ul>
++ {{ range $taxonomy, $terms := . }}
++ {{ with $terms }}
++ <li>
++ <a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a>
++ <ul>
++ {{ range $term, $weightedPages := . }}
++ <li>
++ <a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a>
++ <ul>
++ {{ range $weightedPages }}
++ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
++ {{ end }}
++ </ul>
++ </li>
++ {{ end }}
++ </ul>
++ </li>
++ {{ end }}
++ {{ end }}
++ </ul>
++ {{ end }}
++{{ end }}
++{{< /code >}}
--- /dev/null
+---
+title: Site methods
+linkTitle: Site
+description: Use these methods with Site objects.
+categories: []
+keywords: []
+menu:
+ docs:
+ parent: methods
++aliases: [/variables/site/]
+---
+
+Use these methods with Site objects. A multilingual project will have two or more sites, one for each language.
--- /dev/null
- ## Capture a taxonomy object
+---
+# Do not remove front matter.
+---
+
+Before we can use a `Taxonomy` method, we need to capture a `Taxonomy` object.
+
- To capture the "genres" taxonomy object from within any template, use the [`Taxonomies`] method on a `Site` object.
++## Capture a Taxonomy object
+
+Consider this site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+genre = 'genres'
+author = 'authors'
+{{< /code-toggle >}}
+
+And this content structure:
+
+```text
+content/
+├── books/
+│ ├── and-then-there-were-none.md --> genres: suspense
+│ ├── death-on-the-nile.md --> genres: suspense
+│ └── jamaica-inn.md --> genres: suspense, romance
+│ └── pride-and-prejudice.md --> genres: romance
+└── _index.md
+```
+
- To capture the "genres" taxonomy object when rendering its page with a taxonomy template, use the [`Terms`] method on the page's [`Data`] object:
++To capture the "genres" `Taxonomy` object from within any template, use the [`Taxonomies`] method on a `Site` object.
+
+```go-html-template
+{{ $taxonomyObject := .Site.Taxonomies.genres }}
+```
+
++To capture the "genres" `Taxonomy` object when rendering its page with a taxonomy template, use the [`Terms`] method on the page's [`Data`] object:
+
+{{< code file=layouts/_default/taxonomy.html >}}
+{{ $taxonomyObject := .Data.Terms }}
+{{< /code >}}
+
+To inspect the data structure:
+
+```go-html-template
+<pre>{{ debug.Dump $taxonomyObject }}</pre>
+```
+
+Although the [`Alphabetical`] and [`ByCount`] methods provide a better data structure for ranging through the taxonomy, you can render the weighted pages by term directly from the `Taxonomy` object:
+
+```go-html-template
+{{ range $term, $weightedPages := $taxonomyObject }}
+ <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
+ <ul>
+ {{ range $weightedPages }}
+ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
+ {{ end }}
+ </ul>
+{{ end }}
+```
+
+In the example above, the first anchor element is a link to the term page.
+
+
+[`Alphabetical`]: /methods/taxonomy/alphabetical/
+[`ByCount`]: /methods/taxonomy/bycount/
+
+[`data`]: /methods/page/data/
+[`terms`]: /methods/page/data/#in-a-taxonomy-template
+[`taxonomies`]: /methods/site/taxonomies/
--- /dev/null
+---
+title: Taxonomy methods
+linkTitle: Taxonomy
+description: Use these methods with Taxonomy objects.
+keywords: []
+menu:
+ docs:
+ identifier:
+ parent: methods
++aliases: [/variables/taxonomy/]
+---
+
+Use these methods with Taxonomy objects.
--- /dev/null
- ## Introduction
+---
+title: Emojis
+description: Include emoji shortcodes in your Markdown or templates.
+categories: [quick reference]
+keywords: [emoji]
+menu:
+ docs:
+ parent: quick-reference
+ weight: 20
+weight: 20
+toc: true
+---
+
++## Attribution
++
++This quick reference guide was generated using the [ikatyang/emoji-cheat-sheet] project which reads from the [GitHub Emoji API] and the [Unicode Full Emoji List].
++
++Note that GitHub [custom emoji] are not supported.
++
++[custom emoji]: #github-custom-emoji
++[github emoji api]: https://api.github.com/emojis
++[ikatyang/emoji-cheat-sheet]: https://github.com/ikatyang/emoji-cheat-sheet/
++[unicode full emoji list]: https://unicode.org/emoji/charts/full-emoji-list.html
++
++## Usage
++
+Configure Hugo to enable emoji processing in Markdown:
+
+{{< code-toggle file=hugo >}}
+enableEmoji = true
+{{< /code-toggle >}}
+
+With emoji processing enabled, this Markdown:
+
+```md
+Hello! :wave:
+```
+
+Is rendered to:
+
+```html
+Hello! 👋
+```
+
+And in your browser... Hello! :wave:
+
+To process an emoji shortcode from within a template, use the [`emojify`] function or pass the string through the [`RenderString`] method on a `Page` object:
+
+```go-html-template
+{{ "Hello! :wave:" | .RenderString }}
+```
+
+[`emojify`]: /functions/transform/emojify/
+[`RenderString`]: /methods/page/renderstring/
+
- This quick reference guide was automatically generated from [GitHub Emoji API] and [Unicode Full Emoji List]. Specials thanks to [@ikatyang] for making [this list] available to the open-source community.
++<!--
++To generate the sections below:
+
- GitHub [custom emoji] are not supported.
++ git clone https://github.com/ikatyang/emoji-cheat-sheet
++ cd emoji-cheat-sheet
++ npm install
++ npm run generate
+
- [custom emoji]: #github-custom-emoji
- [@ikatyang]: https://github.com/ikatyang
- [github emoji api]: https://api.github.com/emojis
- [unicode full emoji list]: https://unicode.org/emoji/charts/full-emoji-list.html
- [this list]: https://github.com/ikatyang/emoji-cheat-sheet/#readme
++Then...
+
- | [top](#introduction) | :grinning: | `:grinning:` | :smiley: | `:smiley:` | [top](#introduction) |
- | [top](#introduction) | :smile: | `:smile:` | :grin: | `:grin:` | [top](#introduction) |
- | [top](#introduction) | :laughing: | `:laughing:` `:satisfied:` | :sweat_smile: | `:sweat_smile:` | [top](#introduction) |
- | [top](#introduction) | :rofl: | `:rofl:` | :joy: | `:joy:` | [top](#introduction) |
- | [top](#introduction) | :slightly_smiling_face: | `:slightly_smiling_face:` | :upside_down_face: | `:upside_down_face:` | [top](#introduction) |
- | [top](#introduction) | :wink: | `:wink:` | :blush: | `:blush:` | [top](#introduction) |
- | [top](#introduction) | :innocent: | `:innocent:` | | | [top](#introduction) |
++ 1. Copy and paste from README.md
++ 2. Search/replace (regex) "^###\s" with "## "
++ 3. Search/replace "^####\s " with "### "
++-->
++
++## Table of Contents
++
++- [Smileys & Emotion](#smileys--emotion)
++- [People & Body](#people--body)
++- [Animals & Nature](#animals--nature)
++- [Food & Drink](#food--drink)
++- [Travel & Places](#travel--places)
++- [Activities](#activities)
++- [Objects](#objects)
++- [Symbols](#symbols)
++- [Flags](#flags)
++- [GitHub Custom Emoji](#github-custom-emoji)
+
+## Smileys & Emotion
+
+- [Face Smiling](#face-smiling)
+- [Face Affection](#face-affection)
+- [Face Tongue](#face-tongue)
+- [Face Hand](#face-hand)
+- [Face Neutral Skeptical](#face-neutral-skeptical)
+- [Face Sleepy](#face-sleepy)
+- [Face Unwell](#face-unwell)
+- [Face Hat](#face-hat)
+- [Face Glasses](#face-glasses)
+- [Face Concerned](#face-concerned)
+- [Face Negative](#face-negative)
+- [Face Costume](#face-costume)
+- [Cat Face](#cat-face)
+- [Monkey Face](#monkey-face)
+- [Heart](#heart)
+- [Emotion](#emotion)
+
+### Face Smiling
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :smiling_face_with_three_hearts: | `:smiling_face_with_three_hearts:` | :heart_eyes: | `:heart_eyes:` | [top](#introduction) |
- | [top](#introduction) | :star_struck: | `:star_struck:` | :kissing_heart: | `:kissing_heart:` | [top](#introduction) |
- | [top](#introduction) | :kissing: | `:kissing:` | :relaxed: | `:relaxed:` | [top](#introduction) |
- | [top](#introduction) | :kissing_closed_eyes: | `:kissing_closed_eyes:` | :kissing_smiling_eyes: | `:kissing_smiling_eyes:` | [top](#introduction) |
- | [top](#introduction) | :smiling_face_with_tear: | `:smiling_face_with_tear:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :grinning: | `:grinning:` | :smiley: | `:smiley:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :smile: | `:smile:` | :grin: | `:grin:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :laughing: | `:laughing:` <br /> `:satisfied:` | :sweat_smile: | `:sweat_smile:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :rofl: | `:rofl:` | :joy: | `:joy:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :slightly_smiling_face: | `:slightly_smiling_face:` | :upside_down_face: | `:upside_down_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :melting_face: | `:melting_face:` | :wink: | `:wink:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :blush: | `:blush:` | :innocent: | `:innocent:` | [top](#table-of-contents) |
+
+### Face Affection
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :yum: | `:yum:` | :stuck_out_tongue: | `:stuck_out_tongue:` | [top](#introduction) |
- | [top](#introduction) | :stuck_out_tongue_winking_eye: | `:stuck_out_tongue_winking_eye:` | :zany_face: | `:zany_face:` | [top](#introduction) |
- | [top](#introduction) | :stuck_out_tongue_closed_eyes: | `:stuck_out_tongue_closed_eyes:` | :money_mouth_face: | `:money_mouth_face:` | [top](#introduction) |
++| [top](#smileys--emotion) | :smiling_face_with_three_hearts: | `:smiling_face_with_three_hearts:` | :heart_eyes: | `:heart_eyes:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :star_struck: | `:star_struck:` | :kissing_heart: | `:kissing_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :kissing: | `:kissing:` | :relaxed: | `:relaxed:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :kissing_closed_eyes: | `:kissing_closed_eyes:` | :kissing_smiling_eyes: | `:kissing_smiling_eyes:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :smiling_face_with_tear: | `:smiling_face_with_tear:` | | | [top](#table-of-contents) |
+
+### Face Tongue
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :hugs: | `:hugs:` | :hand_over_mouth: | `:hand_over_mouth:` | [top](#introduction) |
- | [top](#introduction) | :shushing_face: | `:shushing_face:` | :thinking: | `:thinking:` | [top](#introduction) |
++| [top](#smileys--emotion) | :yum: | `:yum:` | :stuck_out_tongue: | `:stuck_out_tongue:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :stuck_out_tongue_winking_eye: | `:stuck_out_tongue_winking_eye:` | :zany_face: | `:zany_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :stuck_out_tongue_closed_eyes: | `:stuck_out_tongue_closed_eyes:` | :money_mouth_face: | `:money_mouth_face:` | [top](#table-of-contents) |
+
+### Face Hand
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :zipper_mouth_face: | `:zipper_mouth_face:` | :raised_eyebrow: | `:raised_eyebrow:` | [top](#introduction) |
- | [top](#introduction) | :neutral_face: | `:neutral_face:` | :expressionless: | `:expressionless:` | [top](#introduction) |
- | [top](#introduction) | :no_mouth: | `:no_mouth:` | :face_in_clouds: | `:face_in_clouds:` | [top](#introduction) |
- | [top](#introduction) | :smirk: | `:smirk:` | :unamused: | `:unamused:` | [top](#introduction) |
- | [top](#introduction) | :roll_eyes: | `:roll_eyes:` | :grimacing: | `:grimacing:` | [top](#introduction) |
- | [top](#introduction) | :face_exhaling: | `:face_exhaling:` | :lying_face: | `:lying_face:` | [top](#introduction) |
++| [top](#smileys--emotion) | :hugs: | `:hugs:` | :hand_over_mouth: | `:hand_over_mouth:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :face_with_open_eyes_and_hand_over_mouth: | `:face_with_open_eyes_and_hand_over_mouth:` | :face_with_peeking_eye: | `:face_with_peeking_eye:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :shushing_face: | `:shushing_face:` | :thinking: | `:thinking:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :saluting_face: | `:saluting_face:` | | | [top](#table-of-contents) |
+
+### Face Neutral Skeptical
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :relieved: | `:relieved:` | :pensive: | `:pensive:` | [top](#introduction) |
- | [top](#introduction) | :sleepy: | `:sleepy:` | :drooling_face: | `:drooling_face:` | [top](#introduction) |
- | [top](#introduction) | :sleeping: | `:sleeping:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :zipper_mouth_face: | `:zipper_mouth_face:` | :raised_eyebrow: | `:raised_eyebrow:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :neutral_face: | `:neutral_face:` | :expressionless: | `:expressionless:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :no_mouth: | `:no_mouth:` | :dotted_line_face: | `:dotted_line_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :face_in_clouds: | `:face_in_clouds:` | :smirk: | `:smirk:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :unamused: | `:unamused:` | :roll_eyes: | `:roll_eyes:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :grimacing: | `:grimacing:` | :face_exhaling: | `:face_exhaling:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :lying_face: | `:lying_face:` | :shaking_face: | `:shaking_face:` | [top](#table-of-contents) |
+
+### Face Sleepy
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :mask: | `:mask:` | :face_with_thermometer: | `:face_with_thermometer:` | [top](#introduction) |
- | [top](#introduction) | :face_with_head_bandage: | `:face_with_head_bandage:` | :nauseated_face: | `:nauseated_face:` | [top](#introduction) |
- | [top](#introduction) | :vomiting_face: | `:vomiting_face:` | :sneezing_face: | `:sneezing_face:` | [top](#introduction) |
- | [top](#introduction) | :hot_face: | `:hot_face:` | :cold_face: | `:cold_face:` | [top](#introduction) |
- | [top](#introduction) | :woozy_face: | `:woozy_face:` | :dizzy_face: | `:dizzy_face:` | [top](#introduction) |
- | [top](#introduction) | :face_with_spiral_eyes: | `:face_with_spiral_eyes:` | :exploding_head: | `:exploding_head:` | [top](#introduction) |
++| [top](#smileys--emotion) | :relieved: | `:relieved:` | :pensive: | `:pensive:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :sleepy: | `:sleepy:` | :drooling_face: | `:drooling_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :sleeping: | `:sleeping:` | | | [top](#table-of-contents) |
+
+### Face Unwell
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :cowboy_hat_face: | `:cowboy_hat_face:` | :partying_face: | `:partying_face:` | [top](#introduction) |
- | [top](#introduction) | :disguised_face: | `:disguised_face:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :mask: | `:mask:` | :face_with_thermometer: | `:face_with_thermometer:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :face_with_head_bandage: | `:face_with_head_bandage:` | :nauseated_face: | `:nauseated_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :vomiting_face: | `:vomiting_face:` | :sneezing_face: | `:sneezing_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :hot_face: | `:hot_face:` | :cold_face: | `:cold_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :woozy_face: | `:woozy_face:` | :dizzy_face: | `:dizzy_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :face_with_spiral_eyes: | `:face_with_spiral_eyes:` | :exploding_head: | `:exploding_head:` | [top](#table-of-contents) |
+
+### Face Hat
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :sunglasses: | `:sunglasses:` | :nerd_face: | `:nerd_face:` | [top](#introduction) |
- | [top](#introduction) | :monocle_face: | `:monocle_face:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :cowboy_hat_face: | `:cowboy_hat_face:` | :partying_face: | `:partying_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :disguised_face: | `:disguised_face:` | | | [top](#table-of-contents) |
+
+### Face Glasses
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :confused: | `:confused:` | :worried: | `:worried:` | [top](#introduction) |
- | [top](#introduction) | :slightly_frowning_face: | `:slightly_frowning_face:` | :frowning_face: | `:frowning_face:` | [top](#introduction) |
- | [top](#introduction) | :open_mouth: | `:open_mouth:` | :hushed: | `:hushed:` | [top](#introduction) |
- | [top](#introduction) | :astonished: | `:astonished:` | :flushed: | `:flushed:` | [top](#introduction) |
- | [top](#introduction) | :pleading_face: | `:pleading_face:` | :frowning: | `:frowning:` | [top](#introduction) |
- | [top](#introduction) | :anguished: | `:anguished:` | :fearful: | `:fearful:` | [top](#introduction) |
- | [top](#introduction) | :cold_sweat: | `:cold_sweat:` | :disappointed_relieved: | `:disappointed_relieved:` | [top](#introduction) |
- | [top](#introduction) | :cry: | `:cry:` | :sob: | `:sob:` | [top](#introduction) |
- | [top](#introduction) | :scream: | `:scream:` | :confounded: | `:confounded:` | [top](#introduction) |
- | [top](#introduction) | :persevere: | `:persevere:` | :disappointed: | `:disappointed:` | [top](#introduction) |
- | [top](#introduction) | :sweat: | `:sweat:` | :weary: | `:weary:` | [top](#introduction) |
- | [top](#introduction) | :tired_face: | `:tired_face:` | :yawning_face: | `:yawning_face:` | [top](#introduction) |
++| [top](#smileys--emotion) | :sunglasses: | `:sunglasses:` | :nerd_face: | `:nerd_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :monocle_face: | `:monocle_face:` | | | [top](#table-of-contents) |
+
+### Face Concerned
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :triumph: | `:triumph:` | :pout: | `:pout:` `:rage:` | [top](#introduction) |
- | [top](#introduction) | :angry: | `:angry:` | :cursing_face: | `:cursing_face:` | [top](#introduction) |
- | [top](#introduction) | :smiling_imp: | `:smiling_imp:` | :imp: | `:imp:` | [top](#introduction) |
- | [top](#introduction) | :skull: | `:skull:` | :skull_and_crossbones: | `:skull_and_crossbones:` | [top](#introduction) |
++| [top](#smileys--emotion) | :confused: | `:confused:` | :face_with_diagonal_mouth: | `:face_with_diagonal_mouth:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :worried: | `:worried:` | :slightly_frowning_face: | `:slightly_frowning_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :frowning_face: | `:frowning_face:` | :open_mouth: | `:open_mouth:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :hushed: | `:hushed:` | :astonished: | `:astonished:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :flushed: | `:flushed:` | :pleading_face: | `:pleading_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :face_holding_back_tears: | `:face_holding_back_tears:` | :frowning: | `:frowning:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :anguished: | `:anguished:` | :fearful: | `:fearful:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :cold_sweat: | `:cold_sweat:` | :disappointed_relieved: | `:disappointed_relieved:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :cry: | `:cry:` | :sob: | `:sob:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :scream: | `:scream:` | :confounded: | `:confounded:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :persevere: | `:persevere:` | :disappointed: | `:disappointed:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :sweat: | `:sweat:` | :weary: | `:weary:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :tired_face: | `:tired_face:` | :yawning_face: | `:yawning_face:` | [top](#table-of-contents) |
+
+### Face Negative
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :hankey: | `:hankey:` `:poop:` `:shit:` | :clown_face: | `:clown_face:` | [top](#introduction) |
- | [top](#introduction) | :japanese_ogre: | `:japanese_ogre:` | :japanese_goblin: | `:japanese_goblin:` | [top](#introduction) |
- | [top](#introduction) | :ghost: | `:ghost:` | :alien: | `:alien:` | [top](#introduction) |
- | [top](#introduction) | :space_invader: | `:space_invader:` | :robot: | `:robot:` | [top](#introduction) |
++| [top](#smileys--emotion) | :triumph: | `:triumph:` | :pout: | `:pout:` <br /> `:rage:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :angry: | `:angry:` | :cursing_face: | `:cursing_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :smiling_imp: | `:smiling_imp:` | :imp: | `:imp:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :skull: | `:skull:` | :skull_and_crossbones: | `:skull_and_crossbones:` | [top](#table-of-contents) |
+
+### Face Costume
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :smiley_cat: | `:smiley_cat:` | :smile_cat: | `:smile_cat:` | [top](#introduction) |
- | [top](#introduction) | :joy_cat: | `:joy_cat:` | :heart_eyes_cat: | `:heart_eyes_cat:` | [top](#introduction) |
- | [top](#introduction) | :smirk_cat: | `:smirk_cat:` | :kissing_cat: | `:kissing_cat:` | [top](#introduction) |
- | [top](#introduction) | :scream_cat: | `:scream_cat:` | :crying_cat_face: | `:crying_cat_face:` | [top](#introduction) |
- | [top](#introduction) | :pouting_cat: | `:pouting_cat:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :hankey: | `:hankey:` <br /> `:poop:` <br /> `:shit:` | :clown_face: | `:clown_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :japanese_ogre: | `:japanese_ogre:` | :japanese_goblin: | `:japanese_goblin:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :ghost: | `:ghost:` | :alien: | `:alien:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :space_invader: | `:space_invader:` | :robot: | `:robot:` | [top](#table-of-contents) |
+
+### Cat Face
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :see_no_evil: | `:see_no_evil:` | :hear_no_evil: | `:hear_no_evil:` | [top](#introduction) |
- | [top](#introduction) | :speak_no_evil: | `:speak_no_evil:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :smiley_cat: | `:smiley_cat:` | :smile_cat: | `:smile_cat:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :joy_cat: | `:joy_cat:` | :heart_eyes_cat: | `:heart_eyes_cat:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :smirk_cat: | `:smirk_cat:` | :kissing_cat: | `:kissing_cat:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :scream_cat: | `:scream_cat:` | :crying_cat_face: | `:crying_cat_face:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :pouting_cat: | `:pouting_cat:` | | | [top](#table-of-contents) |
+
+### Monkey Face
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :love_letter: | `:love_letter:` | :cupid: | `:cupid:` | [top](#introduction) |
- | [top](#introduction) | :gift_heart: | `:gift_heart:` | :sparkling_heart: | `:sparkling_heart:` | [top](#introduction) |
- | [top](#introduction) | :heartpulse: | `:heartpulse:` | :heartbeat: | `:heartbeat:` | [top](#introduction) |
- | [top](#introduction) | :revolving_hearts: | `:revolving_hearts:` | :two_hearts: | `:two_hearts:` | [top](#introduction) |
- | [top](#introduction) | :heart_decoration: | `:heart_decoration:` | :heavy_heart_exclamation: | `:heavy_heart_exclamation:` | [top](#introduction) |
- | [top](#introduction) | :broken_heart: | `:broken_heart:` | :heart_on_fire: | `:heart_on_fire:` | [top](#introduction) |
- | [top](#introduction) | :mending_heart: | `:mending_heart:` | :heart: | `:heart:` | [top](#introduction) |
- | [top](#introduction) | :orange_heart: | `:orange_heart:` | :yellow_heart: | `:yellow_heart:` | [top](#introduction) |
- | [top](#introduction) | :green_heart: | `:green_heart:` | :blue_heart: | `:blue_heart:` | [top](#introduction) |
- | [top](#introduction) | :purple_heart: | `:purple_heart:` | :brown_heart: | `:brown_heart:` | [top](#introduction) |
- | [top](#introduction) | :black_heart: | `:black_heart:` | :white_heart: | `:white_heart:` | [top](#introduction) |
++| [top](#smileys--emotion) | :see_no_evil: | `:see_no_evil:` | :hear_no_evil: | `:hear_no_evil:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :speak_no_evil: | `:speak_no_evil:` | | | [top](#table-of-contents) |
+
+### Heart
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#introduction) | :kiss: | `:kiss:` | :100: | `:100:` | [top](#introduction) |
- | [top](#introduction) | :anger: | `:anger:` | :boom: | `:boom:` `:collision:` | [top](#introduction) |
- | [top](#introduction) | :dizzy: | `:dizzy:` | :sweat_drops: | `:sweat_drops:` | [top](#introduction) |
- | [top](#introduction) | :dash: | `:dash:` | :hole: | `:hole:` | [top](#introduction) |
- | [top](#introduction) | :speech_balloon: | `:speech_balloon:` | :eye_speech_bubble: | `:eye_speech_bubble:` | [top](#introduction) |
- | [top](#introduction) | :left_speech_bubble: | `:left_speech_bubble:` | :right_anger_bubble: | `:right_anger_bubble:` | [top](#introduction) |
- | [top](#introduction) | :thought_balloon: | `:thought_balloon:` | :zzz: | `:zzz:` | [top](#introduction) |
++| [top](#smileys--emotion) | :love_letter: | `:love_letter:` | :cupid: | `:cupid:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :gift_heart: | `:gift_heart:` | :sparkling_heart: | `:sparkling_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :heartpulse: | `:heartpulse:` | :heartbeat: | `:heartbeat:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :revolving_hearts: | `:revolving_hearts:` | :two_hearts: | `:two_hearts:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :heart_decoration: | `:heart_decoration:` | :heavy_heart_exclamation: | `:heavy_heart_exclamation:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :broken_heart: | `:broken_heart:` | :heart_on_fire: | `:heart_on_fire:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :mending_heart: | `:mending_heart:` | :heart: | `:heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :pink_heart: | `:pink_heart:` | :orange_heart: | `:orange_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :yellow_heart: | `:yellow_heart:` | :green_heart: | `:green_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :blue_heart: | `:blue_heart:` | :light_blue_heart: | `:light_blue_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :purple_heart: | `:purple_heart:` | :brown_heart: | `:brown_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :black_heart: | `:black_heart:` | :grey_heart: | `:grey_heart:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :white_heart: | `:white_heart:` | | | [top](#table-of-contents) |
+
+### Emotion
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :wave: | `:wave:` | :raised_back_of_hand: | `:raised_back_of_hand:` | [top](#introduction) |
- | [top](#people--body) | :raised_hand_with_fingers_splayed: | `:raised_hand_with_fingers_splayed:` | :hand: | `:hand:` `:raised_hand:` | [top](#introduction) |
- | [top](#people--body) | :vulcan_salute: | `:vulcan_salute:` | | | [top](#introduction) |
++| [top](#smileys--emotion) | :kiss: | `:kiss:` | :100: | `:100:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :anger: | `:anger:` | :boom: | `:boom:` <br /> `:collision:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :dizzy: | `:dizzy:` | :sweat_drops: | `:sweat_drops:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :dash: | `:dash:` | :hole: | `:hole:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :speech_balloon: | `:speech_balloon:` | :eye_speech_bubble: | `:eye_speech_bubble:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :left_speech_bubble: | `:left_speech_bubble:` | :right_anger_bubble: | `:right_anger_bubble:` | [top](#table-of-contents) |
++| [top](#smileys--emotion) | :thought_balloon: | `:thought_balloon:` | :zzz: | `:zzz:` | [top](#table-of-contents) |
+
+## People & Body
+
+- [Hand Fingers Open](#hand-fingers-open)
+- [Hand Fingers Partial](#hand-fingers-partial)
+- [Hand Single Finger](#hand-single-finger)
+- [Hand Fingers Closed](#hand-fingers-closed)
+- [Hands](#hands)
+- [Hand Prop](#hand-prop)
+- [Body Parts](#body-parts)
+- [Person](#person)
+- [Person Gesture](#person-gesture)
+- [Person Role](#person-role)
+- [Person Fantasy](#person-fantasy)
+- [Person Activity](#person-activity)
+- [Person Sport](#person-sport)
+- [Person Resting](#person-resting)
+- [Family](#family)
+- [Person Symbol](#person-symbol)
+
+### Hand Fingers Open
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :ok_hand: | `:ok_hand:` | :pinched_fingers: | `:pinched_fingers:` | [top](#introduction) |
- | [top](#people--body) | :pinching_hand: | `:pinching_hand:` | :v: | `:v:` | [top](#introduction) |
- | [top](#people--body) | :crossed_fingers: | `:crossed_fingers:` | :love_you_gesture: | `:love_you_gesture:` | [top](#introduction) |
- | [top](#people--body) | :metal: | `:metal:` | :call_me_hand: | `:call_me_hand:` | [top](#introduction) |
++| [top](#people--body) | :wave: | `:wave:` | :raised_back_of_hand: | `:raised_back_of_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :raised_hand_with_fingers_splayed: | `:raised_hand_with_fingers_splayed:` | :hand: | `:hand:` <br /> `:raised_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :vulcan_salute: | `:vulcan_salute:` | :rightwards_hand: | `:rightwards_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :leftwards_hand: | `:leftwards_hand:` | :palm_down_hand: | `:palm_down_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :palm_up_hand: | `:palm_up_hand:` | :leftwards_pushing_hand: | `:leftwards_pushing_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :rightwards_pushing_hand: | `:rightwards_pushing_hand:` | | | [top](#table-of-contents) |
+
+### Hand Fingers Partial
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :point_left: | `:point_left:` | :point_right: | `:point_right:` | [top](#introduction) |
- | [top](#people--body) | :point_up_2: | `:point_up_2:` | :fu: | `:fu:` `:middle_finger:` | [top](#introduction) |
- | [top](#people--body) | :point_down: | `:point_down:` | :point_up: | `:point_up:` | [top](#introduction) |
++| [top](#people--body) | :ok_hand: | `:ok_hand:` | :pinched_fingers: | `:pinched_fingers:` | [top](#table-of-contents) |
++| [top](#people--body) | :pinching_hand: | `:pinching_hand:` | :v: | `:v:` | [top](#table-of-contents) |
++| [top](#people--body) | :crossed_fingers: | `:crossed_fingers:` | :hand_with_index_finger_and_thumb_crossed: | `:hand_with_index_finger_and_thumb_crossed:` | [top](#table-of-contents) |
++| [top](#people--body) | :love_you_gesture: | `:love_you_gesture:` | :metal: | `:metal:` | [top](#table-of-contents) |
++| [top](#people--body) | :call_me_hand: | `:call_me_hand:` | | | [top](#table-of-contents) |
+
+### Hand Single Finger
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :+1: | `:+1:` `:thumbsup:` | :-1: | `:-1:` `:thumbsdown:` | [top](#introduction) |
- | [top](#people--body) | :fist: | `:fist:` `:fist_raised:` | :facepunch: | `:facepunch:` `:fist_oncoming:` `:punch:` | [top](#introduction) |
- | [top](#people--body) | :fist_left: | `:fist_left:` | :fist_right: | `:fist_right:` | [top](#introduction) |
++| [top](#people--body) | :point_left: | `:point_left:` | :point_right: | `:point_right:` | [top](#table-of-contents) |
++| [top](#people--body) | :point_up_2: | `:point_up_2:` | :fu: | `:fu:` <br /> `:middle_finger:` | [top](#table-of-contents) |
++| [top](#people--body) | :point_down: | `:point_down:` | :point_up: | `:point_up:` | [top](#table-of-contents) |
++| [top](#people--body) | :index_pointing_at_the_viewer: | `:index_pointing_at_the_viewer:` | | | [top](#table-of-contents) |
+
+### Hand Fingers Closed
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :clap: | `:clap:` | :raised_hands: | `:raised_hands:` | [top](#introduction) |
- | [top](#people--body) | :open_hands: | `:open_hands:` | :palms_up_together: | `:palms_up_together:` | [top](#introduction) |
- | [top](#people--body) | :handshake: | `:handshake:` | :pray: | `:pray:` | [top](#introduction) |
++| [top](#people--body) | :+1: | `:+1:` <br /> `:thumbsup:` | :-1: | `:-1:` <br /> `:thumbsdown:` | [top](#table-of-contents) |
++| [top](#people--body) | :fist: | `:fist:` <br /> `:fist_raised:` | :facepunch: | `:facepunch:` <br /> `:fist_oncoming:` <br /> `:punch:` | [top](#table-of-contents) |
++| [top](#people--body) | :fist_left: | `:fist_left:` | :fist_right: | `:fist_right:` | [top](#table-of-contents) |
+
+### Hands
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :writing_hand: | `:writing_hand:` | :nail_care: | `:nail_care:` | [top](#introduction) |
- | [top](#people--body) | :selfie: | `:selfie:` | | | [top](#introduction) |
++| [top](#people--body) | :clap: | `:clap:` | :raised_hands: | `:raised_hands:` | [top](#table-of-contents) |
++| [top](#people--body) | :heart_hands: | `:heart_hands:` | :open_hands: | `:open_hands:` | [top](#table-of-contents) |
++| [top](#people--body) | :palms_up_together: | `:palms_up_together:` | :handshake: | `:handshake:` | [top](#table-of-contents) |
++| [top](#people--body) | :pray: | `:pray:` | | | [top](#table-of-contents) |
+
+### Hand Prop
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :muscle: | `:muscle:` | :mechanical_arm: | `:mechanical_arm:` | [top](#introduction) |
- | [top](#people--body) | :mechanical_leg: | `:mechanical_leg:` | :leg: | `:leg:` | [top](#introduction) |
- | [top](#people--body) | :foot: | `:foot:` | :ear: | `:ear:` | [top](#introduction) |
- | [top](#people--body) | :ear_with_hearing_aid: | `:ear_with_hearing_aid:` | :nose: | `:nose:` | [top](#introduction) |
- | [top](#people--body) | :brain: | `:brain:` | :anatomical_heart: | `:anatomical_heart:` | [top](#introduction) |
- | [top](#people--body) | :lungs: | `:lungs:` | :tooth: | `:tooth:` | [top](#introduction) |
- | [top](#people--body) | :bone: | `:bone:` | :eyes: | `:eyes:` | [top](#introduction) |
- | [top](#people--body) | :eye: | `:eye:` | :tongue: | `:tongue:` | [top](#introduction) |
- | [top](#people--body) | :lips: | `:lips:` | | | [top](#introduction) |
++| [top](#people--body) | :writing_hand: | `:writing_hand:` | :nail_care: | `:nail_care:` | [top](#table-of-contents) |
++| [top](#people--body) | :selfie: | `:selfie:` | | | [top](#table-of-contents) |
+
+### Body Parts
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :baby: | `:baby:` | :child: | `:child:` | [top](#introduction) |
- | [top](#people--body) | :boy: | `:boy:` | :girl: | `:girl:` | [top](#introduction) |
- | [top](#people--body) | :adult: | `:adult:` | :blond_haired_person: | `:blond_haired_person:` | [top](#introduction) |
- | [top](#people--body) | :man: | `:man:` | :bearded_person: | `:bearded_person:` | [top](#introduction) |
- | [top](#people--body) | :man_beard: | `:man_beard:` | :woman_beard: | `:woman_beard:` | [top](#introduction) |
- | [top](#people--body) | :red_haired_man: | `:red_haired_man:` | :curly_haired_man: | `:curly_haired_man:` | [top](#introduction) |
- | [top](#people--body) | :white_haired_man: | `:white_haired_man:` | :bald_man: | `:bald_man:` | [top](#introduction) |
- | [top](#people--body) | :woman: | `:woman:` | :red_haired_woman: | `:red_haired_woman:` | [top](#introduction) |
- | [top](#people--body) | :person_red_hair: | `:person_red_hair:` | :curly_haired_woman: | `:curly_haired_woman:` | [top](#introduction) |
- | [top](#people--body) | :person_curly_hair: | `:person_curly_hair:` | :white_haired_woman: | `:white_haired_woman:` | [top](#introduction) |
- | [top](#people--body) | :person_white_hair: | `:person_white_hair:` | :bald_woman: | `:bald_woman:` | [top](#introduction) |
- | [top](#people--body) | :person_bald: | `:person_bald:` | :blond_haired_woman: | `:blond_haired_woman:` `:blonde_woman:` | [top](#introduction) |
- | [top](#people--body) | :blond_haired_man: | `:blond_haired_man:` | :older_adult: | `:older_adult:` | [top](#introduction) |
- | [top](#people--body) | :older_man: | `:older_man:` | :older_woman: | `:older_woman:` | [top](#introduction) |
++| [top](#people--body) | :muscle: | `:muscle:` | :mechanical_arm: | `:mechanical_arm:` | [top](#table-of-contents) |
++| [top](#people--body) | :mechanical_leg: | `:mechanical_leg:` | :leg: | `:leg:` | [top](#table-of-contents) |
++| [top](#people--body) | :foot: | `:foot:` | :ear: | `:ear:` | [top](#table-of-contents) |
++| [top](#people--body) | :ear_with_hearing_aid: | `:ear_with_hearing_aid:` | :nose: | `:nose:` | [top](#table-of-contents) |
++| [top](#people--body) | :brain: | `:brain:` | :anatomical_heart: | `:anatomical_heart:` | [top](#table-of-contents) |
++| [top](#people--body) | :lungs: | `:lungs:` | :tooth: | `:tooth:` | [top](#table-of-contents) |
++| [top](#people--body) | :bone: | `:bone:` | :eyes: | `:eyes:` | [top](#table-of-contents) |
++| [top](#people--body) | :eye: | `:eye:` | :tongue: | `:tongue:` | [top](#table-of-contents) |
++| [top](#people--body) | :lips: | `:lips:` | :biting_lip: | `:biting_lip:` | [top](#table-of-contents) |
+
+### Person
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :frowning_person: | `:frowning_person:` | :frowning_man: | `:frowning_man:` | [top](#introduction) |
- | [top](#people--body) | :frowning_woman: | `:frowning_woman:` | :pouting_face: | `:pouting_face:` | [top](#introduction) |
- | [top](#people--body) | :pouting_man: | `:pouting_man:` | :pouting_woman: | `:pouting_woman:` | [top](#introduction) |
- | [top](#people--body) | :no_good: | `:no_good:` | :ng_man: | `:ng_man:` `:no_good_man:` | [top](#introduction) |
- | [top](#people--body) | :ng_woman: | `:ng_woman:` `:no_good_woman:` | :ok_person: | `:ok_person:` | [top](#introduction) |
- | [top](#people--body) | :ok_man: | `:ok_man:` | :ok_woman: | `:ok_woman:` | [top](#introduction) |
- | [top](#people--body) | :information_desk_person: | `:information_desk_person:` `:tipping_hand_person:` | :sassy_man: | `:sassy_man:` `:tipping_hand_man:` | [top](#introduction) |
- | [top](#people--body) | :sassy_woman: | `:sassy_woman:` `:tipping_hand_woman:` | :raising_hand: | `:raising_hand:` | [top](#introduction) |
- | [top](#people--body) | :raising_hand_man: | `:raising_hand_man:` | :raising_hand_woman: | `:raising_hand_woman:` | [top](#introduction) |
- | [top](#people--body) | :deaf_person: | `:deaf_person:` | :deaf_man: | `:deaf_man:` | [top](#introduction) |
- | [top](#people--body) | :deaf_woman: | `:deaf_woman:` | :bow: | `:bow:` | [top](#introduction) |
- | [top](#people--body) | :bowing_man: | `:bowing_man:` | :bowing_woman: | `:bowing_woman:` | [top](#introduction) |
- | [top](#people--body) | :facepalm: | `:facepalm:` | :man_facepalming: | `:man_facepalming:` | [top](#introduction) |
- | [top](#people--body) | :woman_facepalming: | `:woman_facepalming:` | :shrug: | `:shrug:` | [top](#introduction) |
- | [top](#people--body) | :man_shrugging: | `:man_shrugging:` | :woman_shrugging: | `:woman_shrugging:` | [top](#introduction) |
++| [top](#people--body) | :baby: | `:baby:` | :child: | `:child:` | [top](#table-of-contents) |
++| [top](#people--body) | :boy: | `:boy:` | :girl: | `:girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :adult: | `:adult:` | :blond_haired_person: | `:blond_haired_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :man: | `:man:` | :bearded_person: | `:bearded_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_beard: | `:man_beard:` | :woman_beard: | `:woman_beard:` | [top](#table-of-contents) |
++| [top](#people--body) | :red_haired_man: | `:red_haired_man:` | :curly_haired_man: | `:curly_haired_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :white_haired_man: | `:white_haired_man:` | :bald_man: | `:bald_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman: | `:woman:` | :red_haired_woman: | `:red_haired_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_red_hair: | `:person_red_hair:` | :curly_haired_woman: | `:curly_haired_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_curly_hair: | `:person_curly_hair:` | :white_haired_woman: | `:white_haired_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_white_hair: | `:person_white_hair:` | :bald_woman: | `:bald_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_bald: | `:person_bald:` | :blond_haired_woman: | `:blond_haired_woman:` <br /> `:blonde_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :blond_haired_man: | `:blond_haired_man:` | :older_adult: | `:older_adult:` | [top](#table-of-contents) |
++| [top](#people--body) | :older_man: | `:older_man:` | :older_woman: | `:older_woman:` | [top](#table-of-contents) |
+
+### Person Gesture
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :health_worker: | `:health_worker:` | :man_health_worker: | `:man_health_worker:` | [top](#introduction) |
- | [top](#people--body) | :woman_health_worker: | `:woman_health_worker:` | :student: | `:student:` | [top](#introduction) |
- | [top](#people--body) | :man_student: | `:man_student:` | :woman_student: | `:woman_student:` | [top](#introduction) |
- | [top](#people--body) | :teacher: | `:teacher:` | :man_teacher: | `:man_teacher:` | [top](#introduction) |
- | [top](#people--body) | :woman_teacher: | `:woman_teacher:` | :judge: | `:judge:` | [top](#introduction) |
- | [top](#people--body) | :man_judge: | `:man_judge:` | :woman_judge: | `:woman_judge:` | [top](#introduction) |
- | [top](#people--body) | :farmer: | `:farmer:` | :man_farmer: | `:man_farmer:` | [top](#introduction) |
- | [top](#people--body) | :woman_farmer: | `:woman_farmer:` | :cook: | `:cook:` | [top](#introduction) |
- | [top](#people--body) | :man_cook: | `:man_cook:` | :woman_cook: | `:woman_cook:` | [top](#introduction) |
- | [top](#people--body) | :mechanic: | `:mechanic:` | :man_mechanic: | `:man_mechanic:` | [top](#introduction) |
- | [top](#people--body) | :woman_mechanic: | `:woman_mechanic:` | :factory_worker: | `:factory_worker:` | [top](#introduction) |
- | [top](#people--body) | :man_factory_worker: | `:man_factory_worker:` | :woman_factory_worker: | `:woman_factory_worker:` | [top](#introduction) |
- | [top](#people--body) | :office_worker: | `:office_worker:` | :man_office_worker: | `:man_office_worker:` | [top](#introduction) |
- | [top](#people--body) | :woman_office_worker: | `:woman_office_worker:` | :scientist: | `:scientist:` | [top](#introduction) |
- | [top](#people--body) | :man_scientist: | `:man_scientist:` | :woman_scientist: | `:woman_scientist:` | [top](#introduction) |
- | [top](#people--body) | :technologist: | `:technologist:` | :man_technologist: | `:man_technologist:` | [top](#introduction) |
- | [top](#people--body) | :woman_technologist: | `:woman_technologist:` | :singer: | `:singer:` | [top](#introduction) |
- | [top](#people--body) | :man_singer: | `:man_singer:` | :woman_singer: | `:woman_singer:` | [top](#introduction) |
- | [top](#people--body) | :artist: | `:artist:` | :man_artist: | `:man_artist:` | [top](#introduction) |
- | [top](#people--body) | :woman_artist: | `:woman_artist:` | :pilot: | `:pilot:` | [top](#introduction) |
- | [top](#people--body) | :man_pilot: | `:man_pilot:` | :woman_pilot: | `:woman_pilot:` | [top](#introduction) |
- | [top](#people--body) | :astronaut: | `:astronaut:` | :man_astronaut: | `:man_astronaut:` | [top](#introduction) |
- | [top](#people--body) | :woman_astronaut: | `:woman_astronaut:` | :firefighter: | `:firefighter:` | [top](#introduction) |
- | [top](#people--body) | :man_firefighter: | `:man_firefighter:` | :woman_firefighter: | `:woman_firefighter:` | [top](#introduction) |
- | [top](#people--body) | :cop: | `:cop:` `:police_officer:` | :policeman: | `:policeman:` | [top](#introduction) |
- | [top](#people--body) | :policewoman: | `:policewoman:` | :detective: | `:detective:` | [top](#introduction) |
- | [top](#people--body) | :male_detective: | `:male_detective:` | :female_detective: | `:female_detective:` | [top](#introduction) |
- | [top](#people--body) | :guard: | `:guard:` | :guardsman: | `:guardsman:` | [top](#introduction) |
- | [top](#people--body) | :guardswoman: | `:guardswoman:` | :ninja: | `:ninja:` | [top](#introduction) |
- | [top](#people--body) | :construction_worker: | `:construction_worker:` | :construction_worker_man: | `:construction_worker_man:` | [top](#introduction) |
- | [top](#people--body) | :construction_worker_woman: | `:construction_worker_woman:` | :prince: | `:prince:` | [top](#introduction) |
- | [top](#people--body) | :princess: | `:princess:` | :person_with_turban: | `:person_with_turban:` | [top](#introduction) |
- | [top](#people--body) | :man_with_turban: | `:man_with_turban:` | :woman_with_turban: | `:woman_with_turban:` | [top](#introduction) |
- | [top](#people--body) | :man_with_gua_pi_mao: | `:man_with_gua_pi_mao:` | :woman_with_headscarf: | `:woman_with_headscarf:` | [top](#introduction) |
- | [top](#people--body) | :person_in_tuxedo: | `:person_in_tuxedo:` | :man_in_tuxedo: | `:man_in_tuxedo:` | [top](#introduction) |
- | [top](#people--body) | :woman_in_tuxedo: | `:woman_in_tuxedo:` | :person_with_veil: | `:person_with_veil:` | [top](#introduction) |
- | [top](#people--body) | :man_with_veil: | `:man_with_veil:` | :bride_with_veil: | `:bride_with_veil:` `:woman_with_veil:` | [top](#introduction) |
- | [top](#people--body) | :pregnant_woman: | `:pregnant_woman:` | :breast_feeding: | `:breast_feeding:` | [top](#introduction) |
- | [top](#people--body) | :woman_feeding_baby: | `:woman_feeding_baby:` | :man_feeding_baby: | `:man_feeding_baby:` | [top](#introduction) |
- | [top](#people--body) | :person_feeding_baby: | `:person_feeding_baby:` | | | [top](#introduction) |
++| [top](#people--body) | :frowning_person: | `:frowning_person:` | :frowning_man: | `:frowning_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :frowning_woman: | `:frowning_woman:` | :pouting_face: | `:pouting_face:` | [top](#table-of-contents) |
++| [top](#people--body) | :pouting_man: | `:pouting_man:` | :pouting_woman: | `:pouting_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :no_good: | `:no_good:` | :ng_man: | `:ng_man:` <br /> `:no_good_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :ng_woman: | `:ng_woman:` <br /> `:no_good_woman:` | :ok_person: | `:ok_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :ok_man: | `:ok_man:` | :ok_woman: | `:ok_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :information_desk_person: | `:information_desk_person:` <br /> `:tipping_hand_person:` | :sassy_man: | `:sassy_man:` <br /> `:tipping_hand_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :sassy_woman: | `:sassy_woman:` <br /> `:tipping_hand_woman:` | :raising_hand: | `:raising_hand:` | [top](#table-of-contents) |
++| [top](#people--body) | :raising_hand_man: | `:raising_hand_man:` | :raising_hand_woman: | `:raising_hand_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :deaf_person: | `:deaf_person:` | :deaf_man: | `:deaf_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :deaf_woman: | `:deaf_woman:` | :bow: | `:bow:` | [top](#table-of-contents) |
++| [top](#people--body) | :bowing_man: | `:bowing_man:` | :bowing_woman: | `:bowing_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :facepalm: | `:facepalm:` | :man_facepalming: | `:man_facepalming:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_facepalming: | `:woman_facepalming:` | :shrug: | `:shrug:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_shrugging: | `:man_shrugging:` | :woman_shrugging: | `:woman_shrugging:` | [top](#table-of-contents) |
+
+### Person Role
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :angel: | `:angel:` | :santa: | `:santa:` | [top](#introduction) |
- | [top](#people--body) | :mrs_claus: | `:mrs_claus:` | :mx_claus: | `:mx_claus:` | [top](#introduction) |
- | [top](#people--body) | :superhero: | `:superhero:` | :superhero_man: | `:superhero_man:` | [top](#introduction) |
- | [top](#people--body) | :superhero_woman: | `:superhero_woman:` | :supervillain: | `:supervillain:` | [top](#introduction) |
- | [top](#people--body) | :supervillain_man: | `:supervillain_man:` | :supervillain_woman: | `:supervillain_woman:` | [top](#introduction) |
- | [top](#people--body) | :mage: | `:mage:` | :mage_man: | `:mage_man:` | [top](#introduction) |
- | [top](#people--body) | :mage_woman: | `:mage_woman:` | :fairy: | `:fairy:` | [top](#introduction) |
- | [top](#people--body) | :fairy_man: | `:fairy_man:` | :fairy_woman: | `:fairy_woman:` | [top](#introduction) |
- | [top](#people--body) | :vampire: | `:vampire:` | :vampire_man: | `:vampire_man:` | [top](#introduction) |
- | [top](#people--body) | :vampire_woman: | `:vampire_woman:` | :merperson: | `:merperson:` | [top](#introduction) |
- | [top](#people--body) | :merman: | `:merman:` | :mermaid: | `:mermaid:` | [top](#introduction) |
- | [top](#people--body) | :elf: | `:elf:` | :elf_man: | `:elf_man:` | [top](#introduction) |
- | [top](#people--body) | :elf_woman: | `:elf_woman:` | :genie: | `:genie:` | [top](#introduction) |
- | [top](#people--body) | :genie_man: | `:genie_man:` | :genie_woman: | `:genie_woman:` | [top](#introduction) |
- | [top](#people--body) | :zombie: | `:zombie:` | :zombie_man: | `:zombie_man:` | [top](#introduction) |
- | [top](#people--body) | :zombie_woman: | `:zombie_woman:` | | | [top](#introduction) |
++| [top](#people--body) | :health_worker: | `:health_worker:` | :man_health_worker: | `:man_health_worker:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_health_worker: | `:woman_health_worker:` | :student: | `:student:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_student: | `:man_student:` | :woman_student: | `:woman_student:` | [top](#table-of-contents) |
++| [top](#people--body) | :teacher: | `:teacher:` | :man_teacher: | `:man_teacher:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_teacher: | `:woman_teacher:` | :judge: | `:judge:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_judge: | `:man_judge:` | :woman_judge: | `:woman_judge:` | [top](#table-of-contents) |
++| [top](#people--body) | :farmer: | `:farmer:` | :man_farmer: | `:man_farmer:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_farmer: | `:woman_farmer:` | :cook: | `:cook:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_cook: | `:man_cook:` | :woman_cook: | `:woman_cook:` | [top](#table-of-contents) |
++| [top](#people--body) | :mechanic: | `:mechanic:` | :man_mechanic: | `:man_mechanic:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_mechanic: | `:woman_mechanic:` | :factory_worker: | `:factory_worker:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_factory_worker: | `:man_factory_worker:` | :woman_factory_worker: | `:woman_factory_worker:` | [top](#table-of-contents) |
++| [top](#people--body) | :office_worker: | `:office_worker:` | :man_office_worker: | `:man_office_worker:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_office_worker: | `:woman_office_worker:` | :scientist: | `:scientist:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_scientist: | `:man_scientist:` | :woman_scientist: | `:woman_scientist:` | [top](#table-of-contents) |
++| [top](#people--body) | :technologist: | `:technologist:` | :man_technologist: | `:man_technologist:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_technologist: | `:woman_technologist:` | :singer: | `:singer:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_singer: | `:man_singer:` | :woman_singer: | `:woman_singer:` | [top](#table-of-contents) |
++| [top](#people--body) | :artist: | `:artist:` | :man_artist: | `:man_artist:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_artist: | `:woman_artist:` | :pilot: | `:pilot:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_pilot: | `:man_pilot:` | :woman_pilot: | `:woman_pilot:` | [top](#table-of-contents) |
++| [top](#people--body) | :astronaut: | `:astronaut:` | :man_astronaut: | `:man_astronaut:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_astronaut: | `:woman_astronaut:` | :firefighter: | `:firefighter:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_firefighter: | `:man_firefighter:` | :woman_firefighter: | `:woman_firefighter:` | [top](#table-of-contents) |
++| [top](#people--body) | :cop: | `:cop:` <br /> `:police_officer:` | :policeman: | `:policeman:` | [top](#table-of-contents) |
++| [top](#people--body) | :policewoman: | `:policewoman:` | :detective: | `:detective:` | [top](#table-of-contents) |
++| [top](#people--body) | :male_detective: | `:male_detective:` | :female_detective: | `:female_detective:` | [top](#table-of-contents) |
++| [top](#people--body) | :guard: | `:guard:` | :guardsman: | `:guardsman:` | [top](#table-of-contents) |
++| [top](#people--body) | :guardswoman: | `:guardswoman:` | :ninja: | `:ninja:` | [top](#table-of-contents) |
++| [top](#people--body) | :construction_worker: | `:construction_worker:` | :construction_worker_man: | `:construction_worker_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :construction_worker_woman: | `:construction_worker_woman:` | :person_with_crown: | `:person_with_crown:` | [top](#table-of-contents) |
++| [top](#people--body) | :prince: | `:prince:` | :princess: | `:princess:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_with_turban: | `:person_with_turban:` | :man_with_turban: | `:man_with_turban:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_with_turban: | `:woman_with_turban:` | :man_with_gua_pi_mao: | `:man_with_gua_pi_mao:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_with_headscarf: | `:woman_with_headscarf:` | :person_in_tuxedo: | `:person_in_tuxedo:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_in_tuxedo: | `:man_in_tuxedo:` | :woman_in_tuxedo: | `:woman_in_tuxedo:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_with_veil: | `:person_with_veil:` | :man_with_veil: | `:man_with_veil:` | [top](#table-of-contents) |
++| [top](#people--body) | :bride_with_veil: | `:bride_with_veil:` <br /> `:woman_with_veil:` | :pregnant_woman: | `:pregnant_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :pregnant_man: | `:pregnant_man:` | :pregnant_person: | `:pregnant_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :breast_feeding: | `:breast_feeding:` | :woman_feeding_baby: | `:woman_feeding_baby:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_feeding_baby: | `:man_feeding_baby:` | :person_feeding_baby: | `:person_feeding_baby:` | [top](#table-of-contents) |
+
+### Person Fantasy
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :massage: | `:massage:` | :massage_man: | `:massage_man:` | [top](#introduction) |
- | [top](#people--body) | :massage_woman: | `:massage_woman:` | :haircut: | `:haircut:` | [top](#introduction) |
- | [top](#people--body) | :haircut_man: | `:haircut_man:` | :haircut_woman: | `:haircut_woman:` | [top](#introduction) |
- | [top](#people--body) | :walking: | `:walking:` | :walking_man: | `:walking_man:` | [top](#introduction) |
- | [top](#people--body) | :walking_woman: | `:walking_woman:` | :standing_person: | `:standing_person:` | [top](#introduction) |
- | [top](#people--body) | :standing_man: | `:standing_man:` | :standing_woman: | `:standing_woman:` | [top](#introduction) |
- | [top](#people--body) | :kneeling_person: | `:kneeling_person:` | :kneeling_man: | `:kneeling_man:` | [top](#introduction) |
- | [top](#people--body) | :kneeling_woman: | `:kneeling_woman:` | :person_with_probing_cane: | `:person_with_probing_cane:` | [top](#introduction) |
- | [top](#people--body) | :man_with_probing_cane: | `:man_with_probing_cane:` | :woman_with_probing_cane: | `:woman_with_probing_cane:` | [top](#introduction) |
- | [top](#people--body) | :person_in_motorized_wheelchair: | `:person_in_motorized_wheelchair:` | :man_in_motorized_wheelchair: | `:man_in_motorized_wheelchair:` | [top](#introduction) |
- | [top](#people--body) | :woman_in_motorized_wheelchair: | `:woman_in_motorized_wheelchair:` | :person_in_manual_wheelchair: | `:person_in_manual_wheelchair:` | [top](#introduction) |
- | [top](#people--body) | :man_in_manual_wheelchair: | `:man_in_manual_wheelchair:` | :woman_in_manual_wheelchair: | `:woman_in_manual_wheelchair:` | [top](#introduction) |
- | [top](#people--body) | :runner: | `:runner:` `:running:` | :running_man: | `:running_man:` | [top](#introduction) |
- | [top](#people--body) | :running_woman: | `:running_woman:` | :dancer: | `:dancer:` `:woman_dancing:` | [top](#introduction) |
- | [top](#people--body) | :man_dancing: | `:man_dancing:` | :business_suit_levitating: | `:business_suit_levitating:` | [top](#introduction) |
- | [top](#people--body) | :dancers: | `:dancers:` | :dancing_men: | `:dancing_men:` | [top](#introduction) |
- | [top](#people--body) | :dancing_women: | `:dancing_women:` | :sauna_person: | `:sauna_person:` | [top](#introduction) |
- | [top](#people--body) | :sauna_man: | `:sauna_man:` | :sauna_woman: | `:sauna_woman:` | [top](#introduction) |
- | [top](#people--body) | :climbing: | `:climbing:` | :climbing_man: | `:climbing_man:` | [top](#introduction) |
- | [top](#people--body) | :climbing_woman: | `:climbing_woman:` | | | [top](#introduction) |
++| [top](#people--body) | :angel: | `:angel:` | :santa: | `:santa:` | [top](#table-of-contents) |
++| [top](#people--body) | :mrs_claus: | `:mrs_claus:` | :mx_claus: | `:mx_claus:` | [top](#table-of-contents) |
++| [top](#people--body) | :superhero: | `:superhero:` | :superhero_man: | `:superhero_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :superhero_woman: | `:superhero_woman:` | :supervillain: | `:supervillain:` | [top](#table-of-contents) |
++| [top](#people--body) | :supervillain_man: | `:supervillain_man:` | :supervillain_woman: | `:supervillain_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :mage: | `:mage:` | :mage_man: | `:mage_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :mage_woman: | `:mage_woman:` | :fairy: | `:fairy:` | [top](#table-of-contents) |
++| [top](#people--body) | :fairy_man: | `:fairy_man:` | :fairy_woman: | `:fairy_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :vampire: | `:vampire:` | :vampire_man: | `:vampire_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :vampire_woman: | `:vampire_woman:` | :merperson: | `:merperson:` | [top](#table-of-contents) |
++| [top](#people--body) | :merman: | `:merman:` | :mermaid: | `:mermaid:` | [top](#table-of-contents) |
++| [top](#people--body) | :elf: | `:elf:` | :elf_man: | `:elf_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :elf_woman: | `:elf_woman:` | :genie: | `:genie:` | [top](#table-of-contents) |
++| [top](#people--body) | :genie_man: | `:genie_man:` | :genie_woman: | `:genie_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :zombie: | `:zombie:` | :zombie_man: | `:zombie_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :zombie_woman: | `:zombie_woman:` | :troll: | `:troll:` | [top](#table-of-contents) |
+
+### Person Activity
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :person_fencing: | `:person_fencing:` | :horse_racing: | `:horse_racing:` | [top](#introduction) |
- | [top](#people--body) | :skier: | `:skier:` | :snowboarder: | `:snowboarder:` | [top](#introduction) |
- | [top](#people--body) | :golfing: | `:golfing:` | :golfing_man: | `:golfing_man:` | [top](#introduction) |
- | [top](#people--body) | :golfing_woman: | `:golfing_woman:` | :surfer: | `:surfer:` | [top](#introduction) |
- | [top](#people--body) | :surfing_man: | `:surfing_man:` | :surfing_woman: | `:surfing_woman:` | [top](#introduction) |
- | [top](#people--body) | :rowboat: | `:rowboat:` | :rowing_man: | `:rowing_man:` | [top](#introduction) |
- | [top](#people--body) | :rowing_woman: | `:rowing_woman:` | :swimmer: | `:swimmer:` | [top](#introduction) |
- | [top](#people--body) | :swimming_man: | `:swimming_man:` | :swimming_woman: | `:swimming_woman:` | [top](#introduction) |
- | [top](#people--body) | :bouncing_ball_person: | `:bouncing_ball_person:` | :basketball_man: | `:basketball_man:` `:bouncing_ball_man:` | [top](#introduction) |
- | [top](#people--body) | :basketball_woman: | `:basketball_woman:` `:bouncing_ball_woman:` | :weight_lifting: | `:weight_lifting:` | [top](#introduction) |
- | [top](#people--body) | :weight_lifting_man: | `:weight_lifting_man:` | :weight_lifting_woman: | `:weight_lifting_woman:` | [top](#introduction) |
- | [top](#people--body) | :bicyclist: | `:bicyclist:` | :biking_man: | `:biking_man:` | [top](#introduction) |
- | [top](#people--body) | :biking_woman: | `:biking_woman:` | :mountain_bicyclist: | `:mountain_bicyclist:` | [top](#introduction) |
- | [top](#people--body) | :mountain_biking_man: | `:mountain_biking_man:` | :mountain_biking_woman: | `:mountain_biking_woman:` | [top](#introduction) |
- | [top](#people--body) | :cartwheeling: | `:cartwheeling:` | :man_cartwheeling: | `:man_cartwheeling:` | [top](#introduction) |
- | [top](#people--body) | :woman_cartwheeling: | `:woman_cartwheeling:` | :wrestling: | `:wrestling:` | [top](#introduction) |
- | [top](#people--body) | :men_wrestling: | `:men_wrestling:` | :women_wrestling: | `:women_wrestling:` | [top](#introduction) |
- | [top](#people--body) | :water_polo: | `:water_polo:` | :man_playing_water_polo: | `:man_playing_water_polo:` | [top](#introduction) |
- | [top](#people--body) | :woman_playing_water_polo: | `:woman_playing_water_polo:` | :handball_person: | `:handball_person:` | [top](#introduction) |
- | [top](#people--body) | :man_playing_handball: | `:man_playing_handball:` | :woman_playing_handball: | `:woman_playing_handball:` | [top](#introduction) |
- | [top](#people--body) | :juggling_person: | `:juggling_person:` | :man_juggling: | `:man_juggling:` | [top](#introduction) |
- | [top](#people--body) | :woman_juggling: | `:woman_juggling:` | | | [top](#introduction) |
++| [top](#people--body) | :massage: | `:massage:` | :massage_man: | `:massage_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :massage_woman: | `:massage_woman:` | :haircut: | `:haircut:` | [top](#table-of-contents) |
++| [top](#people--body) | :haircut_man: | `:haircut_man:` | :haircut_woman: | `:haircut_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :walking: | `:walking:` | :walking_man: | `:walking_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :walking_woman: | `:walking_woman:` | :standing_person: | `:standing_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :standing_man: | `:standing_man:` | :standing_woman: | `:standing_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :kneeling_person: | `:kneeling_person:` | :kneeling_man: | `:kneeling_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :kneeling_woman: | `:kneeling_woman:` | :person_with_probing_cane: | `:person_with_probing_cane:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_with_probing_cane: | `:man_with_probing_cane:` | :woman_with_probing_cane: | `:woman_with_probing_cane:` | [top](#table-of-contents) |
++| [top](#people--body) | :person_in_motorized_wheelchair: | `:person_in_motorized_wheelchair:` | :man_in_motorized_wheelchair: | `:man_in_motorized_wheelchair:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_in_motorized_wheelchair: | `:woman_in_motorized_wheelchair:` | :person_in_manual_wheelchair: | `:person_in_manual_wheelchair:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_in_manual_wheelchair: | `:man_in_manual_wheelchair:` | :woman_in_manual_wheelchair: | `:woman_in_manual_wheelchair:` | [top](#table-of-contents) |
++| [top](#people--body) | :runner: | `:runner:` <br /> `:running:` | :running_man: | `:running_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :running_woman: | `:running_woman:` | :dancer: | `:dancer:` <br /> `:woman_dancing:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_dancing: | `:man_dancing:` | :business_suit_levitating: | `:business_suit_levitating:` | [top](#table-of-contents) |
++| [top](#people--body) | :dancers: | `:dancers:` | :dancing_men: | `:dancing_men:` | [top](#table-of-contents) |
++| [top](#people--body) | :dancing_women: | `:dancing_women:` | :sauna_person: | `:sauna_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :sauna_man: | `:sauna_man:` | :sauna_woman: | `:sauna_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :climbing: | `:climbing:` | :climbing_man: | `:climbing_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :climbing_woman: | `:climbing_woman:` | | | [top](#table-of-contents) |
+
+### Person Sport
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :lotus_position: | `:lotus_position:` | :lotus_position_man: | `:lotus_position_man:` | [top](#introduction) |
- | [top](#people--body) | :lotus_position_woman: | `:lotus_position_woman:` | :bath: | `:bath:` | [top](#introduction) |
- | [top](#people--body) | :sleeping_bed: | `:sleeping_bed:` | | | [top](#introduction) |
++| [top](#people--body) | :person_fencing: | `:person_fencing:` | :horse_racing: | `:horse_racing:` | [top](#table-of-contents) |
++| [top](#people--body) | :skier: | `:skier:` | :snowboarder: | `:snowboarder:` | [top](#table-of-contents) |
++| [top](#people--body) | :golfing: | `:golfing:` | :golfing_man: | `:golfing_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :golfing_woman: | `:golfing_woman:` | :surfer: | `:surfer:` | [top](#table-of-contents) |
++| [top](#people--body) | :surfing_man: | `:surfing_man:` | :surfing_woman: | `:surfing_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :rowboat: | `:rowboat:` | :rowing_man: | `:rowing_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :rowing_woman: | `:rowing_woman:` | :swimmer: | `:swimmer:` | [top](#table-of-contents) |
++| [top](#people--body) | :swimming_man: | `:swimming_man:` | :swimming_woman: | `:swimming_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :bouncing_ball_person: | `:bouncing_ball_person:` | :basketball_man: | `:basketball_man:` <br /> `:bouncing_ball_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :basketball_woman: | `:basketball_woman:` <br /> `:bouncing_ball_woman:` | :weight_lifting: | `:weight_lifting:` | [top](#table-of-contents) |
++| [top](#people--body) | :weight_lifting_man: | `:weight_lifting_man:` | :weight_lifting_woman: | `:weight_lifting_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :bicyclist: | `:bicyclist:` | :biking_man: | `:biking_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :biking_woman: | `:biking_woman:` | :mountain_bicyclist: | `:mountain_bicyclist:` | [top](#table-of-contents) |
++| [top](#people--body) | :mountain_biking_man: | `:mountain_biking_man:` | :mountain_biking_woman: | `:mountain_biking_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :cartwheeling: | `:cartwheeling:` | :man_cartwheeling: | `:man_cartwheeling:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_cartwheeling: | `:woman_cartwheeling:` | :wrestling: | `:wrestling:` | [top](#table-of-contents) |
++| [top](#people--body) | :men_wrestling: | `:men_wrestling:` | :women_wrestling: | `:women_wrestling:` | [top](#table-of-contents) |
++| [top](#people--body) | :water_polo: | `:water_polo:` | :man_playing_water_polo: | `:man_playing_water_polo:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_playing_water_polo: | `:woman_playing_water_polo:` | :handball_person: | `:handball_person:` | [top](#table-of-contents) |
++| [top](#people--body) | :man_playing_handball: | `:man_playing_handball:` | :woman_playing_handball: | `:woman_playing_handball:` | [top](#table-of-contents) |
++| [top](#people--body) | :juggling_person: | `:juggling_person:` | :man_juggling: | `:man_juggling:` | [top](#table-of-contents) |
++| [top](#people--body) | :woman_juggling: | `:woman_juggling:` | | | [top](#table-of-contents) |
+
+### Person Resting
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :people_holding_hands: | `:people_holding_hands:` | :two_women_holding_hands: | `:two_women_holding_hands:` | [top](#introduction) |
- | [top](#people--body) | :couple: | `:couple:` | :two_men_holding_hands: | `:two_men_holding_hands:` | [top](#introduction) |
- | [top](#people--body) | :couplekiss: | `:couplekiss:` | :couplekiss_man_woman: | `:couplekiss_man_woman:` | [top](#introduction) |
- | [top](#people--body) | :couplekiss_man_man: | `:couplekiss_man_man:` | :couplekiss_woman_woman: | `:couplekiss_woman_woman:` | [top](#introduction) |
- | [top](#people--body) | :couple_with_heart: | `:couple_with_heart:` | :couple_with_heart_woman_man: | `:couple_with_heart_woman_man:` | [top](#introduction) |
- | [top](#people--body) | :couple_with_heart_man_man: | `:couple_with_heart_man_man:` | :couple_with_heart_woman_woman: | `:couple_with_heart_woman_woman:` | [top](#introduction) |
- | [top](#people--body) | :family_man_woman_boy: | `:family_man_woman_boy:` | :family_man_woman_girl: | `:family_man_woman_girl:` | [top](#introduction) |
- | [top](#people--body) | :family_man_woman_girl_boy: | `:family_man_woman_girl_boy:` | :family_man_woman_boy_boy: | `:family_man_woman_boy_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_man_woman_girl_girl: | `:family_man_woman_girl_girl:` | :family_man_man_boy: | `:family_man_man_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_man_man_girl: | `:family_man_man_girl:` | :family_man_man_girl_boy: | `:family_man_man_girl_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_man_man_boy_boy: | `:family_man_man_boy_boy:` | :family_man_man_girl_girl: | `:family_man_man_girl_girl:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_woman_boy: | `:family_woman_woman_boy:` | :family_woman_woman_girl: | `:family_woman_woman_girl:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_woman_girl_boy: | `:family_woman_woman_girl_boy:` | :family_woman_woman_boy_boy: | `:family_woman_woman_boy_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_woman_girl_girl: | `:family_woman_woman_girl_girl:` | :family_man_boy: | `:family_man_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_man_boy_boy: | `:family_man_boy_boy:` | :family_man_girl: | `:family_man_girl:` | [top](#introduction) |
- | [top](#people--body) | :family_man_girl_boy: | `:family_man_girl_boy:` | :family_man_girl_girl: | `:family_man_girl_girl:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_boy: | `:family_woman_boy:` | :family_woman_boy_boy: | `:family_woman_boy_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_girl: | `:family_woman_girl:` | :family_woman_girl_boy: | `:family_woman_girl_boy:` | [top](#introduction) |
- | [top](#people--body) | :family_woman_girl_girl: | `:family_woman_girl_girl:` | | | [top](#introduction) |
++| [top](#people--body) | :lotus_position: | `:lotus_position:` | :lotus_position_man: | `:lotus_position_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :lotus_position_woman: | `:lotus_position_woman:` | :bath: | `:bath:` | [top](#table-of-contents) |
++| [top](#people--body) | :sleeping_bed: | `:sleeping_bed:` | | | [top](#table-of-contents) |
+
+### Family
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#people--body) | :speaking_head: | `:speaking_head:` | :bust_in_silhouette: | `:bust_in_silhouette:` | [top](#introduction) |
- | [top](#people--body) | :busts_in_silhouette: | `:busts_in_silhouette:` | :people_hugging: | `:people_hugging:` | [top](#introduction) |
- | [top](#people--body) | :family: | `:family:` | :footprints: | `:footprints:` | [top](#introduction) |
++| [top](#people--body) | :people_holding_hands: | `:people_holding_hands:` | :two_women_holding_hands: | `:two_women_holding_hands:` | [top](#table-of-contents) |
++| [top](#people--body) | :couple: | `:couple:` | :two_men_holding_hands: | `:two_men_holding_hands:` | [top](#table-of-contents) |
++| [top](#people--body) | :couplekiss: | `:couplekiss:` | :couplekiss_man_woman: | `:couplekiss_man_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :couplekiss_man_man: | `:couplekiss_man_man:` | :couplekiss_woman_woman: | `:couplekiss_woman_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :couple_with_heart: | `:couple_with_heart:` | :couple_with_heart_woman_man: | `:couple_with_heart_woman_man:` | [top](#table-of-contents) |
++| [top](#people--body) | :couple_with_heart_man_man: | `:couple_with_heart_man_man:` | :couple_with_heart_woman_woman: | `:couple_with_heart_woman_woman:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_woman_boy: | `:family_man_woman_boy:` | :family_man_woman_girl: | `:family_man_woman_girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_woman_girl_boy: | `:family_man_woman_girl_boy:` | :family_man_woman_boy_boy: | `:family_man_woman_boy_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_woman_girl_girl: | `:family_man_woman_girl_girl:` | :family_man_man_boy: | `:family_man_man_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_man_girl: | `:family_man_man_girl:` | :family_man_man_girl_boy: | `:family_man_man_girl_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_man_boy_boy: | `:family_man_man_boy_boy:` | :family_man_man_girl_girl: | `:family_man_man_girl_girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_woman_boy: | `:family_woman_woman_boy:` | :family_woman_woman_girl: | `:family_woman_woman_girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_woman_girl_boy: | `:family_woman_woman_girl_boy:` | :family_woman_woman_boy_boy: | `:family_woman_woman_boy_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_woman_girl_girl: | `:family_woman_woman_girl_girl:` | :family_man_boy: | `:family_man_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_boy_boy: | `:family_man_boy_boy:` | :family_man_girl: | `:family_man_girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_man_girl_boy: | `:family_man_girl_boy:` | :family_man_girl_girl: | `:family_man_girl_girl:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_boy: | `:family_woman_boy:` | :family_woman_boy_boy: | `:family_woman_boy_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_girl: | `:family_woman_girl:` | :family_woman_girl_boy: | `:family_woman_girl_boy:` | [top](#table-of-contents) |
++| [top](#people--body) | :family_woman_girl_girl: | `:family_woman_girl_girl:` | | | [top](#table-of-contents) |
+
+### Person Symbol
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :monkey_face: | `:monkey_face:` | :monkey: | `:monkey:` | [top](#introduction) |
- | [top](#animals--nature) | :gorilla: | `:gorilla:` | :orangutan: | `:orangutan:` | [top](#introduction) |
- | [top](#animals--nature) | :dog: | `:dog:` | :dog2: | `:dog2:` | [top](#introduction) |
- | [top](#animals--nature) | :guide_dog: | `:guide_dog:` | :service_dog: | `:service_dog:` | [top](#introduction) |
- | [top](#animals--nature) | :poodle: | `:poodle:` | :wolf: | `:wolf:` | [top](#introduction) |
- | [top](#animals--nature) | :fox_face: | `:fox_face:` | :raccoon: | `:raccoon:` | [top](#introduction) |
- | [top](#animals--nature) | :cat: | `:cat:` | :cat2: | `:cat2:` | [top](#introduction) |
- | [top](#animals--nature) | :black_cat: | `:black_cat:` | :lion: | `:lion:` | [top](#introduction) |
- | [top](#animals--nature) | :tiger: | `:tiger:` | :tiger2: | `:tiger2:` | [top](#introduction) |
- | [top](#animals--nature) | :leopard: | `:leopard:` | :horse: | `:horse:` | [top](#introduction) |
- | [top](#animals--nature) | :racehorse: | `:racehorse:` | :unicorn: | `:unicorn:` | [top](#introduction) |
- | [top](#animals--nature) | :zebra: | `:zebra:` | :deer: | `:deer:` | [top](#introduction) |
- | [top](#animals--nature) | :bison: | `:bison:` | :cow: | `:cow:` | [top](#introduction) |
- | [top](#animals--nature) | :ox: | `:ox:` | :water_buffalo: | `:water_buffalo:` | [top](#introduction) |
- | [top](#animals--nature) | :cow2: | `:cow2:` | :pig: | `:pig:` | [top](#introduction) |
- | [top](#animals--nature) | :pig2: | `:pig2:` | :boar: | `:boar:` | [top](#introduction) |
- | [top](#animals--nature) | :pig_nose: | `:pig_nose:` | :ram: | `:ram:` | [top](#introduction) |
- | [top](#animals--nature) | :sheep: | `:sheep:` | :goat: | `:goat:` | [top](#introduction) |
- | [top](#animals--nature) | :dromedary_camel: | `:dromedary_camel:` | :camel: | `:camel:` | [top](#introduction) |
- | [top](#animals--nature) | :llama: | `:llama:` | :giraffe: | `:giraffe:` | [top](#introduction) |
- | [top](#animals--nature) | :elephant: | `:elephant:` | :mammoth: | `:mammoth:` | [top](#introduction) |
- | [top](#animals--nature) | :rhinoceros: | `:rhinoceros:` | :hippopotamus: | `:hippopotamus:` | [top](#introduction) |
- | [top](#animals--nature) | :mouse: | `:mouse:` | :mouse2: | `:mouse2:` | [top](#introduction) |
- | [top](#animals--nature) | :rat: | `:rat:` | :hamster: | `:hamster:` | [top](#introduction) |
- | [top](#animals--nature) | :rabbit: | `:rabbit:` | :rabbit2: | `:rabbit2:` | [top](#introduction) |
- | [top](#animals--nature) | :chipmunk: | `:chipmunk:` | :beaver: | `:beaver:` | [top](#introduction) |
- | [top](#animals--nature) | :hedgehog: | `:hedgehog:` | :bat: | `:bat:` | [top](#introduction) |
- | [top](#animals--nature) | :bear: | `:bear:` | :polar_bear: | `:polar_bear:` | [top](#introduction) |
- | [top](#animals--nature) | :koala: | `:koala:` | :panda_face: | `:panda_face:` | [top](#introduction) |
- | [top](#animals--nature) | :sloth: | `:sloth:` | :otter: | `:otter:` | [top](#introduction) |
- | [top](#animals--nature) | :skunk: | `:skunk:` | :kangaroo: | `:kangaroo:` | [top](#introduction) |
- | [top](#animals--nature) | :badger: | `:badger:` | :feet: | `:feet:` `:paw_prints:` | [top](#introduction) |
++| [top](#people--body) | :speaking_head: | `:speaking_head:` | :bust_in_silhouette: | `:bust_in_silhouette:` | [top](#table-of-contents) |
++| [top](#people--body) | :busts_in_silhouette: | `:busts_in_silhouette:` | :people_hugging: | `:people_hugging:` | [top](#table-of-contents) |
++| [top](#people--body) | :family: | `:family:` | :footprints: | `:footprints:` | [top](#table-of-contents) |
+
+## Animals & Nature
+
+- [Animal Mammal](#animal-mammal)
+- [Animal Bird](#animal-bird)
+- [Animal Amphibian](#animal-amphibian)
+- [Animal Reptile](#animal-reptile)
+- [Animal Marine](#animal-marine)
+- [Animal Bug](#animal-bug)
+- [Plant Flower](#plant-flower)
+- [Plant Other](#plant-other)
+
+### Animal Mammal
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :turkey: | `:turkey:` | :chicken: | `:chicken:` | [top](#introduction) |
- | [top](#animals--nature) | :rooster: | `:rooster:` | :hatching_chick: | `:hatching_chick:` | [top](#introduction) |
- | [top](#animals--nature) | :baby_chick: | `:baby_chick:` | :hatched_chick: | `:hatched_chick:` | [top](#introduction) |
- | [top](#animals--nature) | :bird: | `:bird:` | :penguin: | `:penguin:` | [top](#introduction) |
- | [top](#animals--nature) | :dove: | `:dove:` | :eagle: | `:eagle:` | [top](#introduction) |
- | [top](#animals--nature) | :duck: | `:duck:` | :swan: | `:swan:` | [top](#introduction) |
- | [top](#animals--nature) | :owl: | `:owl:` | :dodo: | `:dodo:` | [top](#introduction) |
- | [top](#animals--nature) | :feather: | `:feather:` | :flamingo: | `:flamingo:` | [top](#introduction) |
- | [top](#animals--nature) | :peacock: | `:peacock:` | :parrot: | `:parrot:` | [top](#introduction) |
++| [top](#animals--nature) | :monkey_face: | `:monkey_face:` | :monkey: | `:monkey:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :gorilla: | `:gorilla:` | :orangutan: | `:orangutan:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :dog: | `:dog:` | :dog2: | `:dog2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :guide_dog: | `:guide_dog:` | :service_dog: | `:service_dog:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :poodle: | `:poodle:` | :wolf: | `:wolf:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :fox_face: | `:fox_face:` | :raccoon: | `:raccoon:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :cat: | `:cat:` | :cat2: | `:cat2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :black_cat: | `:black_cat:` | :lion: | `:lion:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :tiger: | `:tiger:` | :tiger2: | `:tiger2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :leopard: | `:leopard:` | :horse: | `:horse:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :moose: | `:moose:` | :donkey: | `:donkey:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :racehorse: | `:racehorse:` | :unicorn: | `:unicorn:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :zebra: | `:zebra:` | :deer: | `:deer:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :bison: | `:bison:` | :cow: | `:cow:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :ox: | `:ox:` | :water_buffalo: | `:water_buffalo:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :cow2: | `:cow2:` | :pig: | `:pig:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :pig2: | `:pig2:` | :boar: | `:boar:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :pig_nose: | `:pig_nose:` | :ram: | `:ram:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :sheep: | `:sheep:` | :goat: | `:goat:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :dromedary_camel: | `:dromedary_camel:` | :camel: | `:camel:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :llama: | `:llama:` | :giraffe: | `:giraffe:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :elephant: | `:elephant:` | :mammoth: | `:mammoth:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :rhinoceros: | `:rhinoceros:` | :hippopotamus: | `:hippopotamus:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :mouse: | `:mouse:` | :mouse2: | `:mouse2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :rat: | `:rat:` | :hamster: | `:hamster:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :rabbit: | `:rabbit:` | :rabbit2: | `:rabbit2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :chipmunk: | `:chipmunk:` | :beaver: | `:beaver:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :hedgehog: | `:hedgehog:` | :bat: | `:bat:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :bear: | `:bear:` | :polar_bear: | `:polar_bear:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :koala: | `:koala:` | :panda_face: | `:panda_face:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :sloth: | `:sloth:` | :otter: | `:otter:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :skunk: | `:skunk:` | :kangaroo: | `:kangaroo:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :badger: | `:badger:` | :feet: | `:feet:` <br /> `:paw_prints:` | [top](#table-of-contents) |
+
+### Animal Bird
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :frog: | `:frog:` | [top](#introduction) |
++| [top](#animals--nature) | :turkey: | `:turkey:` | :chicken: | `:chicken:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :rooster: | `:rooster:` | :hatching_chick: | `:hatching_chick:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :baby_chick: | `:baby_chick:` | :hatched_chick: | `:hatched_chick:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :bird: | `:bird:` | :penguin: | `:penguin:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :dove: | `:dove:` | :eagle: | `:eagle:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :duck: | `:duck:` | :swan: | `:swan:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :owl: | `:owl:` | :dodo: | `:dodo:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :feather: | `:feather:` | :flamingo: | `:flamingo:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :peacock: | `:peacock:` | :parrot: | `:parrot:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :wing: | `:wing:` | :black_bird: | `:black_bird:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :goose: | `:goose:` | | | [top](#table-of-contents) |
+
+### Animal Amphibian
+
+| | ico | shortcode | |
+| - | :-: | - | - |
- | [top](#animals--nature) | :crocodile: | `:crocodile:` | :turtle: | `:turtle:` | [top](#introduction) |
- | [top](#animals--nature) | :lizard: | `:lizard:` | :snake: | `:snake:` | [top](#introduction) |
- | [top](#animals--nature) | :dragon_face: | `:dragon_face:` | :dragon: | `:dragon:` | [top](#introduction) |
- | [top](#animals--nature) | :sauropod: | `:sauropod:` | :t-rex: | `:t-rex:` | [top](#introduction) |
++| [top](#animals--nature) | :frog: | `:frog:` | [top](#table-of-contents) |
+
+### Animal Reptile
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :whale: | `:whale:` | :whale2: | `:whale2:` | [top](#introduction) |
- | [top](#animals--nature) | :dolphin: | `:dolphin:` `:flipper:` | :seal: | `:seal:` | [top](#introduction) |
- | [top](#animals--nature) | :fish: | `:fish:` | :tropical_fish: | `:tropical_fish:` | [top](#introduction) |
- | [top](#animals--nature) | :blowfish: | `:blowfish:` | :shark: | `:shark:` | [top](#introduction) |
- | [top](#animals--nature) | :octopus: | `:octopus:` | :shell: | `:shell:` | [top](#introduction) |
++| [top](#animals--nature) | :crocodile: | `:crocodile:` | :turtle: | `:turtle:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :lizard: | `:lizard:` | :snake: | `:snake:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :dragon_face: | `:dragon_face:` | :dragon: | `:dragon:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :sauropod: | `:sauropod:` | :t-rex: | `:t-rex:` | [top](#table-of-contents) |
+
+### Animal Marine
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :snail: | `:snail:` | :butterfly: | `:butterfly:` | [top](#introduction) |
- | [top](#animals--nature) | :bug: | `:bug:` | :ant: | `:ant:` | [top](#introduction) |
- | [top](#animals--nature) | :bee: | `:bee:` `:honeybee:` | :beetle: | `:beetle:` | [top](#introduction) |
- | [top](#animals--nature) | :lady_beetle: | `:lady_beetle:` | :cricket: | `:cricket:` | [top](#introduction) |
- | [top](#animals--nature) | :cockroach: | `:cockroach:` | :spider: | `:spider:` | [top](#introduction) |
- | [top](#animals--nature) | :spider_web: | `:spider_web:` | :scorpion: | `:scorpion:` | [top](#introduction) |
- | [top](#animals--nature) | :mosquito: | `:mosquito:` | :fly: | `:fly:` | [top](#introduction) |
- | [top](#animals--nature) | :worm: | `:worm:` | :microbe: | `:microbe:` | [top](#introduction) |
++| [top](#animals--nature) | :whale: | `:whale:` | :whale2: | `:whale2:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :dolphin: | `:dolphin:` <br /> `:flipper:` | :seal: | `:seal:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :fish: | `:fish:` | :tropical_fish: | `:tropical_fish:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :blowfish: | `:blowfish:` | :shark: | `:shark:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :octopus: | `:octopus:` | :shell: | `:shell:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :coral: | `:coral:` | :jellyfish: | `:jellyfish:` | [top](#table-of-contents) |
+
+### Animal Bug
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :bouquet: | `:bouquet:` | :cherry_blossom: | `:cherry_blossom:` | [top](#introduction) |
- | [top](#animals--nature) | :white_flower: | `:white_flower:` | :rosette: | `:rosette:` | [top](#introduction) |
- | [top](#animals--nature) | :rose: | `:rose:` | :wilted_flower: | `:wilted_flower:` | [top](#introduction) |
- | [top](#animals--nature) | :hibiscus: | `:hibiscus:` | :sunflower: | `:sunflower:` | [top](#introduction) |
- | [top](#animals--nature) | :blossom: | `:blossom:` | :tulip: | `:tulip:` | [top](#introduction) |
++| [top](#animals--nature) | :snail: | `:snail:` | :butterfly: | `:butterfly:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :bug: | `:bug:` | :ant: | `:ant:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :bee: | `:bee:` <br /> `:honeybee:` | :beetle: | `:beetle:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :lady_beetle: | `:lady_beetle:` | :cricket: | `:cricket:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :cockroach: | `:cockroach:` | :spider: | `:spider:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :spider_web: | `:spider_web:` | :scorpion: | `:scorpion:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :mosquito: | `:mosquito:` | :fly: | `:fly:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :worm: | `:worm:` | :microbe: | `:microbe:` | [top](#table-of-contents) |
+
+### Plant Flower
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#animals--nature) | :seedling: | `:seedling:` | :potted_plant: | `:potted_plant:` | [top](#introduction) |
- | [top](#animals--nature) | :evergreen_tree: | `:evergreen_tree:` | :deciduous_tree: | `:deciduous_tree:` | [top](#introduction) |
- | [top](#animals--nature) | :palm_tree: | `:palm_tree:` | :cactus: | `:cactus:` | [top](#introduction) |
- | [top](#animals--nature) | :ear_of_rice: | `:ear_of_rice:` | :herb: | `:herb:` | [top](#introduction) |
- | [top](#animals--nature) | :shamrock: | `:shamrock:` | :four_leaf_clover: | `:four_leaf_clover:` | [top](#introduction) |
- | [top](#animals--nature) | :maple_leaf: | `:maple_leaf:` | :fallen_leaf: | `:fallen_leaf:` | [top](#introduction) |
- | [top](#animals--nature) | :leaves: | `:leaves:` | :mushroom: | `:mushroom:` | [top](#introduction) |
++| [top](#animals--nature) | :bouquet: | `:bouquet:` | :cherry_blossom: | `:cherry_blossom:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :white_flower: | `:white_flower:` | :lotus: | `:lotus:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :rosette: | `:rosette:` | :rose: | `:rose:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :wilted_flower: | `:wilted_flower:` | :hibiscus: | `:hibiscus:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :sunflower: | `:sunflower:` | :blossom: | `:blossom:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :tulip: | `:tulip:` | :hyacinth: | `:hyacinth:` | [top](#table-of-contents) |
+
+### Plant Other
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :grapes: | `:grapes:` | :melon: | `:melon:` | [top](#introduction) |
- | [top](#food--drink) | :watermelon: | `:watermelon:` | :mandarin: | `:mandarin:` `:orange:` `:tangerine:` | [top](#introduction) |
- | [top](#food--drink) | :lemon: | `:lemon:` | :banana: | `:banana:` | [top](#introduction) |
- | [top](#food--drink) | :pineapple: | `:pineapple:` | :mango: | `:mango:` | [top](#introduction) |
- | [top](#food--drink) | :apple: | `:apple:` | :green_apple: | `:green_apple:` | [top](#introduction) |
- | [top](#food--drink) | :pear: | `:pear:` | :peach: | `:peach:` | [top](#introduction) |
- | [top](#food--drink) | :cherries: | `:cherries:` | :strawberry: | `:strawberry:` | [top](#introduction) |
- | [top](#food--drink) | :blueberries: | `:blueberries:` | :kiwi_fruit: | `:kiwi_fruit:` | [top](#introduction) |
- | [top](#food--drink) | :tomato: | `:tomato:` | :olive: | `:olive:` | [top](#introduction) |
- | [top](#food--drink) | :coconut: | `:coconut:` | | | [top](#introduction) |
++| [top](#animals--nature) | :seedling: | `:seedling:` | :potted_plant: | `:potted_plant:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :evergreen_tree: | `:evergreen_tree:` | :deciduous_tree: | `:deciduous_tree:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :palm_tree: | `:palm_tree:` | :cactus: | `:cactus:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :ear_of_rice: | `:ear_of_rice:` | :herb: | `:herb:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :shamrock: | `:shamrock:` | :four_leaf_clover: | `:four_leaf_clover:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :maple_leaf: | `:maple_leaf:` | :fallen_leaf: | `:fallen_leaf:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :leaves: | `:leaves:` | :empty_nest: | `:empty_nest:` | [top](#table-of-contents) |
++| [top](#animals--nature) | :nest_with_eggs: | `:nest_with_eggs:` | :mushroom: | `:mushroom:` | [top](#table-of-contents) |
+
+## Food & Drink
+
+- [Food Fruit](#food-fruit)
+- [Food Vegetable](#food-vegetable)
+- [Food Prepared](#food-prepared)
+- [Food Asian](#food-asian)
+- [Food Marine](#food-marine)
+- [Food Sweet](#food-sweet)
+- [Drink](#drink)
+- [Dishware](#dishware)
+
+### Food Fruit
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :avocado: | `:avocado:` | :eggplant: | `:eggplant:` | [top](#introduction) |
- | [top](#food--drink) | :potato: | `:potato:` | :carrot: | `:carrot:` | [top](#introduction) |
- | [top](#food--drink) | :corn: | `:corn:` | :hot_pepper: | `:hot_pepper:` | [top](#introduction) |
- | [top](#food--drink) | :bell_pepper: | `:bell_pepper:` | :cucumber: | `:cucumber:` | [top](#introduction) |
- | [top](#food--drink) | :leafy_green: | `:leafy_green:` | :broccoli: | `:broccoli:` | [top](#introduction) |
- | [top](#food--drink) | :garlic: | `:garlic:` | :onion: | `:onion:` | [top](#introduction) |
- | [top](#food--drink) | :peanuts: | `:peanuts:` | :chestnut: | `:chestnut:` | [top](#introduction) |
++| [top](#food--drink) | :grapes: | `:grapes:` | :melon: | `:melon:` | [top](#table-of-contents) |
++| [top](#food--drink) | :watermelon: | `:watermelon:` | :mandarin: | `:mandarin:` <br /> `:orange:` <br /> `:tangerine:` | [top](#table-of-contents) |
++| [top](#food--drink) | :lemon: | `:lemon:` | :banana: | `:banana:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pineapple: | `:pineapple:` | :mango: | `:mango:` | [top](#table-of-contents) |
++| [top](#food--drink) | :apple: | `:apple:` | :green_apple: | `:green_apple:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pear: | `:pear:` | :peach: | `:peach:` | [top](#table-of-contents) |
++| [top](#food--drink) | :cherries: | `:cherries:` | :strawberry: | `:strawberry:` | [top](#table-of-contents) |
++| [top](#food--drink) | :blueberries: | `:blueberries:` | :kiwi_fruit: | `:kiwi_fruit:` | [top](#table-of-contents) |
++| [top](#food--drink) | :tomato: | `:tomato:` | :olive: | `:olive:` | [top](#table-of-contents) |
++| [top](#food--drink) | :coconut: | `:coconut:` | | | [top](#table-of-contents) |
+
+### Food Vegetable
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :bread: | `:bread:` | :croissant: | `:croissant:` | [top](#introduction) |
- | [top](#food--drink) | :baguette_bread: | `:baguette_bread:` | :flatbread: | `:flatbread:` | [top](#introduction) |
- | [top](#food--drink) | :pretzel: | `:pretzel:` | :bagel: | `:bagel:` | [top](#introduction) |
- | [top](#food--drink) | :pancakes: | `:pancakes:` | :waffle: | `:waffle:` | [top](#introduction) |
- | [top](#food--drink) | :cheese: | `:cheese:` | :meat_on_bone: | `:meat_on_bone:` | [top](#introduction) |
- | [top](#food--drink) | :poultry_leg: | `:poultry_leg:` | :cut_of_meat: | `:cut_of_meat:` | [top](#introduction) |
- | [top](#food--drink) | :bacon: | `:bacon:` | :hamburger: | `:hamburger:` | [top](#introduction) |
- | [top](#food--drink) | :fries: | `:fries:` | :pizza: | `:pizza:` | [top](#introduction) |
- | [top](#food--drink) | :hotdog: | `:hotdog:` | :sandwich: | `:sandwich:` | [top](#introduction) |
- | [top](#food--drink) | :taco: | `:taco:` | :burrito: | `:burrito:` | [top](#introduction) |
- | [top](#food--drink) | :tamale: | `:tamale:` | :stuffed_flatbread: | `:stuffed_flatbread:` | [top](#introduction) |
- | [top](#food--drink) | :falafel: | `:falafel:` | :egg: | `:egg:` | [top](#introduction) |
- | [top](#food--drink) | :fried_egg: | `:fried_egg:` | :shallow_pan_of_food: | `:shallow_pan_of_food:` | [top](#introduction) |
- | [top](#food--drink) | :stew: | `:stew:` | :fondue: | `:fondue:` | [top](#introduction) |
- | [top](#food--drink) | :bowl_with_spoon: | `:bowl_with_spoon:` | :green_salad: | `:green_salad:` | [top](#introduction) |
- | [top](#food--drink) | :popcorn: | `:popcorn:` | :butter: | `:butter:` | [top](#introduction) |
- | [top](#food--drink) | :salt: | `:salt:` | :canned_food: | `:canned_food:` | [top](#introduction) |
++| [top](#food--drink) | :avocado: | `:avocado:` | :eggplant: | `:eggplant:` | [top](#table-of-contents) |
++| [top](#food--drink) | :potato: | `:potato:` | :carrot: | `:carrot:` | [top](#table-of-contents) |
++| [top](#food--drink) | :corn: | `:corn:` | :hot_pepper: | `:hot_pepper:` | [top](#table-of-contents) |
++| [top](#food--drink) | :bell_pepper: | `:bell_pepper:` | :cucumber: | `:cucumber:` | [top](#table-of-contents) |
++| [top](#food--drink) | :leafy_green: | `:leafy_green:` | :broccoli: | `:broccoli:` | [top](#table-of-contents) |
++| [top](#food--drink) | :garlic: | `:garlic:` | :onion: | `:onion:` | [top](#table-of-contents) |
++| [top](#food--drink) | :peanuts: | `:peanuts:` | :beans: | `:beans:` | [top](#table-of-contents) |
++| [top](#food--drink) | :chestnut: | `:chestnut:` | :ginger_root: | `:ginger_root:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pea_pod: | `:pea_pod:` | | | [top](#table-of-contents) |
+
+### Food Prepared
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :bento: | `:bento:` | :rice_cracker: | `:rice_cracker:` | [top](#introduction) |
- | [top](#food--drink) | :rice_ball: | `:rice_ball:` | :rice: | `:rice:` | [top](#introduction) |
- | [top](#food--drink) | :curry: | `:curry:` | :ramen: | `:ramen:` | [top](#introduction) |
- | [top](#food--drink) | :spaghetti: | `:spaghetti:` | :sweet_potato: | `:sweet_potato:` | [top](#introduction) |
- | [top](#food--drink) | :oden: | `:oden:` | :sushi: | `:sushi:` | [top](#introduction) |
- | [top](#food--drink) | :fried_shrimp: | `:fried_shrimp:` | :fish_cake: | `:fish_cake:` | [top](#introduction) |
- | [top](#food--drink) | :moon_cake: | `:moon_cake:` | :dango: | `:dango:` | [top](#introduction) |
- | [top](#food--drink) | :dumpling: | `:dumpling:` | :fortune_cookie: | `:fortune_cookie:` | [top](#introduction) |
- | [top](#food--drink) | :takeout_box: | `:takeout_box:` | | | [top](#introduction) |
++| [top](#food--drink) | :bread: | `:bread:` | :croissant: | `:croissant:` | [top](#table-of-contents) |
++| [top](#food--drink) | :baguette_bread: | `:baguette_bread:` | :flatbread: | `:flatbread:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pretzel: | `:pretzel:` | :bagel: | `:bagel:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pancakes: | `:pancakes:` | :waffle: | `:waffle:` | [top](#table-of-contents) |
++| [top](#food--drink) | :cheese: | `:cheese:` | :meat_on_bone: | `:meat_on_bone:` | [top](#table-of-contents) |
++| [top](#food--drink) | :poultry_leg: | `:poultry_leg:` | :cut_of_meat: | `:cut_of_meat:` | [top](#table-of-contents) |
++| [top](#food--drink) | :bacon: | `:bacon:` | :hamburger: | `:hamburger:` | [top](#table-of-contents) |
++| [top](#food--drink) | :fries: | `:fries:` | :pizza: | `:pizza:` | [top](#table-of-contents) |
++| [top](#food--drink) | :hotdog: | `:hotdog:` | :sandwich: | `:sandwich:` | [top](#table-of-contents) |
++| [top](#food--drink) | :taco: | `:taco:` | :burrito: | `:burrito:` | [top](#table-of-contents) |
++| [top](#food--drink) | :tamale: | `:tamale:` | :stuffed_flatbread: | `:stuffed_flatbread:` | [top](#table-of-contents) |
++| [top](#food--drink) | :falafel: | `:falafel:` | :egg: | `:egg:` | [top](#table-of-contents) |
++| [top](#food--drink) | :fried_egg: | `:fried_egg:` | :shallow_pan_of_food: | `:shallow_pan_of_food:` | [top](#table-of-contents) |
++| [top](#food--drink) | :stew: | `:stew:` | :fondue: | `:fondue:` | [top](#table-of-contents) |
++| [top](#food--drink) | :bowl_with_spoon: | `:bowl_with_spoon:` | :green_salad: | `:green_salad:` | [top](#table-of-contents) |
++| [top](#food--drink) | :popcorn: | `:popcorn:` | :butter: | `:butter:` | [top](#table-of-contents) |
++| [top](#food--drink) | :salt: | `:salt:` | :canned_food: | `:canned_food:` | [top](#table-of-contents) |
+
+### Food Asian
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :crab: | `:crab:` | :lobster: | `:lobster:` | [top](#introduction) |
- | [top](#food--drink) | :shrimp: | `:shrimp:` | :squid: | `:squid:` | [top](#introduction) |
- | [top](#food--drink) | :oyster: | `:oyster:` | | | [top](#introduction) |
++| [top](#food--drink) | :bento: | `:bento:` | :rice_cracker: | `:rice_cracker:` | [top](#table-of-contents) |
++| [top](#food--drink) | :rice_ball: | `:rice_ball:` | :rice: | `:rice:` | [top](#table-of-contents) |
++| [top](#food--drink) | :curry: | `:curry:` | :ramen: | `:ramen:` | [top](#table-of-contents) |
++| [top](#food--drink) | :spaghetti: | `:spaghetti:` | :sweet_potato: | `:sweet_potato:` | [top](#table-of-contents) |
++| [top](#food--drink) | :oden: | `:oden:` | :sushi: | `:sushi:` | [top](#table-of-contents) |
++| [top](#food--drink) | :fried_shrimp: | `:fried_shrimp:` | :fish_cake: | `:fish_cake:` | [top](#table-of-contents) |
++| [top](#food--drink) | :moon_cake: | `:moon_cake:` | :dango: | `:dango:` | [top](#table-of-contents) |
++| [top](#food--drink) | :dumpling: | `:dumpling:` | :fortune_cookie: | `:fortune_cookie:` | [top](#table-of-contents) |
++| [top](#food--drink) | :takeout_box: | `:takeout_box:` | | | [top](#table-of-contents) |
+
+### Food Marine
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :icecream: | `:icecream:` | :shaved_ice: | `:shaved_ice:` | [top](#introduction) |
- | [top](#food--drink) | :ice_cream: | `:ice_cream:` | :doughnut: | `:doughnut:` | [top](#introduction) |
- | [top](#food--drink) | :cookie: | `:cookie:` | :birthday: | `:birthday:` | [top](#introduction) |
- | [top](#food--drink) | :cake: | `:cake:` | :cupcake: | `:cupcake:` | [top](#introduction) |
- | [top](#food--drink) | :pie: | `:pie:` | :chocolate_bar: | `:chocolate_bar:` | [top](#introduction) |
- | [top](#food--drink) | :candy: | `:candy:` | :lollipop: | `:lollipop:` | [top](#introduction) |
- | [top](#food--drink) | :custard: | `:custard:` | :honey_pot: | `:honey_pot:` | [top](#introduction) |
++| [top](#food--drink) | :crab: | `:crab:` | :lobster: | `:lobster:` | [top](#table-of-contents) |
++| [top](#food--drink) | :shrimp: | `:shrimp:` | :squid: | `:squid:` | [top](#table-of-contents) |
++| [top](#food--drink) | :oyster: | `:oyster:` | | | [top](#table-of-contents) |
+
+### Food Sweet
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :baby_bottle: | `:baby_bottle:` | :milk_glass: | `:milk_glass:` | [top](#introduction) |
- | [top](#food--drink) | :coffee: | `:coffee:` | :teapot: | `:teapot:` | [top](#introduction) |
- | [top](#food--drink) | :tea: | `:tea:` | :sake: | `:sake:` | [top](#introduction) |
- | [top](#food--drink) | :champagne: | `:champagne:` | :wine_glass: | `:wine_glass:` | [top](#introduction) |
- | [top](#food--drink) | :cocktail: | `:cocktail:` | :tropical_drink: | `:tropical_drink:` | [top](#introduction) |
- | [top](#food--drink) | :beer: | `:beer:` | :beers: | `:beers:` | [top](#introduction) |
- | [top](#food--drink) | :clinking_glasses: | `:clinking_glasses:` | :tumbler_glass: | `:tumbler_glass:` | [top](#introduction) |
- | [top](#food--drink) | :cup_with_straw: | `:cup_with_straw:` | :bubble_tea: | `:bubble_tea:` | [top](#introduction) |
- | [top](#food--drink) | :beverage_box: | `:beverage_box:` | :mate: | `:mate:` | [top](#introduction) |
- | [top](#food--drink) | :ice_cube: | `:ice_cube:` | | | [top](#introduction) |
++| [top](#food--drink) | :icecream: | `:icecream:` | :shaved_ice: | `:shaved_ice:` | [top](#table-of-contents) |
++| [top](#food--drink) | :ice_cream: | `:ice_cream:` | :doughnut: | `:doughnut:` | [top](#table-of-contents) |
++| [top](#food--drink) | :cookie: | `:cookie:` | :birthday: | `:birthday:` | [top](#table-of-contents) |
++| [top](#food--drink) | :cake: | `:cake:` | :cupcake: | `:cupcake:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pie: | `:pie:` | :chocolate_bar: | `:chocolate_bar:` | [top](#table-of-contents) |
++| [top](#food--drink) | :candy: | `:candy:` | :lollipop: | `:lollipop:` | [top](#table-of-contents) |
++| [top](#food--drink) | :custard: | `:custard:` | :honey_pot: | `:honey_pot:` | [top](#table-of-contents) |
+
+### Drink
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#food--drink) | :chopsticks: | `:chopsticks:` | :plate_with_cutlery: | `:plate_with_cutlery:` | [top](#introduction) |
- | [top](#food--drink) | :fork_and_knife: | `:fork_and_knife:` | :spoon: | `:spoon:` | [top](#introduction) |
- | [top](#food--drink) | :hocho: | `:hocho:` `:knife:` | :amphora: | `:amphora:` | [top](#introduction) |
++| [top](#food--drink) | :baby_bottle: | `:baby_bottle:` | :milk_glass: | `:milk_glass:` | [top](#table-of-contents) |
++| [top](#food--drink) | :coffee: | `:coffee:` | :teapot: | `:teapot:` | [top](#table-of-contents) |
++| [top](#food--drink) | :tea: | `:tea:` | :sake: | `:sake:` | [top](#table-of-contents) |
++| [top](#food--drink) | :champagne: | `:champagne:` | :wine_glass: | `:wine_glass:` | [top](#table-of-contents) |
++| [top](#food--drink) | :cocktail: | `:cocktail:` | :tropical_drink: | `:tropical_drink:` | [top](#table-of-contents) |
++| [top](#food--drink) | :beer: | `:beer:` | :beers: | `:beers:` | [top](#table-of-contents) |
++| [top](#food--drink) | :clinking_glasses: | `:clinking_glasses:` | :tumbler_glass: | `:tumbler_glass:` | [top](#table-of-contents) |
++| [top](#food--drink) | :pouring_liquid: | `:pouring_liquid:` | :cup_with_straw: | `:cup_with_straw:` | [top](#table-of-contents) |
++| [top](#food--drink) | :bubble_tea: | `:bubble_tea:` | :beverage_box: | `:beverage_box:` | [top](#table-of-contents) |
++| [top](#food--drink) | :mate: | `:mate:` | :ice_cube: | `:ice_cube:` | [top](#table-of-contents) |
+
+### Dishware
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :earth_africa: | `:earth_africa:` | :earth_americas: | `:earth_americas:` | [top](#introduction) |
- | [top](#travel--places) | :earth_asia: | `:earth_asia:` | :globe_with_meridians: | `:globe_with_meridians:` | [top](#introduction) |
- | [top](#travel--places) | :world_map: | `:world_map:` | :japan: | `:japan:` | [top](#introduction) |
- | [top](#travel--places) | :compass: | `:compass:` | | | [top](#introduction) |
++| [top](#food--drink) | :chopsticks: | `:chopsticks:` | :plate_with_cutlery: | `:plate_with_cutlery:` | [top](#table-of-contents) |
++| [top](#food--drink) | :fork_and_knife: | `:fork_and_knife:` | :spoon: | `:spoon:` | [top](#table-of-contents) |
++| [top](#food--drink) | :hocho: | `:hocho:` <br /> `:knife:` | :jar: | `:jar:` | [top](#table-of-contents) |
++| [top](#food--drink) | :amphora: | `:amphora:` | | | [top](#table-of-contents) |
+
+## Travel & Places
+
+- [Place Map](#place-map)
+- [Place Geographic](#place-geographic)
+- [Place Building](#place-building)
+- [Place Religious](#place-religious)
+- [Place Other](#place-other)
+- [Transport Ground](#transport-ground)
+- [Transport Water](#transport-water)
+- [Transport Air](#transport-air)
+- [Hotel](#hotel)
+- [Time](#time)
+- [Sky & Weather](#sky--weather)
+
+### Place Map
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :mountain_snow: | `:mountain_snow:` | :mountain: | `:mountain:` | [top](#introduction) |
- | [top](#travel--places) | :volcano: | `:volcano:` | :mount_fuji: | `:mount_fuji:` | [top](#introduction) |
- | [top](#travel--places) | :camping: | `:camping:` | :beach_umbrella: | `:beach_umbrella:` | [top](#introduction) |
- | [top](#travel--places) | :desert: | `:desert:` | :desert_island: | `:desert_island:` | [top](#introduction) |
- | [top](#travel--places) | :national_park: | `:national_park:` | | | [top](#introduction) |
++| [top](#travel--places) | :earth_africa: | `:earth_africa:` | :earth_americas: | `:earth_americas:` | [top](#table-of-contents) |
++| [top](#travel--places) | :earth_asia: | `:earth_asia:` | :globe_with_meridians: | `:globe_with_meridians:` | [top](#table-of-contents) |
++| [top](#travel--places) | :world_map: | `:world_map:` | :japan: | `:japan:` | [top](#table-of-contents) |
++| [top](#travel--places) | :compass: | `:compass:` | | | [top](#table-of-contents) |
+
+### Place Geographic
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :stadium: | `:stadium:` | :classical_building: | `:classical_building:` | [top](#introduction) |
- | [top](#travel--places) | :building_construction: | `:building_construction:` | :bricks: | `:bricks:` | [top](#introduction) |
- | [top](#travel--places) | :rock: | `:rock:` | :wood: | `:wood:` | [top](#introduction) |
- | [top](#travel--places) | :hut: | `:hut:` | :houses: | `:houses:` | [top](#introduction) |
- | [top](#travel--places) | :derelict_house: | `:derelict_house:` | :house: | `:house:` | [top](#introduction) |
- | [top](#travel--places) | :house_with_garden: | `:house_with_garden:` | :office: | `:office:` | [top](#introduction) |
- | [top](#travel--places) | :post_office: | `:post_office:` | :european_post_office: | `:european_post_office:` | [top](#introduction) |
- | [top](#travel--places) | :hospital: | `:hospital:` | :bank: | `:bank:` | [top](#introduction) |
- | [top](#travel--places) | :hotel: | `:hotel:` | :love_hotel: | `:love_hotel:` | [top](#introduction) |
- | [top](#travel--places) | :convenience_store: | `:convenience_store:` | :school: | `:school:` | [top](#introduction) |
- | [top](#travel--places) | :department_store: | `:department_store:` | :factory: | `:factory:` | [top](#introduction) |
- | [top](#travel--places) | :japanese_castle: | `:japanese_castle:` | :european_castle: | `:european_castle:` | [top](#introduction) |
- | [top](#travel--places) | :wedding: | `:wedding:` | :tokyo_tower: | `:tokyo_tower:` | [top](#introduction) |
- | [top](#travel--places) | :statue_of_liberty: | `:statue_of_liberty:` | | | [top](#introduction) |
++| [top](#travel--places) | :mountain_snow: | `:mountain_snow:` | :mountain: | `:mountain:` | [top](#table-of-contents) |
++| [top](#travel--places) | :volcano: | `:volcano:` | :mount_fuji: | `:mount_fuji:` | [top](#table-of-contents) |
++| [top](#travel--places) | :camping: | `:camping:` | :beach_umbrella: | `:beach_umbrella:` | [top](#table-of-contents) |
++| [top](#travel--places) | :desert: | `:desert:` | :desert_island: | `:desert_island:` | [top](#table-of-contents) |
++| [top](#travel--places) | :national_park: | `:national_park:` | | | [top](#table-of-contents) |
+
+### Place Building
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :church: | `:church:` | :mosque: | `:mosque:` | [top](#introduction) |
- | [top](#travel--places) | :hindu_temple: | `:hindu_temple:` | :synagogue: | `:synagogue:` | [top](#introduction) |
- | [top](#travel--places) | :shinto_shrine: | `:shinto_shrine:` | :kaaba: | `:kaaba:` | [top](#introduction) |
++| [top](#travel--places) | :stadium: | `:stadium:` | :classical_building: | `:classical_building:` | [top](#table-of-contents) |
++| [top](#travel--places) | :building_construction: | `:building_construction:` | :bricks: | `:bricks:` | [top](#table-of-contents) |
++| [top](#travel--places) | :rock: | `:rock:` | :wood: | `:wood:` | [top](#table-of-contents) |
++| [top](#travel--places) | :hut: | `:hut:` | :houses: | `:houses:` | [top](#table-of-contents) |
++| [top](#travel--places) | :derelict_house: | `:derelict_house:` | :house: | `:house:` | [top](#table-of-contents) |
++| [top](#travel--places) | :house_with_garden: | `:house_with_garden:` | :office: | `:office:` | [top](#table-of-contents) |
++| [top](#travel--places) | :post_office: | `:post_office:` | :european_post_office: | `:european_post_office:` | [top](#table-of-contents) |
++| [top](#travel--places) | :hospital: | `:hospital:` | :bank: | `:bank:` | [top](#table-of-contents) |
++| [top](#travel--places) | :hotel: | `:hotel:` | :love_hotel: | `:love_hotel:` | [top](#table-of-contents) |
++| [top](#travel--places) | :convenience_store: | `:convenience_store:` | :school: | `:school:` | [top](#table-of-contents) |
++| [top](#travel--places) | :department_store: | `:department_store:` | :factory: | `:factory:` | [top](#table-of-contents) |
++| [top](#travel--places) | :japanese_castle: | `:japanese_castle:` | :european_castle: | `:european_castle:` | [top](#table-of-contents) |
++| [top](#travel--places) | :wedding: | `:wedding:` | :tokyo_tower: | `:tokyo_tower:` | [top](#table-of-contents) |
++| [top](#travel--places) | :statue_of_liberty: | `:statue_of_liberty:` | | | [top](#table-of-contents) |
+
+### Place Religious
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :fountain: | `:fountain:` | :tent: | `:tent:` | [top](#introduction) |
- | [top](#travel--places) | :foggy: | `:foggy:` | :night_with_stars: | `:night_with_stars:` | [top](#introduction) |
- | [top](#travel--places) | :cityscape: | `:cityscape:` | :sunrise_over_mountains: | `:sunrise_over_mountains:` | [top](#introduction) |
- | [top](#travel--places) | :sunrise: | `:sunrise:` | :city_sunset: | `:city_sunset:` | [top](#introduction) |
- | [top](#travel--places) | :city_sunrise: | `:city_sunrise:` | :bridge_at_night: | `:bridge_at_night:` | [top](#introduction) |
- | [top](#travel--places) | :hotsprings: | `:hotsprings:` | :carousel_horse: | `:carousel_horse:` | [top](#introduction) |
- | [top](#travel--places) | :ferris_wheel: | `:ferris_wheel:` | :roller_coaster: | `:roller_coaster:` | [top](#introduction) |
- | [top](#travel--places) | :barber: | `:barber:` | :circus_tent: | `:circus_tent:` | [top](#introduction) |
++| [top](#travel--places) | :church: | `:church:` | :mosque: | `:mosque:` | [top](#table-of-contents) |
++| [top](#travel--places) | :hindu_temple: | `:hindu_temple:` | :synagogue: | `:synagogue:` | [top](#table-of-contents) |
++| [top](#travel--places) | :shinto_shrine: | `:shinto_shrine:` | :kaaba: | `:kaaba:` | [top](#table-of-contents) |
+
+### Place Other
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :steam_locomotive: | `:steam_locomotive:` | :railway_car: | `:railway_car:` | [top](#introduction) |
- | [top](#travel--places) | :bullettrain_side: | `:bullettrain_side:` | :bullettrain_front: | `:bullettrain_front:` | [top](#introduction) |
- | [top](#travel--places) | :train2: | `:train2:` | :metro: | `:metro:` | [top](#introduction) |
- | [top](#travel--places) | :light_rail: | `:light_rail:` | :station: | `:station:` | [top](#introduction) |
- | [top](#travel--places) | :tram: | `:tram:` | :monorail: | `:monorail:` | [top](#introduction) |
- | [top](#travel--places) | :mountain_railway: | `:mountain_railway:` | :train: | `:train:` | [top](#introduction) |
- | [top](#travel--places) | :bus: | `:bus:` | :oncoming_bus: | `:oncoming_bus:` | [top](#introduction) |
- | [top](#travel--places) | :trolleybus: | `:trolleybus:` | :minibus: | `:minibus:` | [top](#introduction) |
- | [top](#travel--places) | :ambulance: | `:ambulance:` | :fire_engine: | `:fire_engine:` | [top](#introduction) |
- | [top](#travel--places) | :police_car: | `:police_car:` | :oncoming_police_car: | `:oncoming_police_car:` | [top](#introduction) |
- | [top](#travel--places) | :taxi: | `:taxi:` | :oncoming_taxi: | `:oncoming_taxi:` | [top](#introduction) |
- | [top](#travel--places) | :car: | `:car:` `:red_car:` | :oncoming_automobile: | `:oncoming_automobile:` | [top](#introduction) |
- | [top](#travel--places) | :blue_car: | `:blue_car:` | :pickup_truck: | `:pickup_truck:` | [top](#introduction) |
- | [top](#travel--places) | :truck: | `:truck:` | :articulated_lorry: | `:articulated_lorry:` | [top](#introduction) |
- | [top](#travel--places) | :tractor: | `:tractor:` | :racing_car: | `:racing_car:` | [top](#introduction) |
- | [top](#travel--places) | :motorcycle: | `:motorcycle:` | :motor_scooter: | `:motor_scooter:` | [top](#introduction) |
- | [top](#travel--places) | :manual_wheelchair: | `:manual_wheelchair:` | :motorized_wheelchair: | `:motorized_wheelchair:` | [top](#introduction) |
- | [top](#travel--places) | :auto_rickshaw: | `:auto_rickshaw:` | :bike: | `:bike:` | [top](#introduction) |
- | [top](#travel--places) | :kick_scooter: | `:kick_scooter:` | :skateboard: | `:skateboard:` | [top](#introduction) |
- | [top](#travel--places) | :roller_skate: | `:roller_skate:` | :busstop: | `:busstop:` | [top](#introduction) |
- | [top](#travel--places) | :motorway: | `:motorway:` | :railway_track: | `:railway_track:` | [top](#introduction) |
- | [top](#travel--places) | :oil_drum: | `:oil_drum:` | :fuelpump: | `:fuelpump:` | [top](#introduction) |
- | [top](#travel--places) | :rotating_light: | `:rotating_light:` | :traffic_light: | `:traffic_light:` | [top](#introduction) |
- | [top](#travel--places) | :vertical_traffic_light: | `:vertical_traffic_light:` | :stop_sign: | `:stop_sign:` | [top](#introduction) |
- | [top](#travel--places) | :construction: | `:construction:` | | | [top](#introduction) |
++| [top](#travel--places) | :fountain: | `:fountain:` | :tent: | `:tent:` | [top](#table-of-contents) |
++| [top](#travel--places) | :foggy: | `:foggy:` | :night_with_stars: | `:night_with_stars:` | [top](#table-of-contents) |
++| [top](#travel--places) | :cityscape: | `:cityscape:` | :sunrise_over_mountains: | `:sunrise_over_mountains:` | [top](#table-of-contents) |
++| [top](#travel--places) | :sunrise: | `:sunrise:` | :city_sunset: | `:city_sunset:` | [top](#table-of-contents) |
++| [top](#travel--places) | :city_sunrise: | `:city_sunrise:` | :bridge_at_night: | `:bridge_at_night:` | [top](#table-of-contents) |
++| [top](#travel--places) | :hotsprings: | `:hotsprings:` | :carousel_horse: | `:carousel_horse:` | [top](#table-of-contents) |
++| [top](#travel--places) | :playground_slide: | `:playground_slide:` | :ferris_wheel: | `:ferris_wheel:` | [top](#table-of-contents) |
++| [top](#travel--places) | :roller_coaster: | `:roller_coaster:` | :barber: | `:barber:` | [top](#table-of-contents) |
++| [top](#travel--places) | :circus_tent: | `:circus_tent:` | | | [top](#table-of-contents) |
+
+### Transport Ground
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :anchor: | `:anchor:` | :boat: | `:boat:` `:sailboat:` | [top](#introduction) |
- | [top](#travel--places) | :canoe: | `:canoe:` | :speedboat: | `:speedboat:` | [top](#introduction) |
- | [top](#travel--places) | :passenger_ship: | `:passenger_ship:` | :ferry: | `:ferry:` | [top](#introduction) |
- | [top](#travel--places) | :motor_boat: | `:motor_boat:` | :ship: | `:ship:` | [top](#introduction) |
++| [top](#travel--places) | :steam_locomotive: | `:steam_locomotive:` | :railway_car: | `:railway_car:` | [top](#table-of-contents) |
++| [top](#travel--places) | :bullettrain_side: | `:bullettrain_side:` | :bullettrain_front: | `:bullettrain_front:` | [top](#table-of-contents) |
++| [top](#travel--places) | :train2: | `:train2:` | :metro: | `:metro:` | [top](#table-of-contents) |
++| [top](#travel--places) | :light_rail: | `:light_rail:` | :station: | `:station:` | [top](#table-of-contents) |
++| [top](#travel--places) | :tram: | `:tram:` | :monorail: | `:monorail:` | [top](#table-of-contents) |
++| [top](#travel--places) | :mountain_railway: | `:mountain_railway:` | :train: | `:train:` | [top](#table-of-contents) |
++| [top](#travel--places) | :bus: | `:bus:` | :oncoming_bus: | `:oncoming_bus:` | [top](#table-of-contents) |
++| [top](#travel--places) | :trolleybus: | `:trolleybus:` | :minibus: | `:minibus:` | [top](#table-of-contents) |
++| [top](#travel--places) | :ambulance: | `:ambulance:` | :fire_engine: | `:fire_engine:` | [top](#table-of-contents) |
++| [top](#travel--places) | :police_car: | `:police_car:` | :oncoming_police_car: | `:oncoming_police_car:` | [top](#table-of-contents) |
++| [top](#travel--places) | :taxi: | `:taxi:` | :oncoming_taxi: | `:oncoming_taxi:` | [top](#table-of-contents) |
++| [top](#travel--places) | :car: | `:car:` <br /> `:red_car:` | :oncoming_automobile: | `:oncoming_automobile:` | [top](#table-of-contents) |
++| [top](#travel--places) | :blue_car: | `:blue_car:` | :pickup_truck: | `:pickup_truck:` | [top](#table-of-contents) |
++| [top](#travel--places) | :truck: | `:truck:` | :articulated_lorry: | `:articulated_lorry:` | [top](#table-of-contents) |
++| [top](#travel--places) | :tractor: | `:tractor:` | :racing_car: | `:racing_car:` | [top](#table-of-contents) |
++| [top](#travel--places) | :motorcycle: | `:motorcycle:` | :motor_scooter: | `:motor_scooter:` | [top](#table-of-contents) |
++| [top](#travel--places) | :manual_wheelchair: | `:manual_wheelchair:` | :motorized_wheelchair: | `:motorized_wheelchair:` | [top](#table-of-contents) |
++| [top](#travel--places) | :auto_rickshaw: | `:auto_rickshaw:` | :bike: | `:bike:` | [top](#table-of-contents) |
++| [top](#travel--places) | :kick_scooter: | `:kick_scooter:` | :skateboard: | `:skateboard:` | [top](#table-of-contents) |
++| [top](#travel--places) | :roller_skate: | `:roller_skate:` | :busstop: | `:busstop:` | [top](#table-of-contents) |
++| [top](#travel--places) | :motorway: | `:motorway:` | :railway_track: | `:railway_track:` | [top](#table-of-contents) |
++| [top](#travel--places) | :oil_drum: | `:oil_drum:` | :fuelpump: | `:fuelpump:` | [top](#table-of-contents) |
++| [top](#travel--places) | :wheel: | `:wheel:` | :rotating_light: | `:rotating_light:` | [top](#table-of-contents) |
++| [top](#travel--places) | :traffic_light: | `:traffic_light:` | :vertical_traffic_light: | `:vertical_traffic_light:` | [top](#table-of-contents) |
++| [top](#travel--places) | :stop_sign: | `:stop_sign:` | :construction: | `:construction:` | [top](#table-of-contents) |
+
+### Transport Water
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :airplane: | `:airplane:` | :small_airplane: | `:small_airplane:` | [top](#introduction) |
- | [top](#travel--places) | :flight_departure: | `:flight_departure:` | :flight_arrival: | `:flight_arrival:` | [top](#introduction) |
- | [top](#travel--places) | :parachute: | `:parachute:` | :seat: | `:seat:` | [top](#introduction) |
- | [top](#travel--places) | :helicopter: | `:helicopter:` | :suspension_railway: | `:suspension_railway:` | [top](#introduction) |
- | [top](#travel--places) | :mountain_cableway: | `:mountain_cableway:` | :aerial_tramway: | `:aerial_tramway:` | [top](#introduction) |
- | [top](#travel--places) | :artificial_satellite: | `:artificial_satellite:` | :rocket: | `:rocket:` | [top](#introduction) |
- | [top](#travel--places) | :flying_saucer: | `:flying_saucer:` | | | [top](#introduction) |
++| [top](#travel--places) | :anchor: | `:anchor:` | :ring_buoy: | `:ring_buoy:` | [top](#table-of-contents) |
++| [top](#travel--places) | :boat: | `:boat:` <br /> `:sailboat:` | :canoe: | `:canoe:` | [top](#table-of-contents) |
++| [top](#travel--places) | :speedboat: | `:speedboat:` | :passenger_ship: | `:passenger_ship:` | [top](#table-of-contents) |
++| [top](#travel--places) | :ferry: | `:ferry:` | :motor_boat: | `:motor_boat:` | [top](#table-of-contents) |
++| [top](#travel--places) | :ship: | `:ship:` | | | [top](#table-of-contents) |
+
+### Transport Air
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :bellhop_bell: | `:bellhop_bell:` | :luggage: | `:luggage:` | [top](#introduction) |
++| [top](#travel--places) | :airplane: | `:airplane:` | :small_airplane: | `:small_airplane:` | [top](#table-of-contents) |
++| [top](#travel--places) | :flight_departure: | `:flight_departure:` | :flight_arrival: | `:flight_arrival:` | [top](#table-of-contents) |
++| [top](#travel--places) | :parachute: | `:parachute:` | :seat: | `:seat:` | [top](#table-of-contents) |
++| [top](#travel--places) | :helicopter: | `:helicopter:` | :suspension_railway: | `:suspension_railway:` | [top](#table-of-contents) |
++| [top](#travel--places) | :mountain_cableway: | `:mountain_cableway:` | :aerial_tramway: | `:aerial_tramway:` | [top](#table-of-contents) |
++| [top](#travel--places) | :artificial_satellite: | `:artificial_satellite:` | :rocket: | `:rocket:` | [top](#table-of-contents) |
++| [top](#travel--places) | :flying_saucer: | `:flying_saucer:` | | | [top](#table-of-contents) |
+
+### Hotel
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :hourglass: | `:hourglass:` | :hourglass_flowing_sand: | `:hourglass_flowing_sand:` | [top](#introduction) |
- | [top](#travel--places) | :watch: | `:watch:` | :alarm_clock: | `:alarm_clock:` | [top](#introduction) |
- | [top](#travel--places) | :stopwatch: | `:stopwatch:` | :timer_clock: | `:timer_clock:` | [top](#introduction) |
- | [top](#travel--places) | :mantelpiece_clock: | `:mantelpiece_clock:` | :clock12: | `:clock12:` | [top](#introduction) |
- | [top](#travel--places) | :clock1230: | `:clock1230:` | :clock1: | `:clock1:` | [top](#introduction) |
- | [top](#travel--places) | :clock130: | `:clock130:` | :clock2: | `:clock2:` | [top](#introduction) |
- | [top](#travel--places) | :clock230: | `:clock230:` | :clock3: | `:clock3:` | [top](#introduction) |
- | [top](#travel--places) | :clock330: | `:clock330:` | :clock4: | `:clock4:` | [top](#introduction) |
- | [top](#travel--places) | :clock430: | `:clock430:` | :clock5: | `:clock5:` | [top](#introduction) |
- | [top](#travel--places) | :clock530: | `:clock530:` | :clock6: | `:clock6:` | [top](#introduction) |
- | [top](#travel--places) | :clock630: | `:clock630:` | :clock7: | `:clock7:` | [top](#introduction) |
- | [top](#travel--places) | :clock730: | `:clock730:` | :clock8: | `:clock8:` | [top](#introduction) |
- | [top](#travel--places) | :clock830: | `:clock830:` | :clock9: | `:clock9:` | [top](#introduction) |
- | [top](#travel--places) | :clock930: | `:clock930:` | :clock10: | `:clock10:` | [top](#introduction) |
- | [top](#travel--places) | :clock1030: | `:clock1030:` | :clock11: | `:clock11:` | [top](#introduction) |
- | [top](#travel--places) | :clock1130: | `:clock1130:` | | | [top](#introduction) |
++| [top](#travel--places) | :bellhop_bell: | `:bellhop_bell:` | :luggage: | `:luggage:` | [top](#table-of-contents) |
+
+### Time
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#travel--places) | :new_moon: | `:new_moon:` | :waxing_crescent_moon: | `:waxing_crescent_moon:` | [top](#introduction) |
- | [top](#travel--places) | :first_quarter_moon: | `:first_quarter_moon:` | :moon: | `:moon:` `:waxing_gibbous_moon:` | [top](#introduction) |
- | [top](#travel--places) | :full_moon: | `:full_moon:` | :waning_gibbous_moon: | `:waning_gibbous_moon:` | [top](#introduction) |
- | [top](#travel--places) | :last_quarter_moon: | `:last_quarter_moon:` | :waning_crescent_moon: | `:waning_crescent_moon:` | [top](#introduction) |
- | [top](#travel--places) | :crescent_moon: | `:crescent_moon:` | :new_moon_with_face: | `:new_moon_with_face:` | [top](#introduction) |
- | [top](#travel--places) | :first_quarter_moon_with_face: | `:first_quarter_moon_with_face:` | :last_quarter_moon_with_face: | `:last_quarter_moon_with_face:` | [top](#introduction) |
- | [top](#travel--places) | :thermometer: | `:thermometer:` | :sunny: | `:sunny:` | [top](#introduction) |
- | [top](#travel--places) | :full_moon_with_face: | `:full_moon_with_face:` | :sun_with_face: | `:sun_with_face:` | [top](#introduction) |
- | [top](#travel--places) | :ringed_planet: | `:ringed_planet:` | :star: | `:star:` | [top](#introduction) |
- | [top](#travel--places) | :star2: | `:star2:` | :stars: | `:stars:` | [top](#introduction) |
- | [top](#travel--places) | :milky_way: | `:milky_way:` | :cloud: | `:cloud:` | [top](#introduction) |
- | [top](#travel--places) | :partly_sunny: | `:partly_sunny:` | :cloud_with_lightning_and_rain: | `:cloud_with_lightning_and_rain:` | [top](#introduction) |
- | [top](#travel--places) | :sun_behind_small_cloud: | `:sun_behind_small_cloud:` | :sun_behind_large_cloud: | `:sun_behind_large_cloud:` | [top](#introduction) |
- | [top](#travel--places) | :sun_behind_rain_cloud: | `:sun_behind_rain_cloud:` | :cloud_with_rain: | `:cloud_with_rain:` | [top](#introduction) |
- | [top](#travel--places) | :cloud_with_snow: | `:cloud_with_snow:` | :cloud_with_lightning: | `:cloud_with_lightning:` | [top](#introduction) |
- | [top](#travel--places) | :tornado: | `:tornado:` | :fog: | `:fog:` | [top](#introduction) |
- | [top](#travel--places) | :wind_face: | `:wind_face:` | :cyclone: | `:cyclone:` | [top](#introduction) |
- | [top](#travel--places) | :rainbow: | `:rainbow:` | :closed_umbrella: | `:closed_umbrella:` | [top](#introduction) |
- | [top](#travel--places) | :open_umbrella: | `:open_umbrella:` | :umbrella: | `:umbrella:` | [top](#introduction) |
- | [top](#travel--places) | :parasol_on_ground: | `:parasol_on_ground:` | :zap: | `:zap:` | [top](#introduction) |
- | [top](#travel--places) | :snowflake: | `:snowflake:` | :snowman_with_snow: | `:snowman_with_snow:` | [top](#introduction) |
- | [top](#travel--places) | :snowman: | `:snowman:` | :comet: | `:comet:` | [top](#introduction) |
- | [top](#travel--places) | :fire: | `:fire:` | :droplet: | `:droplet:` | [top](#introduction) |
- | [top](#travel--places) | :ocean: | `:ocean:` | | | [top](#introduction) |
++| [top](#travel--places) | :hourglass: | `:hourglass:` | :hourglass_flowing_sand: | `:hourglass_flowing_sand:` | [top](#table-of-contents) |
++| [top](#travel--places) | :watch: | `:watch:` | :alarm_clock: | `:alarm_clock:` | [top](#table-of-contents) |
++| [top](#travel--places) | :stopwatch: | `:stopwatch:` | :timer_clock: | `:timer_clock:` | [top](#table-of-contents) |
++| [top](#travel--places) | :mantelpiece_clock: | `:mantelpiece_clock:` | :clock12: | `:clock12:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock1230: | `:clock1230:` | :clock1: | `:clock1:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock130: | `:clock130:` | :clock2: | `:clock2:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock230: | `:clock230:` | :clock3: | `:clock3:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock330: | `:clock330:` | :clock4: | `:clock4:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock430: | `:clock430:` | :clock5: | `:clock5:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock530: | `:clock530:` | :clock6: | `:clock6:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock630: | `:clock630:` | :clock7: | `:clock7:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock730: | `:clock730:` | :clock8: | `:clock8:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock830: | `:clock830:` | :clock9: | `:clock9:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock930: | `:clock930:` | :clock10: | `:clock10:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock1030: | `:clock1030:` | :clock11: | `:clock11:` | [top](#table-of-contents) |
++| [top](#travel--places) | :clock1130: | `:clock1130:` | | | [top](#table-of-contents) |
+
+### Sky & Weather
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#activities) | :jack_o_lantern: | `:jack_o_lantern:` | :christmas_tree: | `:christmas_tree:` | [top](#introduction) |
- | [top](#activities) | :fireworks: | `:fireworks:` | :sparkler: | `:sparkler:` | [top](#introduction) |
- | [top](#activities) | :firecracker: | `:firecracker:` | :sparkles: | `:sparkles:` | [top](#introduction) |
- | [top](#activities) | :balloon: | `:balloon:` | :tada: | `:tada:` | [top](#introduction) |
- | [top](#activities) | :confetti_ball: | `:confetti_ball:` | :tanabata_tree: | `:tanabata_tree:` | [top](#introduction) |
- | [top](#activities) | :bamboo: | `:bamboo:` | :dolls: | `:dolls:` | [top](#introduction) |
- | [top](#activities) | :flags: | `:flags:` | :wind_chime: | `:wind_chime:` | [top](#introduction) |
- | [top](#activities) | :rice_scene: | `:rice_scene:` | :red_envelope: | `:red_envelope:` | [top](#introduction) |
- | [top](#activities) | :ribbon: | `:ribbon:` | :gift: | `:gift:` | [top](#introduction) |
- | [top](#activities) | :reminder_ribbon: | `:reminder_ribbon:` | :tickets: | `:tickets:` | [top](#introduction) |
- | [top](#activities) | :ticket: | `:ticket:` | | | [top](#introduction) |
++| [top](#travel--places) | :new_moon: | `:new_moon:` | :waxing_crescent_moon: | `:waxing_crescent_moon:` | [top](#table-of-contents) |
++| [top](#travel--places) | :first_quarter_moon: | `:first_quarter_moon:` | :moon: | `:moon:` <br /> `:waxing_gibbous_moon:` | [top](#table-of-contents) |
++| [top](#travel--places) | :full_moon: | `:full_moon:` | :waning_gibbous_moon: | `:waning_gibbous_moon:` | [top](#table-of-contents) |
++| [top](#travel--places) | :last_quarter_moon: | `:last_quarter_moon:` | :waning_crescent_moon: | `:waning_crescent_moon:` | [top](#table-of-contents) |
++| [top](#travel--places) | :crescent_moon: | `:crescent_moon:` | :new_moon_with_face: | `:new_moon_with_face:` | [top](#table-of-contents) |
++| [top](#travel--places) | :first_quarter_moon_with_face: | `:first_quarter_moon_with_face:` | :last_quarter_moon_with_face: | `:last_quarter_moon_with_face:` | [top](#table-of-contents) |
++| [top](#travel--places) | :thermometer: | `:thermometer:` | :sunny: | `:sunny:` | [top](#table-of-contents) |
++| [top](#travel--places) | :full_moon_with_face: | `:full_moon_with_face:` | :sun_with_face: | `:sun_with_face:` | [top](#table-of-contents) |
++| [top](#travel--places) | :ringed_planet: | `:ringed_planet:` | :star: | `:star:` | [top](#table-of-contents) |
++| [top](#travel--places) | :star2: | `:star2:` | :stars: | `:stars:` | [top](#table-of-contents) |
++| [top](#travel--places) | :milky_way: | `:milky_way:` | :cloud: | `:cloud:` | [top](#table-of-contents) |
++| [top](#travel--places) | :partly_sunny: | `:partly_sunny:` | :cloud_with_lightning_and_rain: | `:cloud_with_lightning_and_rain:` | [top](#table-of-contents) |
++| [top](#travel--places) | :sun_behind_small_cloud: | `:sun_behind_small_cloud:` | :sun_behind_large_cloud: | `:sun_behind_large_cloud:` | [top](#table-of-contents) |
++| [top](#travel--places) | :sun_behind_rain_cloud: | `:sun_behind_rain_cloud:` | :cloud_with_rain: | `:cloud_with_rain:` | [top](#table-of-contents) |
++| [top](#travel--places) | :cloud_with_snow: | `:cloud_with_snow:` | :cloud_with_lightning: | `:cloud_with_lightning:` | [top](#table-of-contents) |
++| [top](#travel--places) | :tornado: | `:tornado:` | :fog: | `:fog:` | [top](#table-of-contents) |
++| [top](#travel--places) | :wind_face: | `:wind_face:` | :cyclone: | `:cyclone:` | [top](#table-of-contents) |
++| [top](#travel--places) | :rainbow: | `:rainbow:` | :closed_umbrella: | `:closed_umbrella:` | [top](#table-of-contents) |
++| [top](#travel--places) | :open_umbrella: | `:open_umbrella:` | :umbrella: | `:umbrella:` | [top](#table-of-contents) |
++| [top](#travel--places) | :parasol_on_ground: | `:parasol_on_ground:` | :zap: | `:zap:` | [top](#table-of-contents) |
++| [top](#travel--places) | :snowflake: | `:snowflake:` | :snowman_with_snow: | `:snowman_with_snow:` | [top](#table-of-contents) |
++| [top](#travel--places) | :snowman: | `:snowman:` | :comet: | `:comet:` | [top](#table-of-contents) |
++| [top](#travel--places) | :fire: | `:fire:` | :droplet: | `:droplet:` | [top](#table-of-contents) |
++| [top](#travel--places) | :ocean: | `:ocean:` | | | [top](#table-of-contents) |
+
+## Activities
+
+- [Event](#event)
+- [Award Medal](#award-medal)
+- [Sport](#sport)
+- [Game](#game)
+- [Arts & Crafts](#arts--crafts)
+
+### Event
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#activities) | :medal_military: | `:medal_military:` | :trophy: | `:trophy:` | [top](#introduction) |
- | [top](#activities) | :medal_sports: | `:medal_sports:` | :1st_place_medal: | `:1st_place_medal:` | [top](#introduction) |
- | [top](#activities) | :2nd_place_medal: | `:2nd_place_medal:` | :3rd_place_medal: | `:3rd_place_medal:` | [top](#introduction) |
++| [top](#activities) | :jack_o_lantern: | `:jack_o_lantern:` | :christmas_tree: | `:christmas_tree:` | [top](#table-of-contents) |
++| [top](#activities) | :fireworks: | `:fireworks:` | :sparkler: | `:sparkler:` | [top](#table-of-contents) |
++| [top](#activities) | :firecracker: | `:firecracker:` | :sparkles: | `:sparkles:` | [top](#table-of-contents) |
++| [top](#activities) | :balloon: | `:balloon:` | :tada: | `:tada:` | [top](#table-of-contents) |
++| [top](#activities) | :confetti_ball: | `:confetti_ball:` | :tanabata_tree: | `:tanabata_tree:` | [top](#table-of-contents) |
++| [top](#activities) | :bamboo: | `:bamboo:` | :dolls: | `:dolls:` | [top](#table-of-contents) |
++| [top](#activities) | :flags: | `:flags:` | :wind_chime: | `:wind_chime:` | [top](#table-of-contents) |
++| [top](#activities) | :rice_scene: | `:rice_scene:` | :red_envelope: | `:red_envelope:` | [top](#table-of-contents) |
++| [top](#activities) | :ribbon: | `:ribbon:` | :gift: | `:gift:` | [top](#table-of-contents) |
++| [top](#activities) | :reminder_ribbon: | `:reminder_ribbon:` | :tickets: | `:tickets:` | [top](#table-of-contents) |
++| [top](#activities) | :ticket: | `:ticket:` | | | [top](#table-of-contents) |
+
+### Award Medal
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#activities) | :soccer: | `:soccer:` | :baseball: | `:baseball:` | [top](#introduction) |
- | [top](#activities) | :softball: | `:softball:` | :basketball: | `:basketball:` | [top](#introduction) |
- | [top](#activities) | :volleyball: | `:volleyball:` | :football: | `:football:` | [top](#introduction) |
- | [top](#activities) | :rugby_football: | `:rugby_football:` | :tennis: | `:tennis:` | [top](#introduction) |
- | [top](#activities) | :flying_disc: | `:flying_disc:` | :bowling: | `:bowling:` | [top](#introduction) |
- | [top](#activities) | :cricket_game: | `:cricket_game:` | :field_hockey: | `:field_hockey:` | [top](#introduction) |
- | [top](#activities) | :ice_hockey: | `:ice_hockey:` | :lacrosse: | `:lacrosse:` | [top](#introduction) |
- | [top](#activities) | :ping_pong: | `:ping_pong:` | :badminton: | `:badminton:` | [top](#introduction) |
- | [top](#activities) | :boxing_glove: | `:boxing_glove:` | :martial_arts_uniform: | `:martial_arts_uniform:` | [top](#introduction) |
- | [top](#activities) | :goal_net: | `:goal_net:` | :golf: | `:golf:` | [top](#introduction) |
- | [top](#activities) | :ice_skate: | `:ice_skate:` | :fishing_pole_and_fish: | `:fishing_pole_and_fish:` | [top](#introduction) |
- | [top](#activities) | :diving_mask: | `:diving_mask:` | :running_shirt_with_sash: | `:running_shirt_with_sash:` | [top](#introduction) |
- | [top](#activities) | :ski: | `:ski:` | :sled: | `:sled:` | [top](#introduction) |
- | [top](#activities) | :curling_stone: | `:curling_stone:` | | | [top](#introduction) |
++| [top](#activities) | :medal_military: | `:medal_military:` | :trophy: | `:trophy:` | [top](#table-of-contents) |
++| [top](#activities) | :medal_sports: | `:medal_sports:` | :1st_place_medal: | `:1st_place_medal:` | [top](#table-of-contents) |
++| [top](#activities) | :2nd_place_medal: | `:2nd_place_medal:` | :3rd_place_medal: | `:3rd_place_medal:` | [top](#table-of-contents) |
+
+### Sport
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#activities) | :dart: | `:dart:` | :yo_yo: | `:yo_yo:` | [top](#introduction) |
- | [top](#activities) | :kite: | `:kite:` | :gun: | `:gun:` | [top](#introduction) |
- | [top](#activities) | :8ball: | `:8ball:` | :crystal_ball: | `:crystal_ball:` | [top](#introduction) |
- | [top](#activities) | :magic_wand: | `:magic_wand:` | :video_game: | `:video_game:` | [top](#introduction) |
- | [top](#activities) | :joystick: | `:joystick:` | :slot_machine: | `:slot_machine:` | [top](#introduction) |
- | [top](#activities) | :game_die: | `:game_die:` | :jigsaw: | `:jigsaw:` | [top](#introduction) |
- | [top](#activities) | :teddy_bear: | `:teddy_bear:` | :pinata: | `:pinata:` | [top](#introduction) |
- | [top](#activities) | :nesting_dolls: | `:nesting_dolls:` | :spades: | `:spades:` | [top](#introduction) |
- | [top](#activities) | :hearts: | `:hearts:` | :diamonds: | `:diamonds:` | [top](#introduction) |
- | [top](#activities) | :clubs: | `:clubs:` | :chess_pawn: | `:chess_pawn:` | [top](#introduction) |
- | [top](#activities) | :black_joker: | `:black_joker:` | :mahjong: | `:mahjong:` | [top](#introduction) |
- | [top](#activities) | :flower_playing_cards: | `:flower_playing_cards:` | | | [top](#introduction) |
++| [top](#activities) | :soccer: | `:soccer:` | :baseball: | `:baseball:` | [top](#table-of-contents) |
++| [top](#activities) | :softball: | `:softball:` | :basketball: | `:basketball:` | [top](#table-of-contents) |
++| [top](#activities) | :volleyball: | `:volleyball:` | :football: | `:football:` | [top](#table-of-contents) |
++| [top](#activities) | :rugby_football: | `:rugby_football:` | :tennis: | `:tennis:` | [top](#table-of-contents) |
++| [top](#activities) | :flying_disc: | `:flying_disc:` | :bowling: | `:bowling:` | [top](#table-of-contents) |
++| [top](#activities) | :cricket_game: | `:cricket_game:` | :field_hockey: | `:field_hockey:` | [top](#table-of-contents) |
++| [top](#activities) | :ice_hockey: | `:ice_hockey:` | :lacrosse: | `:lacrosse:` | [top](#table-of-contents) |
++| [top](#activities) | :ping_pong: | `:ping_pong:` | :badminton: | `:badminton:` | [top](#table-of-contents) |
++| [top](#activities) | :boxing_glove: | `:boxing_glove:` | :martial_arts_uniform: | `:martial_arts_uniform:` | [top](#table-of-contents) |
++| [top](#activities) | :goal_net: | `:goal_net:` | :golf: | `:golf:` | [top](#table-of-contents) |
++| [top](#activities) | :ice_skate: | `:ice_skate:` | :fishing_pole_and_fish: | `:fishing_pole_and_fish:` | [top](#table-of-contents) |
++| [top](#activities) | :diving_mask: | `:diving_mask:` | :running_shirt_with_sash: | `:running_shirt_with_sash:` | [top](#table-of-contents) |
++| [top](#activities) | :ski: | `:ski:` | :sled: | `:sled:` | [top](#table-of-contents) |
++| [top](#activities) | :curling_stone: | `:curling_stone:` | | | [top](#table-of-contents) |
+
+### Game
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#activities) | :performing_arts: | `:performing_arts:` | :framed_picture: | `:framed_picture:` | [top](#introduction) |
- | [top](#activities) | :art: | `:art:` | :thread: | `:thread:` | [top](#introduction) |
- | [top](#activities) | :sewing_needle: | `:sewing_needle:` | :yarn: | `:yarn:` | [top](#introduction) |
- | [top](#activities) | :knot: | `:knot:` | | | [top](#introduction) |
++| [top](#activities) | :dart: | `:dart:` | :yo_yo: | `:yo_yo:` | [top](#table-of-contents) |
++| [top](#activities) | :kite: | `:kite:` | :gun: | `:gun:` | [top](#table-of-contents) |
++| [top](#activities) | :8ball: | `:8ball:` | :crystal_ball: | `:crystal_ball:` | [top](#table-of-contents) |
++| [top](#activities) | :magic_wand: | `:magic_wand:` | :video_game: | `:video_game:` | [top](#table-of-contents) |
++| [top](#activities) | :joystick: | `:joystick:` | :slot_machine: | `:slot_machine:` | [top](#table-of-contents) |
++| [top](#activities) | :game_die: | `:game_die:` | :jigsaw: | `:jigsaw:` | [top](#table-of-contents) |
++| [top](#activities) | :teddy_bear: | `:teddy_bear:` | :pinata: | `:pinata:` | [top](#table-of-contents) |
++| [top](#activities) | :mirror_ball: | `:mirror_ball:` | :nesting_dolls: | `:nesting_dolls:` | [top](#table-of-contents) |
++| [top](#activities) | :spades: | `:spades:` | :hearts: | `:hearts:` | [top](#table-of-contents) |
++| [top](#activities) | :diamonds: | `:diamonds:` | :clubs: | `:clubs:` | [top](#table-of-contents) |
++| [top](#activities) | :chess_pawn: | `:chess_pawn:` | :black_joker: | `:black_joker:` | [top](#table-of-contents) |
++| [top](#activities) | :mahjong: | `:mahjong:` | :flower_playing_cards: | `:flower_playing_cards:` | [top](#table-of-contents) |
+
+### Arts & Crafts
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :eyeglasses: | `:eyeglasses:` | :dark_sunglasses: | `:dark_sunglasses:` | [top](#introduction) |
- | [top](#objects) | :goggles: | `:goggles:` | :lab_coat: | `:lab_coat:` | [top](#introduction) |
- | [top](#objects) | :safety_vest: | `:safety_vest:` | :necktie: | `:necktie:` | [top](#introduction) |
- | [top](#objects) | :shirt: | `:shirt:` `:tshirt:` | :jeans: | `:jeans:` | [top](#introduction) |
- | [top](#objects) | :scarf: | `:scarf:` | :gloves: | `:gloves:` | [top](#introduction) |
- | [top](#objects) | :coat: | `:coat:` | :socks: | `:socks:` | [top](#introduction) |
- | [top](#objects) | :dress: | `:dress:` | :kimono: | `:kimono:` | [top](#introduction) |
- | [top](#objects) | :sari: | `:sari:` | :one_piece_swimsuit: | `:one_piece_swimsuit:` | [top](#introduction) |
- | [top](#objects) | :swim_brief: | `:swim_brief:` | :shorts: | `:shorts:` | [top](#introduction) |
- | [top](#objects) | :bikini: | `:bikini:` | :womans_clothes: | `:womans_clothes:` | [top](#introduction) |
- | [top](#objects) | :purse: | `:purse:` | :handbag: | `:handbag:` | [top](#introduction) |
- | [top](#objects) | :pouch: | `:pouch:` | :shopping: | `:shopping:` | [top](#introduction) |
- | [top](#objects) | :school_satchel: | `:school_satchel:` | :thong_sandal: | `:thong_sandal:` | [top](#introduction) |
- | [top](#objects) | :mans_shoe: | `:mans_shoe:` `:shoe:` | :athletic_shoe: | `:athletic_shoe:` | [top](#introduction) |
- | [top](#objects) | :hiking_boot: | `:hiking_boot:` | :flat_shoe: | `:flat_shoe:` | [top](#introduction) |
- | [top](#objects) | :high_heel: | `:high_heel:` | :sandal: | `:sandal:` | [top](#introduction) |
- | [top](#objects) | :ballet_shoes: | `:ballet_shoes:` | :boot: | `:boot:` | [top](#introduction) |
- | [top](#objects) | :crown: | `:crown:` | :womans_hat: | `:womans_hat:` | [top](#introduction) |
- | [top](#objects) | :tophat: | `:tophat:` | :mortar_board: | `:mortar_board:` | [top](#introduction) |
- | [top](#objects) | :billed_cap: | `:billed_cap:` | :military_helmet: | `:military_helmet:` | [top](#introduction) |
- | [top](#objects) | :rescue_worker_helmet: | `:rescue_worker_helmet:` | :prayer_beads: | `:prayer_beads:` | [top](#introduction) |
- | [top](#objects) | :lipstick: | `:lipstick:` | :ring: | `:ring:` | [top](#introduction) |
- | [top](#objects) | :gem: | `:gem:` | | | [top](#introduction) |
++| [top](#activities) | :performing_arts: | `:performing_arts:` | :framed_picture: | `:framed_picture:` | [top](#table-of-contents) |
++| [top](#activities) | :art: | `:art:` | :thread: | `:thread:` | [top](#table-of-contents) |
++| [top](#activities) | :sewing_needle: | `:sewing_needle:` | :yarn: | `:yarn:` | [top](#table-of-contents) |
++| [top](#activities) | :knot: | `:knot:` | | | [top](#table-of-contents) |
+
+## Objects
+
+- [Clothing](#clothing)
+- [Sound](#sound)
+- [Music](#music)
+- [Musical Instrument](#musical-instrument)
+- [Phone](#phone)
+- [Computer](#computer)
+- [Light & Video](#light--video)
+- [Book Paper](#book-paper)
+- [Money](#money)
+- [Mail](#mail)
+- [Writing](#writing)
+- [Office](#office)
+- [Lock](#lock)
+- [Tool](#tool)
+- [Science](#science)
+- [Medical](#medical)
+- [Household](#household)
+- [Other Object](#other-object)
+
+### Clothing
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :mute: | `:mute:` | :speaker: | `:speaker:` | [top](#introduction) |
- | [top](#objects) | :sound: | `:sound:` | :loud_sound: | `:loud_sound:` | [top](#introduction) |
- | [top](#objects) | :loudspeaker: | `:loudspeaker:` | :mega: | `:mega:` | [top](#introduction) |
- | [top](#objects) | :postal_horn: | `:postal_horn:` | :bell: | `:bell:` | [top](#introduction) |
- | [top](#objects) | :no_bell: | `:no_bell:` | | | [top](#introduction) |
++| [top](#objects) | :eyeglasses: | `:eyeglasses:` | :dark_sunglasses: | `:dark_sunglasses:` | [top](#table-of-contents) |
++| [top](#objects) | :goggles: | `:goggles:` | :lab_coat: | `:lab_coat:` | [top](#table-of-contents) |
++| [top](#objects) | :safety_vest: | `:safety_vest:` | :necktie: | `:necktie:` | [top](#table-of-contents) |
++| [top](#objects) | :shirt: | `:shirt:` <br /> `:tshirt:` | :jeans: | `:jeans:` | [top](#table-of-contents) |
++| [top](#objects) | :scarf: | `:scarf:` | :gloves: | `:gloves:` | [top](#table-of-contents) |
++| [top](#objects) | :coat: | `:coat:` | :socks: | `:socks:` | [top](#table-of-contents) |
++| [top](#objects) | :dress: | `:dress:` | :kimono: | `:kimono:` | [top](#table-of-contents) |
++| [top](#objects) | :sari: | `:sari:` | :one_piece_swimsuit: | `:one_piece_swimsuit:` | [top](#table-of-contents) |
++| [top](#objects) | :swim_brief: | `:swim_brief:` | :shorts: | `:shorts:` | [top](#table-of-contents) |
++| [top](#objects) | :bikini: | `:bikini:` | :womans_clothes: | `:womans_clothes:` | [top](#table-of-contents) |
++| [top](#objects) | :folding_hand_fan: | `:folding_hand_fan:` | :purse: | `:purse:` | [top](#table-of-contents) |
++| [top](#objects) | :handbag: | `:handbag:` | :pouch: | `:pouch:` | [top](#table-of-contents) |
++| [top](#objects) | :shopping: | `:shopping:` | :school_satchel: | `:school_satchel:` | [top](#table-of-contents) |
++| [top](#objects) | :thong_sandal: | `:thong_sandal:` | :mans_shoe: | `:mans_shoe:` <br /> `:shoe:` | [top](#table-of-contents) |
++| [top](#objects) | :athletic_shoe: | `:athletic_shoe:` | :hiking_boot: | `:hiking_boot:` | [top](#table-of-contents) |
++| [top](#objects) | :flat_shoe: | `:flat_shoe:` | :high_heel: | `:high_heel:` | [top](#table-of-contents) |
++| [top](#objects) | :sandal: | `:sandal:` | :ballet_shoes: | `:ballet_shoes:` | [top](#table-of-contents) |
++| [top](#objects) | :boot: | `:boot:` | :hair_pick: | `:hair_pick:` | [top](#table-of-contents) |
++| [top](#objects) | :crown: | `:crown:` | :womans_hat: | `:womans_hat:` | [top](#table-of-contents) |
++| [top](#objects) | :tophat: | `:tophat:` | :mortar_board: | `:mortar_board:` | [top](#table-of-contents) |
++| [top](#objects) | :billed_cap: | `:billed_cap:` | :military_helmet: | `:military_helmet:` | [top](#table-of-contents) |
++| [top](#objects) | :rescue_worker_helmet: | `:rescue_worker_helmet:` | :prayer_beads: | `:prayer_beads:` | [top](#table-of-contents) |
++| [top](#objects) | :lipstick: | `:lipstick:` | :ring: | `:ring:` | [top](#table-of-contents) |
++| [top](#objects) | :gem: | `:gem:` | | | [top](#table-of-contents) |
+
+### Sound
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :musical_score: | `:musical_score:` | :musical_note: | `:musical_note:` | [top](#introduction) |
- | [top](#objects) | :notes: | `:notes:` | :studio_microphone: | `:studio_microphone:` | [top](#introduction) |
- | [top](#objects) | :level_slider: | `:level_slider:` | :control_knobs: | `:control_knobs:` | [top](#introduction) |
- | [top](#objects) | :microphone: | `:microphone:` | :headphones: | `:headphones:` | [top](#introduction) |
- | [top](#objects) | :radio: | `:radio:` | | | [top](#introduction) |
++| [top](#objects) | :mute: | `:mute:` | :speaker: | `:speaker:` | [top](#table-of-contents) |
++| [top](#objects) | :sound: | `:sound:` | :loud_sound: | `:loud_sound:` | [top](#table-of-contents) |
++| [top](#objects) | :loudspeaker: | `:loudspeaker:` | :mega: | `:mega:` | [top](#table-of-contents) |
++| [top](#objects) | :postal_horn: | `:postal_horn:` | :bell: | `:bell:` | [top](#table-of-contents) |
++| [top](#objects) | :no_bell: | `:no_bell:` | | | [top](#table-of-contents) |
+
+### Music
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :saxophone: | `:saxophone:` | :accordion: | `:accordion:` | [top](#introduction) |
- | [top](#objects) | :guitar: | `:guitar:` | :musical_keyboard: | `:musical_keyboard:` | [top](#introduction) |
- | [top](#objects) | :trumpet: | `:trumpet:` | :violin: | `:violin:` | [top](#introduction) |
- | [top](#objects) | :banjo: | `:banjo:` | :drum: | `:drum:` | [top](#introduction) |
- | [top](#objects) | :long_drum: | `:long_drum:` | | | [top](#introduction) |
++| [top](#objects) | :musical_score: | `:musical_score:` | :musical_note: | `:musical_note:` | [top](#table-of-contents) |
++| [top](#objects) | :notes: | `:notes:` | :studio_microphone: | `:studio_microphone:` | [top](#table-of-contents) |
++| [top](#objects) | :level_slider: | `:level_slider:` | :control_knobs: | `:control_knobs:` | [top](#table-of-contents) |
++| [top](#objects) | :microphone: | `:microphone:` | :headphones: | `:headphones:` | [top](#table-of-contents) |
++| [top](#objects) | :radio: | `:radio:` | | | [top](#table-of-contents) |
+
+### Musical Instrument
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :iphone: | `:iphone:` | :calling: | `:calling:` | [top](#introduction) |
- | [top](#objects) | :phone: | `:phone:` `:telephone:` | :telephone_receiver: | `:telephone_receiver:` | [top](#introduction) |
- | [top](#objects) | :pager: | `:pager:` | :fax: | `:fax:` | [top](#introduction) |
++| [top](#objects) | :saxophone: | `:saxophone:` | :accordion: | `:accordion:` | [top](#table-of-contents) |
++| [top](#objects) | :guitar: | `:guitar:` | :musical_keyboard: | `:musical_keyboard:` | [top](#table-of-contents) |
++| [top](#objects) | :trumpet: | `:trumpet:` | :violin: | `:violin:` | [top](#table-of-contents) |
++| [top](#objects) | :banjo: | `:banjo:` | :drum: | `:drum:` | [top](#table-of-contents) |
++| [top](#objects) | :long_drum: | `:long_drum:` | :maracas: | `:maracas:` | [top](#table-of-contents) |
++| [top](#objects) | :flute: | `:flute:` | | | [top](#table-of-contents) |
+
+### Phone
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :battery: | `:battery:` | :electric_plug: | `:electric_plug:` | [top](#introduction) |
- | [top](#objects) | :computer: | `:computer:` | :desktop_computer: | `:desktop_computer:` | [top](#introduction) |
- | [top](#objects) | :printer: | `:printer:` | :keyboard: | `:keyboard:` | [top](#introduction) |
- | [top](#objects) | :computer_mouse: | `:computer_mouse:` | :trackball: | `:trackball:` | [top](#introduction) |
- | [top](#objects) | :minidisc: | `:minidisc:` | :floppy_disk: | `:floppy_disk:` | [top](#introduction) |
- | [top](#objects) | :cd: | `:cd:` | :dvd: | `:dvd:` | [top](#introduction) |
- | [top](#objects) | :abacus: | `:abacus:` | | | [top](#introduction) |
++| [top](#objects) | :iphone: | `:iphone:` | :calling: | `:calling:` | [top](#table-of-contents) |
++| [top](#objects) | :phone: | `:phone:` <br /> `:telephone:` | :telephone_receiver: | `:telephone_receiver:` | [top](#table-of-contents) |
++| [top](#objects) | :pager: | `:pager:` | :fax: | `:fax:` | [top](#table-of-contents) |
+
+### Computer
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :movie_camera: | `:movie_camera:` | :film_strip: | `:film_strip:` | [top](#introduction) |
- | [top](#objects) | :film_projector: | `:film_projector:` | :clapper: | `:clapper:` | [top](#introduction) |
- | [top](#objects) | :tv: | `:tv:` | :camera: | `:camera:` | [top](#introduction) |
- | [top](#objects) | :camera_flash: | `:camera_flash:` | :video_camera: | `:video_camera:` | [top](#introduction) |
- | [top](#objects) | :vhs: | `:vhs:` | :mag: | `:mag:` | [top](#introduction) |
- | [top](#objects) | :mag_right: | `:mag_right:` | :candle: | `:candle:` | [top](#introduction) |
- | [top](#objects) | :bulb: | `:bulb:` | :flashlight: | `:flashlight:` | [top](#introduction) |
- | [top](#objects) | :izakaya_lantern: | `:izakaya_lantern:` `:lantern:` | :diya_lamp: | `:diya_lamp:` | [top](#introduction) |
++| [top](#objects) | :battery: | `:battery:` | :low_battery: | `:low_battery:` | [top](#table-of-contents) |
++| [top](#objects) | :electric_plug: | `:electric_plug:` | :computer: | `:computer:` | [top](#table-of-contents) |
++| [top](#objects) | :desktop_computer: | `:desktop_computer:` | :printer: | `:printer:` | [top](#table-of-contents) |
++| [top](#objects) | :keyboard: | `:keyboard:` | :computer_mouse: | `:computer_mouse:` | [top](#table-of-contents) |
++| [top](#objects) | :trackball: | `:trackball:` | :minidisc: | `:minidisc:` | [top](#table-of-contents) |
++| [top](#objects) | :floppy_disk: | `:floppy_disk:` | :cd: | `:cd:` | [top](#table-of-contents) |
++| [top](#objects) | :dvd: | `:dvd:` | :abacus: | `:abacus:` | [top](#table-of-contents) |
+
+### Light & Video
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :notebook_with_decorative_cover: | `:notebook_with_decorative_cover:` | :closed_book: | `:closed_book:` | [top](#introduction) |
- | [top](#objects) | :book: | `:book:` `:open_book:` | :green_book: | `:green_book:` | [top](#introduction) |
- | [top](#objects) | :blue_book: | `:blue_book:` | :orange_book: | `:orange_book:` | [top](#introduction) |
- | [top](#objects) | :books: | `:books:` | :notebook: | `:notebook:` | [top](#introduction) |
- | [top](#objects) | :ledger: | `:ledger:` | :page_with_curl: | `:page_with_curl:` | [top](#introduction) |
- | [top](#objects) | :scroll: | `:scroll:` | :page_facing_up: | `:page_facing_up:` | [top](#introduction) |
- | [top](#objects) | :newspaper: | `:newspaper:` | :newspaper_roll: | `:newspaper_roll:` | [top](#introduction) |
- | [top](#objects) | :bookmark_tabs: | `:bookmark_tabs:` | :bookmark: | `:bookmark:` | [top](#introduction) |
- | [top](#objects) | :label: | `:label:` | | | [top](#introduction) |
++| [top](#objects) | :movie_camera: | `:movie_camera:` | :film_strip: | `:film_strip:` | [top](#table-of-contents) |
++| [top](#objects) | :film_projector: | `:film_projector:` | :clapper: | `:clapper:` | [top](#table-of-contents) |
++| [top](#objects) | :tv: | `:tv:` | :camera: | `:camera:` | [top](#table-of-contents) |
++| [top](#objects) | :camera_flash: | `:camera_flash:` | :video_camera: | `:video_camera:` | [top](#table-of-contents) |
++| [top](#objects) | :vhs: | `:vhs:` | :mag: | `:mag:` | [top](#table-of-contents) |
++| [top](#objects) | :mag_right: | `:mag_right:` | :candle: | `:candle:` | [top](#table-of-contents) |
++| [top](#objects) | :bulb: | `:bulb:` | :flashlight: | `:flashlight:` | [top](#table-of-contents) |
++| [top](#objects) | :izakaya_lantern: | `:izakaya_lantern:` <br /> `:lantern:` | :diya_lamp: | `:diya_lamp:` | [top](#table-of-contents) |
+
+### Book Paper
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :moneybag: | `:moneybag:` | :coin: | `:coin:` | [top](#introduction) |
- | [top](#objects) | :yen: | `:yen:` | :dollar: | `:dollar:` | [top](#introduction) |
- | [top](#objects) | :euro: | `:euro:` | :pound: | `:pound:` | [top](#introduction) |
- | [top](#objects) | :money_with_wings: | `:money_with_wings:` | :credit_card: | `:credit_card:` | [top](#introduction) |
- | [top](#objects) | :receipt: | `:receipt:` | :chart: | `:chart:` | [top](#introduction) |
++| [top](#objects) | :notebook_with_decorative_cover: | `:notebook_with_decorative_cover:` | :closed_book: | `:closed_book:` | [top](#table-of-contents) |
++| [top](#objects) | :book: | `:book:` <br /> `:open_book:` | :green_book: | `:green_book:` | [top](#table-of-contents) |
++| [top](#objects) | :blue_book: | `:blue_book:` | :orange_book: | `:orange_book:` | [top](#table-of-contents) |
++| [top](#objects) | :books: | `:books:` | :notebook: | `:notebook:` | [top](#table-of-contents) |
++| [top](#objects) | :ledger: | `:ledger:` | :page_with_curl: | `:page_with_curl:` | [top](#table-of-contents) |
++| [top](#objects) | :scroll: | `:scroll:` | :page_facing_up: | `:page_facing_up:` | [top](#table-of-contents) |
++| [top](#objects) | :newspaper: | `:newspaper:` | :newspaper_roll: | `:newspaper_roll:` | [top](#table-of-contents) |
++| [top](#objects) | :bookmark_tabs: | `:bookmark_tabs:` | :bookmark: | `:bookmark:` | [top](#table-of-contents) |
++| [top](#objects) | :label: | `:label:` | | | [top](#table-of-contents) |
+
+### Money
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :envelope: | `:envelope:` | :e-mail: | `:e-mail:` `:email:` | [top](#introduction) |
- | [top](#objects) | :incoming_envelope: | `:incoming_envelope:` | :envelope_with_arrow: | `:envelope_with_arrow:` | [top](#introduction) |
- | [top](#objects) | :outbox_tray: | `:outbox_tray:` | :inbox_tray: | `:inbox_tray:` | [top](#introduction) |
- | [top](#objects) | :package: | `:package:` | :mailbox: | `:mailbox:` | [top](#introduction) |
- | [top](#objects) | :mailbox_closed: | `:mailbox_closed:` | :mailbox_with_mail: | `:mailbox_with_mail:` | [top](#introduction) |
- | [top](#objects) | :mailbox_with_no_mail: | `:mailbox_with_no_mail:` | :postbox: | `:postbox:` | [top](#introduction) |
- | [top](#objects) | :ballot_box: | `:ballot_box:` | | | [top](#introduction) |
++| [top](#objects) | :moneybag: | `:moneybag:` | :coin: | `:coin:` | [top](#table-of-contents) |
++| [top](#objects) | :yen: | `:yen:` | :dollar: | `:dollar:` | [top](#table-of-contents) |
++| [top](#objects) | :euro: | `:euro:` | :pound: | `:pound:` | [top](#table-of-contents) |
++| [top](#objects) | :money_with_wings: | `:money_with_wings:` | :credit_card: | `:credit_card:` | [top](#table-of-contents) |
++| [top](#objects) | :receipt: | `:receipt:` | :chart: | `:chart:` | [top](#table-of-contents) |
+
+### Mail
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :pencil2: | `:pencil2:` | :black_nib: | `:black_nib:` | [top](#introduction) |
- | [top](#objects) | :fountain_pen: | `:fountain_pen:` | :pen: | `:pen:` | [top](#introduction) |
- | [top](#objects) | :paintbrush: | `:paintbrush:` | :crayon: | `:crayon:` | [top](#introduction) |
- | [top](#objects) | :memo: | `:memo:` `:pencil:` | | | [top](#introduction) |
++| [top](#objects) | :envelope: | `:envelope:` | :e-mail: | `:e-mail:` <br /> `:email:` | [top](#table-of-contents) |
++| [top](#objects) | :incoming_envelope: | `:incoming_envelope:` | :envelope_with_arrow: | `:envelope_with_arrow:` | [top](#table-of-contents) |
++| [top](#objects) | :outbox_tray: | `:outbox_tray:` | :inbox_tray: | `:inbox_tray:` | [top](#table-of-contents) |
++| [top](#objects) | :package: | `:package:` | :mailbox: | `:mailbox:` | [top](#table-of-contents) |
++| [top](#objects) | :mailbox_closed: | `:mailbox_closed:` | :mailbox_with_mail: | `:mailbox_with_mail:` | [top](#table-of-contents) |
++| [top](#objects) | :mailbox_with_no_mail: | `:mailbox_with_no_mail:` | :postbox: | `:postbox:` | [top](#table-of-contents) |
++| [top](#objects) | :ballot_box: | `:ballot_box:` | | | [top](#table-of-contents) |
+
+### Writing
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :briefcase: | `:briefcase:` | :file_folder: | `:file_folder:` | [top](#introduction) |
- | [top](#objects) | :open_file_folder: | `:open_file_folder:` | :card_index_dividers: | `:card_index_dividers:` | [top](#introduction) |
- | [top](#objects) | :date: | `:date:` | :calendar: | `:calendar:` | [top](#introduction) |
- | [top](#objects) | :spiral_notepad: | `:spiral_notepad:` | :spiral_calendar: | `:spiral_calendar:` | [top](#introduction) |
- | [top](#objects) | :card_index: | `:card_index:` | :chart_with_upwards_trend: | `:chart_with_upwards_trend:` | [top](#introduction) |
- | [top](#objects) | :chart_with_downwards_trend: | `:chart_with_downwards_trend:` | :bar_chart: | `:bar_chart:` | [top](#introduction) |
- | [top](#objects) | :clipboard: | `:clipboard:` | :pushpin: | `:pushpin:` | [top](#introduction) |
- | [top](#objects) | :round_pushpin: | `:round_pushpin:` | :paperclip: | `:paperclip:` | [top](#introduction) |
- | [top](#objects) | :paperclips: | `:paperclips:` | :straight_ruler: | `:straight_ruler:` | [top](#introduction) |
- | [top](#objects) | :triangular_ruler: | `:triangular_ruler:` | :scissors: | `:scissors:` | [top](#introduction) |
- | [top](#objects) | :card_file_box: | `:card_file_box:` | :file_cabinet: | `:file_cabinet:` | [top](#introduction) |
- | [top](#objects) | :wastebasket: | `:wastebasket:` | | | [top](#introduction) |
++| [top](#objects) | :pencil2: | `:pencil2:` | :black_nib: | `:black_nib:` | [top](#table-of-contents) |
++| [top](#objects) | :fountain_pen: | `:fountain_pen:` | :pen: | `:pen:` | [top](#table-of-contents) |
++| [top](#objects) | :paintbrush: | `:paintbrush:` | :crayon: | `:crayon:` | [top](#table-of-contents) |
++| [top](#objects) | :memo: | `:memo:` <br /> `:pencil:` | | | [top](#table-of-contents) |
+
+### Office
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :lock: | `:lock:` | :unlock: | `:unlock:` | [top](#introduction) |
- | [top](#objects) | :lock_with_ink_pen: | `:lock_with_ink_pen:` | :closed_lock_with_key: | `:closed_lock_with_key:` | [top](#introduction) |
- | [top](#objects) | :key: | `:key:` | :old_key: | `:old_key:` | [top](#introduction) |
++| [top](#objects) | :briefcase: | `:briefcase:` | :file_folder: | `:file_folder:` | [top](#table-of-contents) |
++| [top](#objects) | :open_file_folder: | `:open_file_folder:` | :card_index_dividers: | `:card_index_dividers:` | [top](#table-of-contents) |
++| [top](#objects) | :date: | `:date:` | :calendar: | `:calendar:` | [top](#table-of-contents) |
++| [top](#objects) | :spiral_notepad: | `:spiral_notepad:` | :spiral_calendar: | `:spiral_calendar:` | [top](#table-of-contents) |
++| [top](#objects) | :card_index: | `:card_index:` | :chart_with_upwards_trend: | `:chart_with_upwards_trend:` | [top](#table-of-contents) |
++| [top](#objects) | :chart_with_downwards_trend: | `:chart_with_downwards_trend:` | :bar_chart: | `:bar_chart:` | [top](#table-of-contents) |
++| [top](#objects) | :clipboard: | `:clipboard:` | :pushpin: | `:pushpin:` | [top](#table-of-contents) |
++| [top](#objects) | :round_pushpin: | `:round_pushpin:` | :paperclip: | `:paperclip:` | [top](#table-of-contents) |
++| [top](#objects) | :paperclips: | `:paperclips:` | :straight_ruler: | `:straight_ruler:` | [top](#table-of-contents) |
++| [top](#objects) | :triangular_ruler: | `:triangular_ruler:` | :scissors: | `:scissors:` | [top](#table-of-contents) |
++| [top](#objects) | :card_file_box: | `:card_file_box:` | :file_cabinet: | `:file_cabinet:` | [top](#table-of-contents) |
++| [top](#objects) | :wastebasket: | `:wastebasket:` | | | [top](#table-of-contents) |
+
+### Lock
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :hammer: | `:hammer:` | :axe: | `:axe:` | [top](#introduction) |
- | [top](#objects) | :pick: | `:pick:` | :hammer_and_pick: | `:hammer_and_pick:` | [top](#introduction) |
- | [top](#objects) | :hammer_and_wrench: | `:hammer_and_wrench:` | :dagger: | `:dagger:` | [top](#introduction) |
- | [top](#objects) | :crossed_swords: | `:crossed_swords:` | :bomb: | `:bomb:` | [top](#introduction) |
- | [top](#objects) | :boomerang: | `:boomerang:` | :bow_and_arrow: | `:bow_and_arrow:` | [top](#introduction) |
- | [top](#objects) | :shield: | `:shield:` | :carpentry_saw: | `:carpentry_saw:` | [top](#introduction) |
- | [top](#objects) | :wrench: | `:wrench:` | :screwdriver: | `:screwdriver:` | [top](#introduction) |
- | [top](#objects) | :nut_and_bolt: | `:nut_and_bolt:` | :gear: | `:gear:` | [top](#introduction) |
- | [top](#objects) | :clamp: | `:clamp:` | :balance_scale: | `:balance_scale:` | [top](#introduction) |
- | [top](#objects) | :probing_cane: | `:probing_cane:` | :link: | `:link:` | [top](#introduction) |
- | [top](#objects) | :chains: | `:chains:` | :hook: | `:hook:` | [top](#introduction) |
- | [top](#objects) | :toolbox: | `:toolbox:` | :magnet: | `:magnet:` | [top](#introduction) |
- | [top](#objects) | :ladder: | `:ladder:` | | | [top](#introduction) |
++| [top](#objects) | :lock: | `:lock:` | :unlock: | `:unlock:` | [top](#table-of-contents) |
++| [top](#objects) | :lock_with_ink_pen: | `:lock_with_ink_pen:` | :closed_lock_with_key: | `:closed_lock_with_key:` | [top](#table-of-contents) |
++| [top](#objects) | :key: | `:key:` | :old_key: | `:old_key:` | [top](#table-of-contents) |
+
+### Tool
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :alembic: | `:alembic:` | :test_tube: | `:test_tube:` | [top](#introduction) |
- | [top](#objects) | :petri_dish: | `:petri_dish:` | :dna: | `:dna:` | [top](#introduction) |
- | [top](#objects) | :microscope: | `:microscope:` | :telescope: | `:telescope:` | [top](#introduction) |
- | [top](#objects) | :satellite: | `:satellite:` | | | [top](#introduction) |
++| [top](#objects) | :hammer: | `:hammer:` | :axe: | `:axe:` | [top](#table-of-contents) |
++| [top](#objects) | :pick: | `:pick:` | :hammer_and_pick: | `:hammer_and_pick:` | [top](#table-of-contents) |
++| [top](#objects) | :hammer_and_wrench: | `:hammer_and_wrench:` | :dagger: | `:dagger:` | [top](#table-of-contents) |
++| [top](#objects) | :crossed_swords: | `:crossed_swords:` | :bomb: | `:bomb:` | [top](#table-of-contents) |
++| [top](#objects) | :boomerang: | `:boomerang:` | :bow_and_arrow: | `:bow_and_arrow:` | [top](#table-of-contents) |
++| [top](#objects) | :shield: | `:shield:` | :carpentry_saw: | `:carpentry_saw:` | [top](#table-of-contents) |
++| [top](#objects) | :wrench: | `:wrench:` | :screwdriver: | `:screwdriver:` | [top](#table-of-contents) |
++| [top](#objects) | :nut_and_bolt: | `:nut_and_bolt:` | :gear: | `:gear:` | [top](#table-of-contents) |
++| [top](#objects) | :clamp: | `:clamp:` | :balance_scale: | `:balance_scale:` | [top](#table-of-contents) |
++| [top](#objects) | :probing_cane: | `:probing_cane:` | :link: | `:link:` | [top](#table-of-contents) |
++| [top](#objects) | :chains: | `:chains:` | :hook: | `:hook:` | [top](#table-of-contents) |
++| [top](#objects) | :toolbox: | `:toolbox:` | :magnet: | `:magnet:` | [top](#table-of-contents) |
++| [top](#objects) | :ladder: | `:ladder:` | | | [top](#table-of-contents) |
+
+### Science
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :syringe: | `:syringe:` | :drop_of_blood: | `:drop_of_blood:` | [top](#introduction) |
- | [top](#objects) | :pill: | `:pill:` | :adhesive_bandage: | `:adhesive_bandage:` | [top](#introduction) |
- | [top](#objects) | :stethoscope: | `:stethoscope:` | | | [top](#introduction) |
++| [top](#objects) | :alembic: | `:alembic:` | :test_tube: | `:test_tube:` | [top](#table-of-contents) |
++| [top](#objects) | :petri_dish: | `:petri_dish:` | :dna: | `:dna:` | [top](#table-of-contents) |
++| [top](#objects) | :microscope: | `:microscope:` | :telescope: | `:telescope:` | [top](#table-of-contents) |
++| [top](#objects) | :satellite: | `:satellite:` | | | [top](#table-of-contents) |
+
+### Medical
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :door: | `:door:` | :elevator: | `:elevator:` | [top](#introduction) |
- | [top](#objects) | :mirror: | `:mirror:` | :window: | `:window:` | [top](#introduction) |
- | [top](#objects) | :bed: | `:bed:` | :couch_and_lamp: | `:couch_and_lamp:` | [top](#introduction) |
- | [top](#objects) | :chair: | `:chair:` | :toilet: | `:toilet:` | [top](#introduction) |
- | [top](#objects) | :plunger: | `:plunger:` | :shower: | `:shower:` | [top](#introduction) |
- | [top](#objects) | :bathtub: | `:bathtub:` | :mouse_trap: | `:mouse_trap:` | [top](#introduction) |
- | [top](#objects) | :razor: | `:razor:` | :lotion_bottle: | `:lotion_bottle:` | [top](#introduction) |
- | [top](#objects) | :safety_pin: | `:safety_pin:` | :broom: | `:broom:` | [top](#introduction) |
- | [top](#objects) | :basket: | `:basket:` | :roll_of_paper: | `:roll_of_paper:` | [top](#introduction) |
- | [top](#objects) | :bucket: | `:bucket:` | :soap: | `:soap:` | [top](#introduction) |
- | [top](#objects) | :toothbrush: | `:toothbrush:` | :sponge: | `:sponge:` | [top](#introduction) |
- | [top](#objects) | :fire_extinguisher: | `:fire_extinguisher:` | :shopping_cart: | `:shopping_cart:` | [top](#introduction) |
++| [top](#objects) | :syringe: | `:syringe:` | :drop_of_blood: | `:drop_of_blood:` | [top](#table-of-contents) |
++| [top](#objects) | :pill: | `:pill:` | :adhesive_bandage: | `:adhesive_bandage:` | [top](#table-of-contents) |
++| [top](#objects) | :crutch: | `:crutch:` | :stethoscope: | `:stethoscope:` | [top](#table-of-contents) |
++| [top](#objects) | :x_ray: | `:x_ray:` | | | [top](#table-of-contents) |
+
+### Household
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#objects) | :smoking: | `:smoking:` | :coffin: | `:coffin:` | [top](#introduction) |
- | [top](#objects) | :headstone: | `:headstone:` | :funeral_urn: | `:funeral_urn:` | [top](#introduction) |
- | [top](#objects) | :nazar_amulet: | `:nazar_amulet:` | :moyai: | `:moyai:` | [top](#introduction) |
- | [top](#objects) | :placard: | `:placard:` | | | [top](#introduction) |
++| [top](#objects) | :door: | `:door:` | :elevator: | `:elevator:` | [top](#table-of-contents) |
++| [top](#objects) | :mirror: | `:mirror:` | :window: | `:window:` | [top](#table-of-contents) |
++| [top](#objects) | :bed: | `:bed:` | :couch_and_lamp: | `:couch_and_lamp:` | [top](#table-of-contents) |
++| [top](#objects) | :chair: | `:chair:` | :toilet: | `:toilet:` | [top](#table-of-contents) |
++| [top](#objects) | :plunger: | `:plunger:` | :shower: | `:shower:` | [top](#table-of-contents) |
++| [top](#objects) | :bathtub: | `:bathtub:` | :mouse_trap: | `:mouse_trap:` | [top](#table-of-contents) |
++| [top](#objects) | :razor: | `:razor:` | :lotion_bottle: | `:lotion_bottle:` | [top](#table-of-contents) |
++| [top](#objects) | :safety_pin: | `:safety_pin:` | :broom: | `:broom:` | [top](#table-of-contents) |
++| [top](#objects) | :basket: | `:basket:` | :roll_of_paper: | `:roll_of_paper:` | [top](#table-of-contents) |
++| [top](#objects) | :bucket: | `:bucket:` | :soap: | `:soap:` | [top](#table-of-contents) |
++| [top](#objects) | :bubbles: | `:bubbles:` | :toothbrush: | `:toothbrush:` | [top](#table-of-contents) |
++| [top](#objects) | :sponge: | `:sponge:` | :fire_extinguisher: | `:fire_extinguisher:` | [top](#table-of-contents) |
++| [top](#objects) | :shopping_cart: | `:shopping_cart:` | | | [top](#table-of-contents) |
+
+### Other Object
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :atm: | `:atm:` | :put_litter_in_its_place: | `:put_litter_in_its_place:` | [top](#introduction) |
- | [top](#symbols) | :potable_water: | `:potable_water:` | :wheelchair: | `:wheelchair:` | [top](#introduction) |
- | [top](#symbols) | :mens: | `:mens:` | :womens: | `:womens:` | [top](#introduction) |
- | [top](#symbols) | :restroom: | `:restroom:` | :baby_symbol: | `:baby_symbol:` | [top](#introduction) |
- | [top](#symbols) | :wc: | `:wc:` | :passport_control: | `:passport_control:` | [top](#introduction) |
- | [top](#symbols) | :customs: | `:customs:` | :baggage_claim: | `:baggage_claim:` | [top](#introduction) |
- | [top](#symbols) | :left_luggage: | `:left_luggage:` | | | [top](#introduction) |
++| [top](#objects) | :smoking: | `:smoking:` | :coffin: | `:coffin:` | [top](#table-of-contents) |
++| [top](#objects) | :headstone: | `:headstone:` | :funeral_urn: | `:funeral_urn:` | [top](#table-of-contents) |
++| [top](#objects) | :nazar_amulet: | `:nazar_amulet:` | :hamsa: | `:hamsa:` | [top](#table-of-contents) |
++| [top](#objects) | :moyai: | `:moyai:` | :placard: | `:placard:` | [top](#table-of-contents) |
++| [top](#objects) | :identification_card: | `:identification_card:` | | | [top](#table-of-contents) |
+
+## Symbols
+
+- [Transport Sign](#transport-sign)
+- [Warning](#warning)
+- [Arrow](#arrow)
+- [Religion](#religion)
+- [Zodiac](#zodiac)
+- [Av Symbol](#av-symbol)
+- [Gender](#gender)
+- [Math](#math)
+- [Punctuation](#punctuation)
+- [Currency](#currency)
+- [Other Symbol](#other-symbol)
+- [Keycap](#keycap)
+- [Alphanum](#alphanum)
+- [Geometric](#geometric)
+
+### Transport Sign
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :warning: | `:warning:` | :children_crossing: | `:children_crossing:` | [top](#introduction) |
- | [top](#symbols) | :no_entry: | `:no_entry:` | :no_entry_sign: | `:no_entry_sign:` | [top](#introduction) |
- | [top](#symbols) | :no_bicycles: | `:no_bicycles:` | :no_smoking: | `:no_smoking:` | [top](#introduction) |
- | [top](#symbols) | :do_not_litter: | `:do_not_litter:` | :non-potable_water: | `:non-potable_water:` | [top](#introduction) |
- | [top](#symbols) | :no_pedestrians: | `:no_pedestrians:` | :no_mobile_phones: | `:no_mobile_phones:` | [top](#introduction) |
- | [top](#symbols) | :underage: | `:underage:` | :radioactive: | `:radioactive:` | [top](#introduction) |
- | [top](#symbols) | :biohazard: | `:biohazard:` | | | [top](#introduction) |
++| [top](#symbols) | :atm: | `:atm:` | :put_litter_in_its_place: | `:put_litter_in_its_place:` | [top](#table-of-contents) |
++| [top](#symbols) | :potable_water: | `:potable_water:` | :wheelchair: | `:wheelchair:` | [top](#table-of-contents) |
++| [top](#symbols) | :mens: | `:mens:` | :womens: | `:womens:` | [top](#table-of-contents) |
++| [top](#symbols) | :restroom: | `:restroom:` | :baby_symbol: | `:baby_symbol:` | [top](#table-of-contents) |
++| [top](#symbols) | :wc: | `:wc:` | :passport_control: | `:passport_control:` | [top](#table-of-contents) |
++| [top](#symbols) | :customs: | `:customs:` | :baggage_claim: | `:baggage_claim:` | [top](#table-of-contents) |
++| [top](#symbols) | :left_luggage: | `:left_luggage:` | | | [top](#table-of-contents) |
+
+### Warning
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :arrow_up: | `:arrow_up:` | :arrow_upper_right: | `:arrow_upper_right:` | [top](#introduction) |
- | [top](#symbols) | :arrow_right: | `:arrow_right:` | :arrow_lower_right: | `:arrow_lower_right:` | [top](#introduction) |
- | [top](#symbols) | :arrow_down: | `:arrow_down:` | :arrow_lower_left: | `:arrow_lower_left:` | [top](#introduction) |
- | [top](#symbols) | :arrow_left: | `:arrow_left:` | :arrow_upper_left: | `:arrow_upper_left:` | [top](#introduction) |
- | [top](#symbols) | :arrow_up_down: | `:arrow_up_down:` | :left_right_arrow: | `:left_right_arrow:` | [top](#introduction) |
- | [top](#symbols) | :leftwards_arrow_with_hook: | `:leftwards_arrow_with_hook:` | :arrow_right_hook: | `:arrow_right_hook:` | [top](#introduction) |
- | [top](#symbols) | :arrow_heading_up: | `:arrow_heading_up:` | :arrow_heading_down: | `:arrow_heading_down:` | [top](#introduction) |
- | [top](#symbols) | :arrows_clockwise: | `:arrows_clockwise:` | :arrows_counterclockwise: | `:arrows_counterclockwise:` | [top](#introduction) |
- | [top](#symbols) | :back: | `:back:` | :end: | `:end:` | [top](#introduction) |
- | [top](#symbols) | :on: | `:on:` | :soon: | `:soon:` | [top](#introduction) |
- | [top](#symbols) | :top: | `:top:` | | | [top](#introduction) |
++| [top](#symbols) | :warning: | `:warning:` | :children_crossing: | `:children_crossing:` | [top](#table-of-contents) |
++| [top](#symbols) | :no_entry: | `:no_entry:` | :no_entry_sign: | `:no_entry_sign:` | [top](#table-of-contents) |
++| [top](#symbols) | :no_bicycles: | `:no_bicycles:` | :no_smoking: | `:no_smoking:` | [top](#table-of-contents) |
++| [top](#symbols) | :do_not_litter: | `:do_not_litter:` | :non-potable_water: | `:non-potable_water:` | [top](#table-of-contents) |
++| [top](#symbols) | :no_pedestrians: | `:no_pedestrians:` | :no_mobile_phones: | `:no_mobile_phones:` | [top](#table-of-contents) |
++| [top](#symbols) | :underage: | `:underage:` | :radioactive: | `:radioactive:` | [top](#table-of-contents) |
++| [top](#symbols) | :biohazard: | `:biohazard:` | | | [top](#table-of-contents) |
+
+### Arrow
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :place_of_worship: | `:place_of_worship:` | :atom_symbol: | `:atom_symbol:` | [top](#introduction) |
- | [top](#symbols) | :om: | `:om:` | :star_of_david: | `:star_of_david:` | [top](#introduction) |
- | [top](#symbols) | :wheel_of_dharma: | `:wheel_of_dharma:` | :yin_yang: | `:yin_yang:` | [top](#introduction) |
- | [top](#symbols) | :latin_cross: | `:latin_cross:` | :orthodox_cross: | `:orthodox_cross:` | [top](#introduction) |
- | [top](#symbols) | :star_and_crescent: | `:star_and_crescent:` | :peace_symbol: | `:peace_symbol:` | [top](#introduction) |
- | [top](#symbols) | :menorah: | `:menorah:` | :six_pointed_star: | `:six_pointed_star:` | [top](#introduction) |
++| [top](#symbols) | :arrow_up: | `:arrow_up:` | :arrow_upper_right: | `:arrow_upper_right:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_right: | `:arrow_right:` | :arrow_lower_right: | `:arrow_lower_right:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_down: | `:arrow_down:` | :arrow_lower_left: | `:arrow_lower_left:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_left: | `:arrow_left:` | :arrow_upper_left: | `:arrow_upper_left:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_up_down: | `:arrow_up_down:` | :left_right_arrow: | `:left_right_arrow:` | [top](#table-of-contents) |
++| [top](#symbols) | :leftwards_arrow_with_hook: | `:leftwards_arrow_with_hook:` | :arrow_right_hook: | `:arrow_right_hook:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_heading_up: | `:arrow_heading_up:` | :arrow_heading_down: | `:arrow_heading_down:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrows_clockwise: | `:arrows_clockwise:` | :arrows_counterclockwise: | `:arrows_counterclockwise:` | [top](#table-of-contents) |
++| [top](#symbols) | :back: | `:back:` | :end: | `:end:` | [top](#table-of-contents) |
++| [top](#symbols) | :on: | `:on:` | :soon: | `:soon:` | [top](#table-of-contents) |
++| [top](#symbols) | :top: | `:top:` | | | [top](#table-of-contents) |
+
+### Religion
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :aries: | `:aries:` | :taurus: | `:taurus:` | [top](#introduction) |
- | [top](#symbols) | :gemini: | `:gemini:` | :cancer: | `:cancer:` | [top](#introduction) |
- | [top](#symbols) | :leo: | `:leo:` | :virgo: | `:virgo:` | [top](#introduction) |
- | [top](#symbols) | :libra: | `:libra:` | :scorpius: | `:scorpius:` | [top](#introduction) |
- | [top](#symbols) | :sagittarius: | `:sagittarius:` | :capricorn: | `:capricorn:` | [top](#introduction) |
- | [top](#symbols) | :aquarius: | `:aquarius:` | :pisces: | `:pisces:` | [top](#introduction) |
- | [top](#symbols) | :ophiuchus: | `:ophiuchus:` | | | [top](#introduction) |
++| [top](#symbols) | :place_of_worship: | `:place_of_worship:` | :atom_symbol: | `:atom_symbol:` | [top](#table-of-contents) |
++| [top](#symbols) | :om: | `:om:` | :star_of_david: | `:star_of_david:` | [top](#table-of-contents) |
++| [top](#symbols) | :wheel_of_dharma: | `:wheel_of_dharma:` | :yin_yang: | `:yin_yang:` | [top](#table-of-contents) |
++| [top](#symbols) | :latin_cross: | `:latin_cross:` | :orthodox_cross: | `:orthodox_cross:` | [top](#table-of-contents) |
++| [top](#symbols) | :star_and_crescent: | `:star_and_crescent:` | :peace_symbol: | `:peace_symbol:` | [top](#table-of-contents) |
++| [top](#symbols) | :menorah: | `:menorah:` | :six_pointed_star: | `:six_pointed_star:` | [top](#table-of-contents) |
++| [top](#symbols) | :khanda: | `:khanda:` | | | [top](#table-of-contents) |
+
+### Zodiac
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :twisted_rightwards_arrows: | `:twisted_rightwards_arrows:` | :repeat: | `:repeat:` | [top](#introduction) |
- | [top](#symbols) | :repeat_one: | `:repeat_one:` | :arrow_forward: | `:arrow_forward:` | [top](#introduction) |
- | [top](#symbols) | :fast_forward: | `:fast_forward:` | :next_track_button: | `:next_track_button:` | [top](#introduction) |
- | [top](#symbols) | :play_or_pause_button: | `:play_or_pause_button:` | :arrow_backward: | `:arrow_backward:` | [top](#introduction) |
- | [top](#symbols) | :rewind: | `:rewind:` | :previous_track_button: | `:previous_track_button:` | [top](#introduction) |
- | [top](#symbols) | :arrow_up_small: | `:arrow_up_small:` | :arrow_double_up: | `:arrow_double_up:` | [top](#introduction) |
- | [top](#symbols) | :arrow_down_small: | `:arrow_down_small:` | :arrow_double_down: | `:arrow_double_down:` | [top](#introduction) |
- | [top](#symbols) | :pause_button: | `:pause_button:` | :stop_button: | `:stop_button:` | [top](#introduction) |
- | [top](#symbols) | :record_button: | `:record_button:` | :eject_button: | `:eject_button:` | [top](#introduction) |
- | [top](#symbols) | :cinema: | `:cinema:` | :low_brightness: | `:low_brightness:` | [top](#introduction) |
- | [top](#symbols) | :high_brightness: | `:high_brightness:` | :signal_strength: | `:signal_strength:` | [top](#introduction) |
- | [top](#symbols) | :vibration_mode: | `:vibration_mode:` | :mobile_phone_off: | `:mobile_phone_off:` | [top](#introduction) |
++| [top](#symbols) | :aries: | `:aries:` | :taurus: | `:taurus:` | [top](#table-of-contents) |
++| [top](#symbols) | :gemini: | `:gemini:` | :cancer: | `:cancer:` | [top](#table-of-contents) |
++| [top](#symbols) | :leo: | `:leo:` | :virgo: | `:virgo:` | [top](#table-of-contents) |
++| [top](#symbols) | :libra: | `:libra:` | :scorpius: | `:scorpius:` | [top](#table-of-contents) |
++| [top](#symbols) | :sagittarius: | `:sagittarius:` | :capricorn: | `:capricorn:` | [top](#table-of-contents) |
++| [top](#symbols) | :aquarius: | `:aquarius:` | :pisces: | `:pisces:` | [top](#table-of-contents) |
++| [top](#symbols) | :ophiuchus: | `:ophiuchus:` | | | [top](#table-of-contents) |
+
+### Av Symbol
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :female_sign: | `:female_sign:` | :male_sign: | `:male_sign:` | [top](#introduction) |
- | [top](#symbols) | :transgender_symbol: | `:transgender_symbol:` | | | [top](#introduction) |
++| [top](#symbols) | :twisted_rightwards_arrows: | `:twisted_rightwards_arrows:` | :repeat: | `:repeat:` | [top](#table-of-contents) |
++| [top](#symbols) | :repeat_one: | `:repeat_one:` | :arrow_forward: | `:arrow_forward:` | [top](#table-of-contents) |
++| [top](#symbols) | :fast_forward: | `:fast_forward:` | :next_track_button: | `:next_track_button:` | [top](#table-of-contents) |
++| [top](#symbols) | :play_or_pause_button: | `:play_or_pause_button:` | :arrow_backward: | `:arrow_backward:` | [top](#table-of-contents) |
++| [top](#symbols) | :rewind: | `:rewind:` | :previous_track_button: | `:previous_track_button:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_up_small: | `:arrow_up_small:` | :arrow_double_up: | `:arrow_double_up:` | [top](#table-of-contents) |
++| [top](#symbols) | :arrow_down_small: | `:arrow_down_small:` | :arrow_double_down: | `:arrow_double_down:` | [top](#table-of-contents) |
++| [top](#symbols) | :pause_button: | `:pause_button:` | :stop_button: | `:stop_button:` | [top](#table-of-contents) |
++| [top](#symbols) | :record_button: | `:record_button:` | :eject_button: | `:eject_button:` | [top](#table-of-contents) |
++| [top](#symbols) | :cinema: | `:cinema:` | :low_brightness: | `:low_brightness:` | [top](#table-of-contents) |
++| [top](#symbols) | :high_brightness: | `:high_brightness:` | :signal_strength: | `:signal_strength:` | [top](#table-of-contents) |
++| [top](#symbols) | :wireless: | `:wireless:` | :vibration_mode: | `:vibration_mode:` | [top](#table-of-contents) |
++| [top](#symbols) | :mobile_phone_off: | `:mobile_phone_off:` | | | [top](#table-of-contents) |
+
+### Gender
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :heavy_multiplication_x: | `:heavy_multiplication_x:` | :heavy_plus_sign: | `:heavy_plus_sign:` | [top](#introduction) |
- | [top](#symbols) | :heavy_minus_sign: | `:heavy_minus_sign:` | :heavy_division_sign: | `:heavy_division_sign:` | [top](#introduction) |
- | [top](#symbols) | :infinity: | `:infinity:` | | | [top](#introduction) |
++| [top](#symbols) | :female_sign: | `:female_sign:` | :male_sign: | `:male_sign:` | [top](#table-of-contents) |
++| [top](#symbols) | :transgender_symbol: | `:transgender_symbol:` | | | [top](#table-of-contents) |
+
+### Math
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :bangbang: | `:bangbang:` | :interrobang: | `:interrobang:` | [top](#introduction) |
- | [top](#symbols) | :question: | `:question:` | :grey_question: | `:grey_question:` | [top](#introduction) |
- | [top](#symbols) | :grey_exclamation: | `:grey_exclamation:` | :exclamation: | `:exclamation:` `:heavy_exclamation_mark:` | [top](#introduction) |
- | [top](#symbols) | :wavy_dash: | `:wavy_dash:` | | | [top](#introduction) |
++| [top](#symbols) | :heavy_multiplication_x: | `:heavy_multiplication_x:` | :heavy_plus_sign: | `:heavy_plus_sign:` | [top](#table-of-contents) |
++| [top](#symbols) | :heavy_minus_sign: | `:heavy_minus_sign:` | :heavy_division_sign: | `:heavy_division_sign:` | [top](#table-of-contents) |
++| [top](#symbols) | :heavy_equals_sign: | `:heavy_equals_sign:` | :infinity: | `:infinity:` | [top](#table-of-contents) |
+
+### Punctuation
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :currency_exchange: | `:currency_exchange:` | :heavy_dollar_sign: | `:heavy_dollar_sign:` | [top](#introduction) |
++| [top](#symbols) | :bangbang: | `:bangbang:` | :interrobang: | `:interrobang:` | [top](#table-of-contents) |
++| [top](#symbols) | :question: | `:question:` | :grey_question: | `:grey_question:` | [top](#table-of-contents) |
++| [top](#symbols) | :grey_exclamation: | `:grey_exclamation:` | :exclamation: | `:exclamation:` <br /> `:heavy_exclamation_mark:` | [top](#table-of-contents) |
++| [top](#symbols) | :wavy_dash: | `:wavy_dash:` | | | [top](#table-of-contents) |
+
+### Currency
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :medical_symbol: | `:medical_symbol:` | :recycle: | `:recycle:` | [top](#introduction) |
- | [top](#symbols) | :fleur_de_lis: | `:fleur_de_lis:` | :trident: | `:trident:` | [top](#introduction) |
- | [top](#symbols) | :name_badge: | `:name_badge:` | :beginner: | `:beginner:` | [top](#introduction) |
- | [top](#symbols) | :o: | `:o:` | :white_check_mark: | `:white_check_mark:` | [top](#introduction) |
- | [top](#symbols) | :ballot_box_with_check: | `:ballot_box_with_check:` | :heavy_check_mark: | `:heavy_check_mark:` | [top](#introduction) |
- | [top](#symbols) | :x: | `:x:` | :negative_squared_cross_mark: | `:negative_squared_cross_mark:` | [top](#introduction) |
- | [top](#symbols) | :curly_loop: | `:curly_loop:` | :loop: | `:loop:` | [top](#introduction) |
- | [top](#symbols) | :part_alternation_mark: | `:part_alternation_mark:` | :eight_spoked_asterisk: | `:eight_spoked_asterisk:` | [top](#introduction) |
- | [top](#symbols) | :eight_pointed_black_star: | `:eight_pointed_black_star:` | :sparkle: | `:sparkle:` | [top](#introduction) |
- | [top](#symbols) | :copyright: | `:copyright:` | :registered: | `:registered:` | [top](#introduction) |
- | [top](#symbols) | :tm: | `:tm:` | | | [top](#introduction) |
++| [top](#symbols) | :currency_exchange: | `:currency_exchange:` | :heavy_dollar_sign: | `:heavy_dollar_sign:` | [top](#table-of-contents) |
+
+### Other Symbol
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :hash: | `:hash:` | :asterisk: | `:asterisk:` | [top](#introduction) |
- | [top](#symbols) | :zero: | `:zero:` | :one: | `:one:` | [top](#introduction) |
- | [top](#symbols) | :two: | `:two:` | :three: | `:three:` | [top](#introduction) |
- | [top](#symbols) | :four: | `:four:` | :five: | `:five:` | [top](#introduction) |
- | [top](#symbols) | :six: | `:six:` | :seven: | `:seven:` | [top](#introduction) |
- | [top](#symbols) | :eight: | `:eight:` | :nine: | `:nine:` | [top](#introduction) |
- | [top](#symbols) | :keycap_ten: | `:keycap_ten:` | | | [top](#introduction) |
++| [top](#symbols) | :medical_symbol: | `:medical_symbol:` | :recycle: | `:recycle:` | [top](#table-of-contents) |
++| [top](#symbols) | :fleur_de_lis: | `:fleur_de_lis:` | :trident: | `:trident:` | [top](#table-of-contents) |
++| [top](#symbols) | :name_badge: | `:name_badge:` | :beginner: | `:beginner:` | [top](#table-of-contents) |
++| [top](#symbols) | :o: | `:o:` | :white_check_mark: | `:white_check_mark:` | [top](#table-of-contents) |
++| [top](#symbols) | :ballot_box_with_check: | `:ballot_box_with_check:` | :heavy_check_mark: | `:heavy_check_mark:` | [top](#table-of-contents) |
++| [top](#symbols) | :x: | `:x:` | :negative_squared_cross_mark: | `:negative_squared_cross_mark:` | [top](#table-of-contents) |
++| [top](#symbols) | :curly_loop: | `:curly_loop:` | :loop: | `:loop:` | [top](#table-of-contents) |
++| [top](#symbols) | :part_alternation_mark: | `:part_alternation_mark:` | :eight_spoked_asterisk: | `:eight_spoked_asterisk:` | [top](#table-of-contents) |
++| [top](#symbols) | :eight_pointed_black_star: | `:eight_pointed_black_star:` | :sparkle: | `:sparkle:` | [top](#table-of-contents) |
++| [top](#symbols) | :copyright: | `:copyright:` | :registered: | `:registered:` | [top](#table-of-contents) |
++| [top](#symbols) | :tm: | `:tm:` | | | [top](#table-of-contents) |
+
+### Keycap
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :capital_abcd: | `:capital_abcd:` | :abcd: | `:abcd:` | [top](#introduction) |
- | [top](#symbols) | :1234: | `:1234:` | :symbols: | `:symbols:` | [top](#introduction) |
- | [top](#symbols) | :abc: | `:abc:` | :a: | `:a:` | [top](#introduction) |
- | [top](#symbols) | :ab: | `:ab:` | :b: | `:b:` | [top](#introduction) |
- | [top](#symbols) | :cl: | `:cl:` | :cool: | `:cool:` | [top](#introduction) |
- | [top](#symbols) | :free: | `:free:` | :information_source: | `:information_source:` | [top](#introduction) |
- | [top](#symbols) | :id: | `:id:` | :m: | `:m:` | [top](#introduction) |
- | [top](#symbols) | :new: | `:new:` | :ng: | `:ng:` | [top](#introduction) |
- | [top](#symbols) | :o2: | `:o2:` | :ok: | `:ok:` | [top](#introduction) |
- | [top](#symbols) | :parking: | `:parking:` | :sos: | `:sos:` | [top](#introduction) |
- | [top](#symbols) | :up: | `:up:` | :vs: | `:vs:` | [top](#introduction) |
- | [top](#symbols) | :koko: | `:koko:` | :sa: | `:sa:` | [top](#introduction) |
- | [top](#symbols) | :u6708: | `:u6708:` | :u6709: | `:u6709:` | [top](#introduction) |
- | [top](#symbols) | :u6307: | `:u6307:` | :ideograph_advantage: | `:ideograph_advantage:` | [top](#introduction) |
- | [top](#symbols) | :u5272: | `:u5272:` | :u7121: | `:u7121:` | [top](#introduction) |
- | [top](#symbols) | :u7981: | `:u7981:` | :accept: | `:accept:` | [top](#introduction) |
- | [top](#symbols) | :u7533: | `:u7533:` | :u5408: | `:u5408:` | [top](#introduction) |
- | [top](#symbols) | :u7a7a: | `:u7a7a:` | :congratulations: | `:congratulations:` | [top](#introduction) |
- | [top](#symbols) | :secret: | `:secret:` | :u55b6: | `:u55b6:` | [top](#introduction) |
- | [top](#symbols) | :u6e80: | `:u6e80:` | | | [top](#introduction) |
++| [top](#symbols) | :hash: | `:hash:` | :asterisk: | `:asterisk:` | [top](#table-of-contents) |
++| [top](#symbols) | :zero: | `:zero:` | :one: | `:one:` | [top](#table-of-contents) |
++| [top](#symbols) | :two: | `:two:` | :three: | `:three:` | [top](#table-of-contents) |
++| [top](#symbols) | :four: | `:four:` | :five: | `:five:` | [top](#table-of-contents) |
++| [top](#symbols) | :six: | `:six:` | :seven: | `:seven:` | [top](#table-of-contents) |
++| [top](#symbols) | :eight: | `:eight:` | :nine: | `:nine:` | [top](#table-of-contents) |
++| [top](#symbols) | :keycap_ten: | `:keycap_ten:` | | | [top](#table-of-contents) |
+
+### Alphanum
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#symbols) | :red_circle: | `:red_circle:` | :orange_circle: | `:orange_circle:` | [top](#introduction) |
- | [top](#symbols) | :yellow_circle: | `:yellow_circle:` | :green_circle: | `:green_circle:` | [top](#introduction) |
- | [top](#symbols) | :large_blue_circle: | `:large_blue_circle:` | :purple_circle: | `:purple_circle:` | [top](#introduction) |
- | [top](#symbols) | :brown_circle: | `:brown_circle:` | :black_circle: | `:black_circle:` | [top](#introduction) |
- | [top](#symbols) | :white_circle: | `:white_circle:` | :red_square: | `:red_square:` | [top](#introduction) |
- | [top](#symbols) | :orange_square: | `:orange_square:` | :yellow_square: | `:yellow_square:` | [top](#introduction) |
- | [top](#symbols) | :green_square: | `:green_square:` | :blue_square: | `:blue_square:` | [top](#introduction) |
- | [top](#symbols) | :purple_square: | `:purple_square:` | :brown_square: | `:brown_square:` | [top](#introduction) |
- | [top](#symbols) | :black_large_square: | `:black_large_square:` | :white_large_square: | `:white_large_square:` | [top](#introduction) |
- | [top](#symbols) | :black_medium_square: | `:black_medium_square:` | :white_medium_square: | `:white_medium_square:` | [top](#introduction) |
- | [top](#symbols) | :black_medium_small_square: | `:black_medium_small_square:` | :white_medium_small_square: | `:white_medium_small_square:` | [top](#introduction) |
- | [top](#symbols) | :black_small_square: | `:black_small_square:` | :white_small_square: | `:white_small_square:` | [top](#introduction) |
- | [top](#symbols) | :large_orange_diamond: | `:large_orange_diamond:` | :large_blue_diamond: | `:large_blue_diamond:` | [top](#introduction) |
- | [top](#symbols) | :small_orange_diamond: | `:small_orange_diamond:` | :small_blue_diamond: | `:small_blue_diamond:` | [top](#introduction) |
- | [top](#symbols) | :small_red_triangle: | `:small_red_triangle:` | :small_red_triangle_down: | `:small_red_triangle_down:` | [top](#introduction) |
- | [top](#symbols) | :diamond_shape_with_a_dot_inside: | `:diamond_shape_with_a_dot_inside:` | :radio_button: | `:radio_button:` | [top](#introduction) |
- | [top](#symbols) | :white_square_button: | `:white_square_button:` | :black_square_button: | `:black_square_button:` | [top](#introduction) |
++| [top](#symbols) | :capital_abcd: | `:capital_abcd:` | :abcd: | `:abcd:` | [top](#table-of-contents) |
++| [top](#symbols) | :1234: | `:1234:` | :symbols: | `:symbols:` | [top](#table-of-contents) |
++| [top](#symbols) | :abc: | `:abc:` | :a: | `:a:` | [top](#table-of-contents) |
++| [top](#symbols) | :ab: | `:ab:` | :b: | `:b:` | [top](#table-of-contents) |
++| [top](#symbols) | :cl: | `:cl:` | :cool: | `:cool:` | [top](#table-of-contents) |
++| [top](#symbols) | :free: | `:free:` | :information_source: | `:information_source:` | [top](#table-of-contents) |
++| [top](#symbols) | :id: | `:id:` | :m: | `:m:` | [top](#table-of-contents) |
++| [top](#symbols) | :new: | `:new:` | :ng: | `:ng:` | [top](#table-of-contents) |
++| [top](#symbols) | :o2: | `:o2:` | :ok: | `:ok:` | [top](#table-of-contents) |
++| [top](#symbols) | :parking: | `:parking:` | :sos: | `:sos:` | [top](#table-of-contents) |
++| [top](#symbols) | :up: | `:up:` | :vs: | `:vs:` | [top](#table-of-contents) |
++| [top](#symbols) | :koko: | `:koko:` | :sa: | `:sa:` | [top](#table-of-contents) |
++| [top](#symbols) | :u6708: | `:u6708:` | :u6709: | `:u6709:` | [top](#table-of-contents) |
++| [top](#symbols) | :u6307: | `:u6307:` | :ideograph_advantage: | `:ideograph_advantage:` | [top](#table-of-contents) |
++| [top](#symbols) | :u5272: | `:u5272:` | :u7121: | `:u7121:` | [top](#table-of-contents) |
++| [top](#symbols) | :u7981: | `:u7981:` | :accept: | `:accept:` | [top](#table-of-contents) |
++| [top](#symbols) | :u7533: | `:u7533:` | :u5408: | `:u5408:` | [top](#table-of-contents) |
++| [top](#symbols) | :u7a7a: | `:u7a7a:` | :congratulations: | `:congratulations:` | [top](#table-of-contents) |
++| [top](#symbols) | :secret: | `:secret:` | :u55b6: | `:u55b6:` | [top](#table-of-contents) |
++| [top](#symbols) | :u6e80: | `:u6e80:` | | | [top](#table-of-contents) |
+
+### Geometric
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#flags) | :checkered_flag: | `:checkered_flag:` | :triangular_flag_on_post: | `:triangular_flag_on_post:` | [top](#introduction) |
- | [top](#flags) | :crossed_flags: | `:crossed_flags:` | :black_flag: | `:black_flag:` | [top](#introduction) |
- | [top](#flags) | :white_flag: | `:white_flag:` | :rainbow_flag: | `:rainbow_flag:` | [top](#introduction) |
- | [top](#flags) | :transgender_flag: | `:transgender_flag:` | :pirate_flag: | `:pirate_flag:` | [top](#introduction) |
++| [top](#symbols) | :red_circle: | `:red_circle:` | :orange_circle: | `:orange_circle:` | [top](#table-of-contents) |
++| [top](#symbols) | :yellow_circle: | `:yellow_circle:` | :green_circle: | `:green_circle:` | [top](#table-of-contents) |
++| [top](#symbols) | :large_blue_circle: | `:large_blue_circle:` | :purple_circle: | `:purple_circle:` | [top](#table-of-contents) |
++| [top](#symbols) | :brown_circle: | `:brown_circle:` | :black_circle: | `:black_circle:` | [top](#table-of-contents) |
++| [top](#symbols) | :white_circle: | `:white_circle:` | :red_square: | `:red_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :orange_square: | `:orange_square:` | :yellow_square: | `:yellow_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :green_square: | `:green_square:` | :blue_square: | `:blue_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :purple_square: | `:purple_square:` | :brown_square: | `:brown_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :black_large_square: | `:black_large_square:` | :white_large_square: | `:white_large_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :black_medium_square: | `:black_medium_square:` | :white_medium_square: | `:white_medium_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :black_medium_small_square: | `:black_medium_small_square:` | :white_medium_small_square: | `:white_medium_small_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :black_small_square: | `:black_small_square:` | :white_small_square: | `:white_small_square:` | [top](#table-of-contents) |
++| [top](#symbols) | :large_orange_diamond: | `:large_orange_diamond:` | :large_blue_diamond: | `:large_blue_diamond:` | [top](#table-of-contents) |
++| [top](#symbols) | :small_orange_diamond: | `:small_orange_diamond:` | :small_blue_diamond: | `:small_blue_diamond:` | [top](#table-of-contents) |
++| [top](#symbols) | :small_red_triangle: | `:small_red_triangle:` | :small_red_triangle_down: | `:small_red_triangle_down:` | [top](#table-of-contents) |
++| [top](#symbols) | :diamond_shape_with_a_dot_inside: | `:diamond_shape_with_a_dot_inside:` | :radio_button: | `:radio_button:` | [top](#table-of-contents) |
++| [top](#symbols) | :white_square_button: | `:white_square_button:` | :black_square_button: | `:black_square_button:` | [top](#table-of-contents) |
+
+## Flags
+
+- [Flag](#flag)
+- [Country Flag](#country-flag)
+- [Subdivision Flag](#subdivision-flag)
+
+### Flag
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#flags) | :ascension_island: | `:ascension_island:` | :andorra: | `:andorra:` | [top](#introduction) |
- | [top](#flags) | :united_arab_emirates: | `:united_arab_emirates:` | :afghanistan: | `:afghanistan:` | [top](#introduction) |
- | [top](#flags) | :antigua_barbuda: | `:antigua_barbuda:` | :anguilla: | `:anguilla:` | [top](#introduction) |
- | [top](#flags) | :albania: | `:albania:` | :armenia: | `:armenia:` | [top](#introduction) |
- | [top](#flags) | :angola: | `:angola:` | :antarctica: | `:antarctica:` | [top](#introduction) |
- | [top](#flags) | :argentina: | `:argentina:` | :american_samoa: | `:american_samoa:` | [top](#introduction) |
- | [top](#flags) | :austria: | `:austria:` | :australia: | `:australia:` | [top](#introduction) |
- | [top](#flags) | :aruba: | `:aruba:` | :aland_islands: | `:aland_islands:` | [top](#introduction) |
- | [top](#flags) | :azerbaijan: | `:azerbaijan:` | :bosnia_herzegovina: | `:bosnia_herzegovina:` | [top](#introduction) |
- | [top](#flags) | :barbados: | `:barbados:` | :bangladesh: | `:bangladesh:` | [top](#introduction) |
- | [top](#flags) | :belgium: | `:belgium:` | :burkina_faso: | `:burkina_faso:` | [top](#introduction) |
- | [top](#flags) | :bulgaria: | `:bulgaria:` | :bahrain: | `:bahrain:` | [top](#introduction) |
- | [top](#flags) | :burundi: | `:burundi:` | :benin: | `:benin:` | [top](#introduction) |
- | [top](#flags) | :st_barthelemy: | `:st_barthelemy:` | :bermuda: | `:bermuda:` | [top](#introduction) |
- | [top](#flags) | :brunei: | `:brunei:` | :bolivia: | `:bolivia:` | [top](#introduction) |
- | [top](#flags) | :caribbean_netherlands: | `:caribbean_netherlands:` | :brazil: | `:brazil:` | [top](#introduction) |
- | [top](#flags) | :bahamas: | `:bahamas:` | :bhutan: | `:bhutan:` | [top](#introduction) |
- | [top](#flags) | :bouvet_island: | `:bouvet_island:` | :botswana: | `:botswana:` | [top](#introduction) |
- | [top](#flags) | :belarus: | `:belarus:` | :belize: | `:belize:` | [top](#introduction) |
- | [top](#flags) | :canada: | `:canada:` | :cocos_islands: | `:cocos_islands:` | [top](#introduction) |
- | [top](#flags) | :congo_kinshasa: | `:congo_kinshasa:` | :central_african_republic: | `:central_african_republic:` | [top](#introduction) |
- | [top](#flags) | :congo_brazzaville: | `:congo_brazzaville:` | :switzerland: | `:switzerland:` | [top](#introduction) |
- | [top](#flags) | :cote_divoire: | `:cote_divoire:` | :cook_islands: | `:cook_islands:` | [top](#introduction) |
- | [top](#flags) | :chile: | `:chile:` | :cameroon: | `:cameroon:` | [top](#introduction) |
- | [top](#flags) | :cn: | `:cn:` | :colombia: | `:colombia:` | [top](#introduction) |
- | [top](#flags) | :clipperton_island: | `:clipperton_island:` | :costa_rica: | `:costa_rica:` | [top](#introduction) |
- | [top](#flags) | :cuba: | `:cuba:` | :cape_verde: | `:cape_verde:` | [top](#introduction) |
- | [top](#flags) | :curacao: | `:curacao:` | :christmas_island: | `:christmas_island:` | [top](#introduction) |
- | [top](#flags) | :cyprus: | `:cyprus:` | :czech_republic: | `:czech_republic:` | [top](#introduction) |
- | [top](#flags) | :de: | `:de:` | :diego_garcia: | `:diego_garcia:` | [top](#introduction) |
- | [top](#flags) | :djibouti: | `:djibouti:` | :denmark: | `:denmark:` | [top](#introduction) |
- | [top](#flags) | :dominica: | `:dominica:` | :dominican_republic: | `:dominican_republic:` | [top](#introduction) |
- | [top](#flags) | :algeria: | `:algeria:` | :ceuta_melilla: | `:ceuta_melilla:` | [top](#introduction) |
- | [top](#flags) | :ecuador: | `:ecuador:` | :estonia: | `:estonia:` | [top](#introduction) |
- | [top](#flags) | :egypt: | `:egypt:` | :western_sahara: | `:western_sahara:` | [top](#introduction) |
- | [top](#flags) | :eritrea: | `:eritrea:` | :es: | `:es:` | [top](#introduction) |
- | [top](#flags) | :ethiopia: | `:ethiopia:` | :eu: | `:eu:` `:european_union:` | [top](#introduction) |
- | [top](#flags) | :finland: | `:finland:` | :fiji: | `:fiji:` | [top](#introduction) |
- | [top](#flags) | :falkland_islands: | `:falkland_islands:` | :micronesia: | `:micronesia:` | [top](#introduction) |
- | [top](#flags) | :faroe_islands: | `:faroe_islands:` | :fr: | `:fr:` | [top](#introduction) |
- | [top](#flags) | :gabon: | `:gabon:` | :gb: | `:gb:` `:uk:` | [top](#introduction) |
- | [top](#flags) | :grenada: | `:grenada:` | :georgia: | `:georgia:` | [top](#introduction) |
- | [top](#flags) | :french_guiana: | `:french_guiana:` | :guernsey: | `:guernsey:` | [top](#introduction) |
- | [top](#flags) | :ghana: | `:ghana:` | :gibraltar: | `:gibraltar:` | [top](#introduction) |
- | [top](#flags) | :greenland: | `:greenland:` | :gambia: | `:gambia:` | [top](#introduction) |
- | [top](#flags) | :guinea: | `:guinea:` | :guadeloupe: | `:guadeloupe:` | [top](#introduction) |
- | [top](#flags) | :equatorial_guinea: | `:equatorial_guinea:` | :greece: | `:greece:` | [top](#introduction) |
- | [top](#flags) | :south_georgia_south_sandwich_islands: | `:south_georgia_south_sandwich_islands:` | :guatemala: | `:guatemala:` | [top](#introduction) |
- | [top](#flags) | :guam: | `:guam:` | :guinea_bissau: | `:guinea_bissau:` | [top](#introduction) |
- | [top](#flags) | :guyana: | `:guyana:` | :hong_kong: | `:hong_kong:` | [top](#introduction) |
- | [top](#flags) | :heard_mcdonald_islands: | `:heard_mcdonald_islands:` | :honduras: | `:honduras:` | [top](#introduction) |
- | [top](#flags) | :croatia: | `:croatia:` | :haiti: | `:haiti:` | [top](#introduction) |
- | [top](#flags) | :hungary: | `:hungary:` | :canary_islands: | `:canary_islands:` | [top](#introduction) |
- | [top](#flags) | :indonesia: | `:indonesia:` | :ireland: | `:ireland:` | [top](#introduction) |
- | [top](#flags) | :israel: | `:israel:` | :isle_of_man: | `:isle_of_man:` | [top](#introduction) |
- | [top](#flags) | :india: | `:india:` | :british_indian_ocean_territory: | `:british_indian_ocean_territory:` | [top](#introduction) |
- | [top](#flags) | :iraq: | `:iraq:` | :iran: | `:iran:` | [top](#introduction) |
- | [top](#flags) | :iceland: | `:iceland:` | :it: | `:it:` | [top](#introduction) |
- | [top](#flags) | :jersey: | `:jersey:` | :jamaica: | `:jamaica:` | [top](#introduction) |
- | [top](#flags) | :jordan: | `:jordan:` | :jp: | `:jp:` | [top](#introduction) |
- | [top](#flags) | :kenya: | `:kenya:` | :kyrgyzstan: | `:kyrgyzstan:` | [top](#introduction) |
- | [top](#flags) | :cambodia: | `:cambodia:` | :kiribati: | `:kiribati:` | [top](#introduction) |
- | [top](#flags) | :comoros: | `:comoros:` | :st_kitts_nevis: | `:st_kitts_nevis:` | [top](#introduction) |
- | [top](#flags) | :north_korea: | `:north_korea:` | :kr: | `:kr:` | [top](#introduction) |
- | [top](#flags) | :kuwait: | `:kuwait:` | :cayman_islands: | `:cayman_islands:` | [top](#introduction) |
- | [top](#flags) | :kazakhstan: | `:kazakhstan:` | :laos: | `:laos:` | [top](#introduction) |
- | [top](#flags) | :lebanon: | `:lebanon:` | :st_lucia: | `:st_lucia:` | [top](#introduction) |
- | [top](#flags) | :liechtenstein: | `:liechtenstein:` | :sri_lanka: | `:sri_lanka:` | [top](#introduction) |
- | [top](#flags) | :liberia: | `:liberia:` | :lesotho: | `:lesotho:` | [top](#introduction) |
- | [top](#flags) | :lithuania: | `:lithuania:` | :luxembourg: | `:luxembourg:` | [top](#introduction) |
- | [top](#flags) | :latvia: | `:latvia:` | :libya: | `:libya:` | [top](#introduction) |
- | [top](#flags) | :morocco: | `:morocco:` | :monaco: | `:monaco:` | [top](#introduction) |
- | [top](#flags) | :moldova: | `:moldova:` | :montenegro: | `:montenegro:` | [top](#introduction) |
- | [top](#flags) | :st_martin: | `:st_martin:` | :madagascar: | `:madagascar:` | [top](#introduction) |
- | [top](#flags) | :marshall_islands: | `:marshall_islands:` | :macedonia: | `:macedonia:` | [top](#introduction) |
- | [top](#flags) | :mali: | `:mali:` | :myanmar: | `:myanmar:` | [top](#introduction) |
- | [top](#flags) | :mongolia: | `:mongolia:` | :macau: | `:macau:` | [top](#introduction) |
- | [top](#flags) | :northern_mariana_islands: | `:northern_mariana_islands:` | :martinique: | `:martinique:` | [top](#introduction) |
- | [top](#flags) | :mauritania: | `:mauritania:` | :montserrat: | `:montserrat:` | [top](#introduction) |
- | [top](#flags) | :malta: | `:malta:` | :mauritius: | `:mauritius:` | [top](#introduction) |
- | [top](#flags) | :maldives: | `:maldives:` | :malawi: | `:malawi:` | [top](#introduction) |
- | [top](#flags) | :mexico: | `:mexico:` | :malaysia: | `:malaysia:` | [top](#introduction) |
- | [top](#flags) | :mozambique: | `:mozambique:` | :namibia: | `:namibia:` | [top](#introduction) |
- | [top](#flags) | :new_caledonia: | `:new_caledonia:` | :niger: | `:niger:` | [top](#introduction) |
- | [top](#flags) | :norfolk_island: | `:norfolk_island:` | :nigeria: | `:nigeria:` | [top](#introduction) |
- | [top](#flags) | :nicaragua: | `:nicaragua:` | :netherlands: | `:netherlands:` | [top](#introduction) |
- | [top](#flags) | :norway: | `:norway:` | :nepal: | `:nepal:` | [top](#introduction) |
- | [top](#flags) | :nauru: | `:nauru:` | :niue: | `:niue:` | [top](#introduction) |
- | [top](#flags) | :new_zealand: | `:new_zealand:` | :oman: | `:oman:` | [top](#introduction) |
- | [top](#flags) | :panama: | `:panama:` | :peru: | `:peru:` | [top](#introduction) |
- | [top](#flags) | :french_polynesia: | `:french_polynesia:` | :papua_new_guinea: | `:papua_new_guinea:` | [top](#introduction) |
- | [top](#flags) | :philippines: | `:philippines:` | :pakistan: | `:pakistan:` | [top](#introduction) |
- | [top](#flags) | :poland: | `:poland:` | :st_pierre_miquelon: | `:st_pierre_miquelon:` | [top](#introduction) |
- | [top](#flags) | :pitcairn_islands: | `:pitcairn_islands:` | :puerto_rico: | `:puerto_rico:` | [top](#introduction) |
- | [top](#flags) | :palestinian_territories: | `:palestinian_territories:` | :portugal: | `:portugal:` | [top](#introduction) |
- | [top](#flags) | :palau: | `:palau:` | :paraguay: | `:paraguay:` | [top](#introduction) |
- | [top](#flags) | :qatar: | `:qatar:` | :reunion: | `:reunion:` | [top](#introduction) |
- | [top](#flags) | :romania: | `:romania:` | :serbia: | `:serbia:` | [top](#introduction) |
- | [top](#flags) | :ru: | `:ru:` | :rwanda: | `:rwanda:` | [top](#introduction) |
- | [top](#flags) | :saudi_arabia: | `:saudi_arabia:` | :solomon_islands: | `:solomon_islands:` | [top](#introduction) |
- | [top](#flags) | :seychelles: | `:seychelles:` | :sudan: | `:sudan:` | [top](#introduction) |
- | [top](#flags) | :sweden: | `:sweden:` | :singapore: | `:singapore:` | [top](#introduction) |
- | [top](#flags) | :st_helena: | `:st_helena:` | :slovenia: | `:slovenia:` | [top](#introduction) |
- | [top](#flags) | :svalbard_jan_mayen: | `:svalbard_jan_mayen:` | :slovakia: | `:slovakia:` | [top](#introduction) |
- | [top](#flags) | :sierra_leone: | `:sierra_leone:` | :san_marino: | `:san_marino:` | [top](#introduction) |
- | [top](#flags) | :senegal: | `:senegal:` | :somalia: | `:somalia:` | [top](#introduction) |
- | [top](#flags) | :suriname: | `:suriname:` | :south_sudan: | `:south_sudan:` | [top](#introduction) |
- | [top](#flags) | :sao_tome_principe: | `:sao_tome_principe:` | :el_salvador: | `:el_salvador:` | [top](#introduction) |
- | [top](#flags) | :sint_maarten: | `:sint_maarten:` | :syria: | `:syria:` | [top](#introduction) |
- | [top](#flags) | :swaziland: | `:swaziland:` | :tristan_da_cunha: | `:tristan_da_cunha:` | [top](#introduction) |
- | [top](#flags) | :turks_caicos_islands: | `:turks_caicos_islands:` | :chad: | `:chad:` | [top](#introduction) |
- | [top](#flags) | :french_southern_territories: | `:french_southern_territories:` | :togo: | `:togo:` | [top](#introduction) |
- | [top](#flags) | :thailand: | `:thailand:` | :tajikistan: | `:tajikistan:` | [top](#introduction) |
- | [top](#flags) | :tokelau: | `:tokelau:` | :timor_leste: | `:timor_leste:` | [top](#introduction) |
- | [top](#flags) | :turkmenistan: | `:turkmenistan:` | :tunisia: | `:tunisia:` | [top](#introduction) |
- | [top](#flags) | :tonga: | `:tonga:` | :tr: | `:tr:` | [top](#introduction) |
- | [top](#flags) | :trinidad_tobago: | `:trinidad_tobago:` | :tuvalu: | `:tuvalu:` | [top](#introduction) |
- | [top](#flags) | :taiwan: | `:taiwan:` | :tanzania: | `:tanzania:` | [top](#introduction) |
- | [top](#flags) | :ukraine: | `:ukraine:` | :uganda: | `:uganda:` | [top](#introduction) |
- | [top](#flags) | :us_outlying_islands: | `:us_outlying_islands:` | :united_nations: | `:united_nations:` | [top](#introduction) |
- | [top](#flags) | :us: | `:us:` | :uruguay: | `:uruguay:` | [top](#introduction) |
- | [top](#flags) | :uzbekistan: | `:uzbekistan:` | :vatican_city: | `:vatican_city:` | [top](#introduction) |
- | [top](#flags) | :st_vincent_grenadines: | `:st_vincent_grenadines:` | :venezuela: | `:venezuela:` | [top](#introduction) |
- | [top](#flags) | :british_virgin_islands: | `:british_virgin_islands:` | :us_virgin_islands: | `:us_virgin_islands:` | [top](#introduction) |
- | [top](#flags) | :vietnam: | `:vietnam:` | :vanuatu: | `:vanuatu:` | [top](#introduction) |
- | [top](#flags) | :wallis_futuna: | `:wallis_futuna:` | :samoa: | `:samoa:` | [top](#introduction) |
- | [top](#flags) | :kosovo: | `:kosovo:` | :yemen: | `:yemen:` | [top](#introduction) |
- | [top](#flags) | :mayotte: | `:mayotte:` | :south_africa: | `:south_africa:` | [top](#introduction) |
- | [top](#flags) | :zambia: | `:zambia:` | :zimbabwe: | `:zimbabwe:` | [top](#introduction) |
++| [top](#flags) | :checkered_flag: | `:checkered_flag:` | :triangular_flag_on_post: | `:triangular_flag_on_post:` | [top](#table-of-contents) |
++| [top](#flags) | :crossed_flags: | `:crossed_flags:` | :black_flag: | `:black_flag:` | [top](#table-of-contents) |
++| [top](#flags) | :white_flag: | `:white_flag:` | :rainbow_flag: | `:rainbow_flag:` | [top](#table-of-contents) |
++| [top](#flags) | :transgender_flag: | `:transgender_flag:` | :pirate_flag: | `:pirate_flag:` | [top](#table-of-contents) |
+
+### Country Flag
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#flags) | :england: | `:england:` | :scotland: | `:scotland:` | [top](#introduction) |
- | [top](#flags) | :wales: | `:wales:` | | | [top](#introduction) |
++| [top](#flags) | :ascension_island: | `:ascension_island:` | :andorra: | `:andorra:` | [top](#table-of-contents) |
++| [top](#flags) | :united_arab_emirates: | `:united_arab_emirates:` | :afghanistan: | `:afghanistan:` | [top](#table-of-contents) |
++| [top](#flags) | :antigua_barbuda: | `:antigua_barbuda:` | :anguilla: | `:anguilla:` | [top](#table-of-contents) |
++| [top](#flags) | :albania: | `:albania:` | :armenia: | `:armenia:` | [top](#table-of-contents) |
++| [top](#flags) | :angola: | `:angola:` | :antarctica: | `:antarctica:` | [top](#table-of-contents) |
++| [top](#flags) | :argentina: | `:argentina:` | :american_samoa: | `:american_samoa:` | [top](#table-of-contents) |
++| [top](#flags) | :austria: | `:austria:` | :australia: | `:australia:` | [top](#table-of-contents) |
++| [top](#flags) | :aruba: | `:aruba:` | :aland_islands: | `:aland_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :azerbaijan: | `:azerbaijan:` | :bosnia_herzegovina: | `:bosnia_herzegovina:` | [top](#table-of-contents) |
++| [top](#flags) | :barbados: | `:barbados:` | :bangladesh: | `:bangladesh:` | [top](#table-of-contents) |
++| [top](#flags) | :belgium: | `:belgium:` | :burkina_faso: | `:burkina_faso:` | [top](#table-of-contents) |
++| [top](#flags) | :bulgaria: | `:bulgaria:` | :bahrain: | `:bahrain:` | [top](#table-of-contents) |
++| [top](#flags) | :burundi: | `:burundi:` | :benin: | `:benin:` | [top](#table-of-contents) |
++| [top](#flags) | :st_barthelemy: | `:st_barthelemy:` | :bermuda: | `:bermuda:` | [top](#table-of-contents) |
++| [top](#flags) | :brunei: | `:brunei:` | :bolivia: | `:bolivia:` | [top](#table-of-contents) |
++| [top](#flags) | :caribbean_netherlands: | `:caribbean_netherlands:` | :brazil: | `:brazil:` | [top](#table-of-contents) |
++| [top](#flags) | :bahamas: | `:bahamas:` | :bhutan: | `:bhutan:` | [top](#table-of-contents) |
++| [top](#flags) | :bouvet_island: | `:bouvet_island:` | :botswana: | `:botswana:` | [top](#table-of-contents) |
++| [top](#flags) | :belarus: | `:belarus:` | :belize: | `:belize:` | [top](#table-of-contents) |
++| [top](#flags) | :canada: | `:canada:` | :cocos_islands: | `:cocos_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :congo_kinshasa: | `:congo_kinshasa:` | :central_african_republic: | `:central_african_republic:` | [top](#table-of-contents) |
++| [top](#flags) | :congo_brazzaville: | `:congo_brazzaville:` | :switzerland: | `:switzerland:` | [top](#table-of-contents) |
++| [top](#flags) | :cote_divoire: | `:cote_divoire:` | :cook_islands: | `:cook_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :chile: | `:chile:` | :cameroon: | `:cameroon:` | [top](#table-of-contents) |
++| [top](#flags) | :cn: | `:cn:` | :colombia: | `:colombia:` | [top](#table-of-contents) |
++| [top](#flags) | :clipperton_island: | `:clipperton_island:` | :costa_rica: | `:costa_rica:` | [top](#table-of-contents) |
++| [top](#flags) | :cuba: | `:cuba:` | :cape_verde: | `:cape_verde:` | [top](#table-of-contents) |
++| [top](#flags) | :curacao: | `:curacao:` | :christmas_island: | `:christmas_island:` | [top](#table-of-contents) |
++| [top](#flags) | :cyprus: | `:cyprus:` | :czech_republic: | `:czech_republic:` | [top](#table-of-contents) |
++| [top](#flags) | :de: | `:de:` | :diego_garcia: | `:diego_garcia:` | [top](#table-of-contents) |
++| [top](#flags) | :djibouti: | `:djibouti:` | :denmark: | `:denmark:` | [top](#table-of-contents) |
++| [top](#flags) | :dominica: | `:dominica:` | :dominican_republic: | `:dominican_republic:` | [top](#table-of-contents) |
++| [top](#flags) | :algeria: | `:algeria:` | :ceuta_melilla: | `:ceuta_melilla:` | [top](#table-of-contents) |
++| [top](#flags) | :ecuador: | `:ecuador:` | :estonia: | `:estonia:` | [top](#table-of-contents) |
++| [top](#flags) | :egypt: | `:egypt:` | :western_sahara: | `:western_sahara:` | [top](#table-of-contents) |
++| [top](#flags) | :eritrea: | `:eritrea:` | :es: | `:es:` | [top](#table-of-contents) |
++| [top](#flags) | :ethiopia: | `:ethiopia:` | :eu: | `:eu:` <br /> `:european_union:` | [top](#table-of-contents) |
++| [top](#flags) | :finland: | `:finland:` | :fiji: | `:fiji:` | [top](#table-of-contents) |
++| [top](#flags) | :falkland_islands: | `:falkland_islands:` | :micronesia: | `:micronesia:` | [top](#table-of-contents) |
++| [top](#flags) | :faroe_islands: | `:faroe_islands:` | :fr: | `:fr:` | [top](#table-of-contents) |
++| [top](#flags) | :gabon: | `:gabon:` | :gb: | `:gb:` <br /> `:uk:` | [top](#table-of-contents) |
++| [top](#flags) | :grenada: | `:grenada:` | :georgia: | `:georgia:` | [top](#table-of-contents) |
++| [top](#flags) | :french_guiana: | `:french_guiana:` | :guernsey: | `:guernsey:` | [top](#table-of-contents) |
++| [top](#flags) | :ghana: | `:ghana:` | :gibraltar: | `:gibraltar:` | [top](#table-of-contents) |
++| [top](#flags) | :greenland: | `:greenland:` | :gambia: | `:gambia:` | [top](#table-of-contents) |
++| [top](#flags) | :guinea: | `:guinea:` | :guadeloupe: | `:guadeloupe:` | [top](#table-of-contents) |
++| [top](#flags) | :equatorial_guinea: | `:equatorial_guinea:` | :greece: | `:greece:` | [top](#table-of-contents) |
++| [top](#flags) | :south_georgia_south_sandwich_islands: | `:south_georgia_south_sandwich_islands:` | :guatemala: | `:guatemala:` | [top](#table-of-contents) |
++| [top](#flags) | :guam: | `:guam:` | :guinea_bissau: | `:guinea_bissau:` | [top](#table-of-contents) |
++| [top](#flags) | :guyana: | `:guyana:` | :hong_kong: | `:hong_kong:` | [top](#table-of-contents) |
++| [top](#flags) | :heard_mcdonald_islands: | `:heard_mcdonald_islands:` | :honduras: | `:honduras:` | [top](#table-of-contents) |
++| [top](#flags) | :croatia: | `:croatia:` | :haiti: | `:haiti:` | [top](#table-of-contents) |
++| [top](#flags) | :hungary: | `:hungary:` | :canary_islands: | `:canary_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :indonesia: | `:indonesia:` | :ireland: | `:ireland:` | [top](#table-of-contents) |
++| [top](#flags) | :israel: | `:israel:` | :isle_of_man: | `:isle_of_man:` | [top](#table-of-contents) |
++| [top](#flags) | :india: | `:india:` | :british_indian_ocean_territory: | `:british_indian_ocean_territory:` | [top](#table-of-contents) |
++| [top](#flags) | :iraq: | `:iraq:` | :iran: | `:iran:` | [top](#table-of-contents) |
++| [top](#flags) | :iceland: | `:iceland:` | :it: | `:it:` | [top](#table-of-contents) |
++| [top](#flags) | :jersey: | `:jersey:` | :jamaica: | `:jamaica:` | [top](#table-of-contents) |
++| [top](#flags) | :jordan: | `:jordan:` | :jp: | `:jp:` | [top](#table-of-contents) |
++| [top](#flags) | :kenya: | `:kenya:` | :kyrgyzstan: | `:kyrgyzstan:` | [top](#table-of-contents) |
++| [top](#flags) | :cambodia: | `:cambodia:` | :kiribati: | `:kiribati:` | [top](#table-of-contents) |
++| [top](#flags) | :comoros: | `:comoros:` | :st_kitts_nevis: | `:st_kitts_nevis:` | [top](#table-of-contents) |
++| [top](#flags) | :north_korea: | `:north_korea:` | :kr: | `:kr:` | [top](#table-of-contents) |
++| [top](#flags) | :kuwait: | `:kuwait:` | :cayman_islands: | `:cayman_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :kazakhstan: | `:kazakhstan:` | :laos: | `:laos:` | [top](#table-of-contents) |
++| [top](#flags) | :lebanon: | `:lebanon:` | :st_lucia: | `:st_lucia:` | [top](#table-of-contents) |
++| [top](#flags) | :liechtenstein: | `:liechtenstein:` | :sri_lanka: | `:sri_lanka:` | [top](#table-of-contents) |
++| [top](#flags) | :liberia: | `:liberia:` | :lesotho: | `:lesotho:` | [top](#table-of-contents) |
++| [top](#flags) | :lithuania: | `:lithuania:` | :luxembourg: | `:luxembourg:` | [top](#table-of-contents) |
++| [top](#flags) | :latvia: | `:latvia:` | :libya: | `:libya:` | [top](#table-of-contents) |
++| [top](#flags) | :morocco: | `:morocco:` | :monaco: | `:monaco:` | [top](#table-of-contents) |
++| [top](#flags) | :moldova: | `:moldova:` | :montenegro: | `:montenegro:` | [top](#table-of-contents) |
++| [top](#flags) | :st_martin: | `:st_martin:` | :madagascar: | `:madagascar:` | [top](#table-of-contents) |
++| [top](#flags) | :marshall_islands: | `:marshall_islands:` | :macedonia: | `:macedonia:` | [top](#table-of-contents) |
++| [top](#flags) | :mali: | `:mali:` | :myanmar: | `:myanmar:` | [top](#table-of-contents) |
++| [top](#flags) | :mongolia: | `:mongolia:` | :macau: | `:macau:` | [top](#table-of-contents) |
++| [top](#flags) | :northern_mariana_islands: | `:northern_mariana_islands:` | :martinique: | `:martinique:` | [top](#table-of-contents) |
++| [top](#flags) | :mauritania: | `:mauritania:` | :montserrat: | `:montserrat:` | [top](#table-of-contents) |
++| [top](#flags) | :malta: | `:malta:` | :mauritius: | `:mauritius:` | [top](#table-of-contents) |
++| [top](#flags) | :maldives: | `:maldives:` | :malawi: | `:malawi:` | [top](#table-of-contents) |
++| [top](#flags) | :mexico: | `:mexico:` | :malaysia: | `:malaysia:` | [top](#table-of-contents) |
++| [top](#flags) | :mozambique: | `:mozambique:` | :namibia: | `:namibia:` | [top](#table-of-contents) |
++| [top](#flags) | :new_caledonia: | `:new_caledonia:` | :niger: | `:niger:` | [top](#table-of-contents) |
++| [top](#flags) | :norfolk_island: | `:norfolk_island:` | :nigeria: | `:nigeria:` | [top](#table-of-contents) |
++| [top](#flags) | :nicaragua: | `:nicaragua:` | :netherlands: | `:netherlands:` | [top](#table-of-contents) |
++| [top](#flags) | :norway: | `:norway:` | :nepal: | `:nepal:` | [top](#table-of-contents) |
++| [top](#flags) | :nauru: | `:nauru:` | :niue: | `:niue:` | [top](#table-of-contents) |
++| [top](#flags) | :new_zealand: | `:new_zealand:` | :oman: | `:oman:` | [top](#table-of-contents) |
++| [top](#flags) | :panama: | `:panama:` | :peru: | `:peru:` | [top](#table-of-contents) |
++| [top](#flags) | :french_polynesia: | `:french_polynesia:` | :papua_new_guinea: | `:papua_new_guinea:` | [top](#table-of-contents) |
++| [top](#flags) | :philippines: | `:philippines:` | :pakistan: | `:pakistan:` | [top](#table-of-contents) |
++| [top](#flags) | :poland: | `:poland:` | :st_pierre_miquelon: | `:st_pierre_miquelon:` | [top](#table-of-contents) |
++| [top](#flags) | :pitcairn_islands: | `:pitcairn_islands:` | :puerto_rico: | `:puerto_rico:` | [top](#table-of-contents) |
++| [top](#flags) | :palestinian_territories: | `:palestinian_territories:` | :portugal: | `:portugal:` | [top](#table-of-contents) |
++| [top](#flags) | :palau: | `:palau:` | :paraguay: | `:paraguay:` | [top](#table-of-contents) |
++| [top](#flags) | :qatar: | `:qatar:` | :reunion: | `:reunion:` | [top](#table-of-contents) |
++| [top](#flags) | :romania: | `:romania:` | :serbia: | `:serbia:` | [top](#table-of-contents) |
++| [top](#flags) | :ru: | `:ru:` | :rwanda: | `:rwanda:` | [top](#table-of-contents) |
++| [top](#flags) | :saudi_arabia: | `:saudi_arabia:` | :solomon_islands: | `:solomon_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :seychelles: | `:seychelles:` | :sudan: | `:sudan:` | [top](#table-of-contents) |
++| [top](#flags) | :sweden: | `:sweden:` | :singapore: | `:singapore:` | [top](#table-of-contents) |
++| [top](#flags) | :st_helena: | `:st_helena:` | :slovenia: | `:slovenia:` | [top](#table-of-contents) |
++| [top](#flags) | :svalbard_jan_mayen: | `:svalbard_jan_mayen:` | :slovakia: | `:slovakia:` | [top](#table-of-contents) |
++| [top](#flags) | :sierra_leone: | `:sierra_leone:` | :san_marino: | `:san_marino:` | [top](#table-of-contents) |
++| [top](#flags) | :senegal: | `:senegal:` | :somalia: | `:somalia:` | [top](#table-of-contents) |
++| [top](#flags) | :suriname: | `:suriname:` | :south_sudan: | `:south_sudan:` | [top](#table-of-contents) |
++| [top](#flags) | :sao_tome_principe: | `:sao_tome_principe:` | :el_salvador: | `:el_salvador:` | [top](#table-of-contents) |
++| [top](#flags) | :sint_maarten: | `:sint_maarten:` | :syria: | `:syria:` | [top](#table-of-contents) |
++| [top](#flags) | :swaziland: | `:swaziland:` | :tristan_da_cunha: | `:tristan_da_cunha:` | [top](#table-of-contents) |
++| [top](#flags) | :turks_caicos_islands: | `:turks_caicos_islands:` | :chad: | `:chad:` | [top](#table-of-contents) |
++| [top](#flags) | :french_southern_territories: | `:french_southern_territories:` | :togo: | `:togo:` | [top](#table-of-contents) |
++| [top](#flags) | :thailand: | `:thailand:` | :tajikistan: | `:tajikistan:` | [top](#table-of-contents) |
++| [top](#flags) | :tokelau: | `:tokelau:` | :timor_leste: | `:timor_leste:` | [top](#table-of-contents) |
++| [top](#flags) | :turkmenistan: | `:turkmenistan:` | :tunisia: | `:tunisia:` | [top](#table-of-contents) |
++| [top](#flags) | :tonga: | `:tonga:` | :tr: | `:tr:` | [top](#table-of-contents) |
++| [top](#flags) | :trinidad_tobago: | `:trinidad_tobago:` | :tuvalu: | `:tuvalu:` | [top](#table-of-contents) |
++| [top](#flags) | :taiwan: | `:taiwan:` | :tanzania: | `:tanzania:` | [top](#table-of-contents) |
++| [top](#flags) | :ukraine: | `:ukraine:` | :uganda: | `:uganda:` | [top](#table-of-contents) |
++| [top](#flags) | :us_outlying_islands: | `:us_outlying_islands:` | :united_nations: | `:united_nations:` | [top](#table-of-contents) |
++| [top](#flags) | :us: | `:us:` | :uruguay: | `:uruguay:` | [top](#table-of-contents) |
++| [top](#flags) | :uzbekistan: | `:uzbekistan:` | :vatican_city: | `:vatican_city:` | [top](#table-of-contents) |
++| [top](#flags) | :st_vincent_grenadines: | `:st_vincent_grenadines:` | :venezuela: | `:venezuela:` | [top](#table-of-contents) |
++| [top](#flags) | :british_virgin_islands: | `:british_virgin_islands:` | :us_virgin_islands: | `:us_virgin_islands:` | [top](#table-of-contents) |
++| [top](#flags) | :vietnam: | `:vietnam:` | :vanuatu: | `:vanuatu:` | [top](#table-of-contents) |
++| [top](#flags) | :wallis_futuna: | `:wallis_futuna:` | :samoa: | `:samoa:` | [top](#table-of-contents) |
++| [top](#flags) | :kosovo: | `:kosovo:` | :yemen: | `:yemen:` | [top](#table-of-contents) |
++| [top](#flags) | :mayotte: | `:mayotte:` | :south_africa: | `:south_africa:` | [top](#table-of-contents) |
++| [top](#flags) | :zambia: | `:zambia:` | :zimbabwe: | `:zimbabwe:` | [top](#table-of-contents) |
+
+### Subdivision Flag
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
- | [top](#github-custom-emoji) | :accessibility: | `:accessibility:` | :atom: | `:atom:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :basecamp: | `:basecamp:` | :basecampy: | `:basecampy:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :bowtie: | `:bowtie:` | :dependabot: | `:dependabot:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :electron: | `:electron:` | :feelsgood: | `:feelsgood:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :finnadie: | `:finnadie:` | :fishsticks: | `:fishsticks:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :goberserk: | `:goberserk:` | :godmode: | `:godmode:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :hurtrealbad: | `:hurtrealbad:` | :neckbeard: | `:neckbeard:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :octocat: | `:octocat:` | :rage1: | `:rage1:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :rage2: | `:rage2:` | :rage3: | `:rage3:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :rage4: | `:rage4:` | :shipit: | `:shipit:` | [top](#introduction) |
- | [top](#github-custom-emoji) | :suspect: | `:suspect:` | :trollface: | `:trollface:` | [top](#introduction) |
++| [top](#flags) | :england: | `:england:` | :scotland: | `:scotland:` | [top](#table-of-contents) |
++| [top](#flags) | :wales: | `:wales:` | | | [top](#table-of-contents) |
+
+## GitHub Custom Emoji
+
+| | ico | shortcode | ico | shortcode | |
+| - | :-: | - | :-: | - | - |
++| [top](#github-custom-emoji) | :accessibility: | `:accessibility:` | :atom: | `:atom:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :basecamp: | `:basecamp:` | :basecampy: | `:basecampy:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :bowtie: | `:bowtie:` | :dependabot: | `:dependabot:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :electron: | `:electron:` | :feelsgood: | `:feelsgood:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :finnadie: | `:finnadie:` | :fishsticks: | `:fishsticks:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :goberserk: | `:goberserk:` | :godmode: | `:godmode:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :hurtrealbad: | `:hurtrealbad:` | :neckbeard: | `:neckbeard:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :octocat: | `:octocat:` | :rage1: | `:rage1:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :rage2: | `:rage2:` | :rage3: | `:rage3:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :rage4: | `:rage4:` | :shipit: | `:shipit:` | [top](#table-of-contents) |
++| [top](#github-custom-emoji) | :suspect: | `:suspect:` | :trollface: | `:trollface:` | [top](#table-of-contents) |
--- /dev/null
+---
+title: Page collections
+description: A quick reference guide to Hugo's page collections.
+categories: [quick reference]
+keywords: []
+menu:
+ docs:
+ parent: quick-reference
+ weight: 50
+weight: 50
+toc: true
+---
+
+## Page
+
+Use these `Page` methods when rendering lists on [section] pages, [taxonomy] pages, [term] pages, and the home page.
+
+[section]: /getting-started/glossary/#section
+[taxonomy]: /getting-started/glossary/#taxonomy
+[term]: /getting-started/glossary/#term
+
+{{< list-pages-in-section path=/methods/page filter=methods_page_page_collections filterType=include omitElementIDs=true titlePrefix=PAGE. >}}
+
+## Site
+
+Use these `Site` methods when rendering lists on any page.
+
+{{< list-pages-in-section path=/methods/site filter=methods_site_page_collections filterType=include omitElementIDs=true titlePrefix=SITE. >}}
+
+## Filter
+
+Use the [`where`] function to filter page collections.
+
+[`where`]: /functions/collections/where/
+
+## Sort
+
++By default, Hugo sorts page collections by:
++
++1. [Weight]
++2. [Date] in descending order
++3. [LinkTitle] falling back to [Title]
++4. [Filename] if the page is backed by a file
++
++[Date]: /methods/page/date/
++[Weight]: /methods/page/weight/
++[LinkTitle]: /methods/page/linktitle/
++[Title]: /methods/page/title/
++[Filename]: /methods/page/file/#filename
++
+Use these methods to sort page collections.
+
+{{< list-pages-in-section path=/methods/pages filter=methods_pages_sort filterType=include titlePrefix=. omitElementIDs=true titlePrefix=PAGES. >}}
+
+## Group
+
+Use these methods to group page collections.
+
+{{< list-pages-in-section path=/methods/pages filter=methods_pages_group filterType=include titlePrefix=. omitElementIDs=true titlePrefix=PAGES. >}}
--- /dev/null
- <figcaption>{{ .Title }}</figcaption>
+---
+title: Image render hooks
+linkTitle: Images
+description: Create an image render to hook override the rendering of Markdown images to HTML.
+categories: [render hooks]
+keywords: []
+menu:
+ docs:
+ parent: render-hooks
+ weight: 50
+weight: 50
+toc: true
+---
+
+## Markdown
+
+A Markdown image has three components: the image description, the image destination, and optionally the image title.
+
+```text
+
+ ------------ ------------------ ---------
+ description destination title
+```
+
+These components are passed into the render hook [context] as shown below.
+
+[context]: /getting-started/glossary/#context
+
+## Context
+
+Image render hook templates receive the following context:
+
+###### Attributes
+
+(`map`) The Markdown attributes, available if you configure your site as follows:
+
+{{< code-toggle file=hugo >}}
+[markup.goldmark.parser]
+wrapStandAloneImageWithinParagraph = false
+[markup.goldmark.parser.attribute]
+block = true
+{{< /code-toggle >}}
+
+###### Destination
+
+(`string`) The image destination.
+
+###### IsBlock
+
+(`bool`) Returns true if a standalone image is not wrapped within a paragraph element.
+
+###### Ordinal
+
+(`int`) The zero-based ordinal of the image on the page.
+
+###### Page
+
+(`page`) A reference to the current page.
+
+###### PageInner
+
+{{< new-in 0.125.0 >}}
+
+(`page`) A reference to a page nested via the [`RenderShortcodes`] method. [See details](#pageinner-details).
+
+[`RenderShortcodes`]: /methods/page/rendershortcodes
+
+###### PlainText
+
+(`string`) The image description as plain text.
+
+###### Text
+
+(`string`) The image description.
+
+###### Title
+
+(`string`) The image title.
+
+## Examples
+
+{{% note %}}
+With inline elements such as images and links, remove leading and trailing whitespace using the `{{‑ ‑}}` delimiter notation to prevent whitespace between adjacent inline elements and text.
+{{% /note %}}
+
+In its default configuration, Hugo renders Markdown images according to the [CommonMark specification]. To create a render hook that does the same thing:
+
+[CommonMark specification]: https://spec.commonmark.org/current/
+
+{{< code file=layouts/_default/_markup/render-image.html copy=true >}}
+<img src="{{ .Destination | safeURL }}"
+ {{- with .Text }} alt="{{ . }}"{{ end -}}
+ {{- with .Title }} title="{{ . }}"{{ end -}}
+>
+{{- /* chomp trailing newline */ -}}
+{{< /code >}}
+
+To render standalone images within `figure` elements:
+
+{{< code file=layouts/_default/_markup/render-image.html copy=true >}}
+{{- if .IsBlock -}}
+ <figure>
+ <img src="{{ .Destination | safeURL }}"
+ {{- with .Text }} alt="{{ . }}"{{ end -}}
+ >
++ {{- with .Title }}<figcaption>{{ . }}</figcaption>{{ end -}}
+ </figure>
+{{- else -}}
+ <img src="{{ .Destination | safeURL }}"
+ {{- with .Text }} alt="{{ . }}"{{ end -}}
+ {{- with .Title }} title="{{ . }}"{{ end -}}
+ >
+{{- end -}}
+{{< /code >}}
+
+Note that the above requires the following site configuration:
+
+{{< code-toggle file=hugo >}}
+[markup.goldmark.parser]
+wrapStandAloneImageWithinParagraph = false
+{{< /code-toggle >}}
+
+## Default
+
+{{< new-in 0.123.0 >}}
+
+Hugo includes an [embedded image render hook] to resolve Markdown image destinations. Disabled by default, you can enable it in your site configuration:
+
+[embedded image render hook]: {{% eturl render-image %}}
+
+{{< code-toggle file=hugo >}}
+[markup.goldmark.renderHooks.image]
+enableDefault = true
+{{< /code-toggle >}}
+
+A custom render hook, even when provided by a theme or module, will override the embedded render hook regardless of the configuration setting above.
+
+{{% note %}}
+The embedded image render hook is automatically enabled for multilingual single-host sites if [duplication of shared page resources] is disabled. This is the default configuration for multilingual single-host sites.
+
+[duplication of shared page resources]: /getting-started/configuration-markup/#duplicateresourcefiles
+{{% /note %}}
+
+The embedded image render hook resolves internal Markdown destinations by looking for a matching [page resource], falling back to a matching [global resource]. Remote destinations are passed through, and the render hook will not throw an error or warning if it is unable to resolve a destination.
+
+[page resource]: /getting-started/glossary/#page-resource
+[global resource]: /getting-started/glossary/#global-resource
+
+You must place global resources in the assets directory. If you have placed your resources in the static directory, and you are unable or unwilling to move them, you must mount the static directory to the assets directory by including both of these entries in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[[module.mounts]]
+source = 'assets'
+target = 'assets'
+
+[[module.mounts]]
+source = 'static'
+target = 'assets'
+{{< /code-toggle >}}
+
+Note that the embedded image render hook does not perform image processing. Its sole purpose is to resolve Markdown image destinations.
+
+{{% include "/render-hooks/_common/pageinner.md" %}}
--- /dev/null
- │ └── render-link.text.txt
+---
+title: Introduction
+description: An introduction to Hugo's render hooks.
+categories: [render hooks]
+keywords: []
+menu:
+ docs:
+ identifier: render-hooks-introduction
+ parent: render-hooks
+ weight: 20
+weight: 20
+---
+
+When rendering Markdown to HTML, render hooks override the conversion. Each render hook is a template, with one template for each supported element type:
+
+- [Code blocks](/render-hooks/code-blocks)
+- [Headings](/render-hooks/headings)
+- [Images](/render-hooks/images)
+- [Links](/render-hooks/links)
+
+{{% note %}}
+Hugo supports multiple [content formats] including Markdown, HTML, AsciiDoc, Emacs Org Mode, Pandoc, and reStructuredText.
+
+The render hook capability is limited to Markdown. You cannot create render hooks for the other content formats.
+
+[content formats]: /content-management/formats/
+{{% /note %}}
+
+For example, consider this Markdown:
+
+```text
+[Hugo](https://gohugo.io)
+
+
+```
+
+Without link or image render hooks, this example above is rendered to:
+
+```html
+<p><a href="https://gohugo.io">Hugo</a></p>
+<p><img alt="kitten" src="kitten.jpg"></p>
+```
+
+By creating link and image render hooks, you can alter the conversion from Markdown to HTML. For example:
+
+```html
+<p><a href="https://gohugo.io" rel="external">Hugo</a></p>
+<p><img alt="kitten" src="kitten.jpg" width="600" height="400"></p>
+```
+
+Each render hook is a template, with one template for each supported element type:
+
+```text
+layouts/
+└── _default/
+ └── _markup/
+ ├── render-codeblock.html
+ ├── render-heading.html
+ ├── render-image.html
+ └── render-link.html
+```
+
+The template lookup order allows you to create different render hooks for each page [type], [kind], language, and [output format]. For example:
+
+```text
+layouts/
+├── _default/
+│ └── _markup/
+│ ├── render-link.html
- │ └── render-link.text.txt
++│ └── render-link.rss.xml
+├── books/
+│ └── _markup/
+│ ├── render-link.html
- └── render-link.text.txt
++│ └── render-link.rss.xml
+└── films/
+ └── _markup/
+ ├── render-link.html
++ └── render-link.rss.xml
+```
+
+[kind]: /getting-started/glossary/#page-kind
+[output format]: /getting-started/glossary/#output-format
+[type]: /getting-started/glossary/#content-type
+
+The remaining pages in this section describe each type of render hook, including examples and the context received by each template.
--- /dev/null
--- /dev/null
++---
++title: Showcases
++draft: true
++---
--- /dev/null
- linkTitle: 404 template
+---
+title: Custom 404 page
- keywords: ['404',page not found]
++linkTitle: 404 templates
+description: Create a template to render a 404 error page.
+categories: [templates]
- weight: 220
- weight: 220
++keywords: []
+menu:
+ docs:
+ parent: templates
- Caddy|See [deatils](https://caddyserver.com/docs/caddyfile/directives/handle_errors).
++ weight: 160
++weight: 160
+---
+
+To render a 404 error page in the root of your site, create a 404 template in the root of the layouts directory. For example:
+
+{{< code file=layouts/404.html >}}
+{{ define "main" }}
+ <h1>404 Not Found</h1>
+ <p>The page you requested cannot be found.</p>
+ <p>
+ <a href="{{ .Site.Home.RelPermalink }}">
+ Return to the home page
+ </a>
+ </p>
+{{ end }}
+{{< /code >}}
+
+For multilingual sites, add the language key to the file name:
+
+```text
+layouts/
+├── 404.de.html
+├── 404.en.html
+└── 404.fr.html
+```
+
+Your production server redirects the browser to the 404 page when a page is not found. Capabilities and configuration vary by host.
+
+Host|Capabilities and configuration
+:--|:--
+Amazon CloudFront|See [details](https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/GeneratingCustomErrorResponses.html).
+Amazon S3|See [details](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CustomErrorDocSupport.html).
+Apache|See [details](https://httpd.apache.org/docs/2.4/custom-error.html).
+Azure Static Web Apps|See [details](https://learn.microsoft.com/en-us/azure/static-web-apps/configuration#response-overrides).
+Azure Storage|See [details](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blob-static-website#setting-up-a-static-website).
++Caddy|See [details](https://caddyserver.com/docs/caddyfile/directives/handle_errors).
+Cloudflare Pages|See [details](https://developers.cloudflare.com/pages/configuration/serving-pages/#not-found-behavior).
+DigitalOcean App Platform|See [details](https://docs.digitalocean.com/products/app-platform/how-to/manage-static-sites/#configure-a-static-site).
+Firebase|See [details](https://firebase.google.com/docs/hosting/full-config#404).
+GitHub Pages|Redirection to is automatic and not configurable.
+GitLab Pages|See [details](https://docs.gitlab.com/ee/user/project/pages/introduction.html#custom-error-codes-pages).
+NGINX|See [details](https://nginx.org/en/docs/http/ngx_http_core_module.html#error_page).
+Netlify|See [details](https://docs.netlify.com/routing/redirects/redirect-options/).
--- /dev/null
--- /dev/null
++---
++cascade:
++ _build:
++ list: never
++ publishResources: false
++ render: never
++---
++
++<!--
++Files within this headless branch bundle are Markdown snippets. Each file must contain front matter delimiters, though front matter fields are not required.
++
++Include the rendered content using the "include" shortcode.
++-->
--- /dev/null
--- /dev/null
++---
++# Do not remove front matter.
++---
++
++{{% note %}}
++The [page collections quick reference guide] describes methods and functions to filter, sort, and group page collections.
++
++[page collections quick reference guide]: /quick-reference/page-collections/
++{{% /note %}}
--- /dev/null
- title: Base templates and blocks
- description: The base and block constructs allow you to define the outer shell of your master templates (i.e., the chrome of the page).
+---
- keywords: [blocks,base]
++title: Base templates
++description: The base and block construct allows you to define the outer shell of your master templates (i.e., the chrome of the page).
+categories: [templates,fundamentals]
- weight: 40
- weight: 40
++keywords: []
+menu:
+ docs:
+ parent: templates
- From the above base template, you can define a [default list template][hugolists]. The default list template will inherit all of the code defined above and can then implement its own `"main"` block from:
++ weight: 50
++weight: 50
+toc: true
+aliases: [/templates/blocks/,/templates/base-templates-and-blocks/]
+---
+
+The `block` keyword allows you to define the outer shell of your pages' one or more master template(s) and then fill in or override portions as necessary.
+
+{{< youtube QVOMCYitLEc >}}
+
+## Base template lookup order
+
+The base template lookup order closely follows that of the template it applies to (e.g. `_default/list.html`).
+
+See [Template Lookup Order](/templates/lookup-order/) for details and examples.
+
+## Define the base template
+
+The following defines a simple base template at `_default/baseof.html`. As a default template, it is the shell from which all your pages will be rendered unless you specify another `*baseof.html` closer to the beginning of the lookup order.
+
+{{< code file=layouts/_default/baseof.html >}}
+<!DOCTYPE html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <title>{{ block "title" . }}
+ <!-- Blocks may include default content. -->
+ {{ .Site.Title }}
+ {{ end }}</title>
+ </head>
+ <body>
+ <!-- Code that all your templates share, like a header -->
+ {{ block "main" . }}
+ <!-- The part of the page that begins to differ between templates -->
+ {{ end }}
+ {{ block "footer" . }}
+ <!-- More shared code, perhaps a footer but that can be overridden if need be in -->
+ {{ end }}
+ </body>
+</html>
+{{< /code >}}
+
+## Override the base template
+
- The following shows how you can override both the `"main"` and `"title"` block areas from the base template with code unique to your [default single page template][singletemplate]:
++The default list template will inherit all of the code defined above and can then implement its own `"main"` block from:
+
+{{< code file=layouts/_default/list.html >}}
+{{ define "main" }}
+ <h1>Posts</h1>
+ {{ range .Pages }}
+ <article>
+ <h2>{{ .Title }}</h2>
+ {{ .Content }}
+ </article>
+ {{ end }}
+{{ end }}
+{{< /code >}}
+
+This replaces the contents of our (basically empty) "main" block with something useful for the list template. In this case, we didn't define a `"title"` block, so the contents from our base template remain unchanged in lists.
+
+{{% note %}}
+Code that you put outside the block definitions *can* break your layout. This even includes HTML comments. For example:
+
+```go-html-template
+<!-- Seemingly harmless HTML comment..that will break your layout at build -->
+{{ define "main" }}
+...your code here
+{{ end }}
+```
+[See this thread from the Hugo discussion forums.](https://discourse.gohugo.io/t/baseof-html-block-templates-and-list-types-results-in-empty-pages/5612/6)
+{{% /note %}}
+
- [hugolists]: /templates/lists/
- [lookup]: /templates/lookup-order/
- [rendering the section]: /templates/section-templates/
- [singletemplate]: /templates/single-page-templates/
++The following shows how you can override both the `"main"` and `"title"` block areas from the base template with code unique to your default [single template]:
+
+{{< code file=layouts/_default/single.html >}}
+{{ define "title" }}
+ <!-- This will override the default value set in baseof.html; i.e., "{{ .Site.Title }}" in the original example-->
+ {{ .Title }} – {{ .Site.Title }}
+{{ end }}
+{{ define "main" }}
+ <h1>{{ .Title }}</h1>
+ {{ .Content }}
+{{ end }}
+{{< /code >}}
+
++[single template]: /templates/types/#single
--- /dev/null
--- /dev/null
++---
++title: Content view templates
++description: Hugo can render alternative views of your content, useful in list and summary views.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 120
++weight: 120
++toc: true
++aliases: [/templates/views/]
++---
++
++The following are common use cases for content views:
++
++* You want content of every type to be shown on the home page but only with limited [summary views][summaries].
++* You only want a bulleted list of your content in a [taxonomy template]. Views make this very straightforward by delegating the rendering of each different type of content to the content itself.
++
++## Create a content view
++
++To create a new view, create a template in each of your different content type directories with the view name. The following example contains an "li" view and a "summary" view for the `posts` and `project` content types. As you can see, these sit next to the [single template], `single.html`. You can even provide a specific view for a given type and continue to use the `_default/single.html` for the primary view.
++
++```txt
++ ▾ layouts/
++ ▾ posts/
++ li.html
++ single.html
++ summary.html
++ ▾ project/
++ li.html
++ single.html
++ summary.html
++```
++
++## Which template will be rendered?
++
++The following is the lookup order for content views ordered by specificity.
++
++1. `/layouts/<TYPE>/<VIEW>.html`
++1. `/layouts/<SECTION>/<VIEW>.html`
++1. `/layouts/_default/<VIEW>.html`
++1. `/themes/<THEME>/layouts/<TYPE>/<VIEW>.html`
++1. `/themes/<THEME>/layouts/<SECTION>/<VIEW>.html`
++1. `/themes/<THEME>/layouts/_default/<VIEW>.html`
++
++## Example: content view inside a list
++
++### `list.html`
++
++In this example, `.Render` is passed into the template to call the [render function][render]. `.Render` is a special function that instructs content to render itself with the view template provided as the first argument. In this case, the template is going to render the `summary.html` view that follows:
++
++{{< code file=layouts/_default/list.html >}}
++<main id="main">
++ <div>
++ <h1 id="title">{{ .Title }}</h1>
++ {{ range .Pages }}
++ {{ .Render "summary" }}
++ {{ end }}
++ </div>
++</main>
++{{< /code >}}
++
++### `summary.html`
++
++Hugo passes the `Page` object to the following `summary.html` view template.
++
++{{< code file=layouts/_default/summary.html >}}
++<article class="post">
++ <header>
++ <h2><a href="{{ .RelPermalink }}">{{ .Title }}</a></h2>
++ <div class="post-meta">{{ .Date.Format "Mon, Jan 2, 2006" }} - {{ .FuzzyWordCount }} Words </div>
++ </header>
++ {{ .Summary }}
++ <footer>
++ <a href='{{ .RelPermalink }}'>Read more »</a>
++ </footer>
++</article>
++{{< /code >}}
++
++### `li.html`
++
++Continuing on the previous example, we can change our render function to use a smaller `li.html` view by changing the argument in the call to the `.Render` function (i.e., `{{ .Render "li" }}`).
++
++{{< code file=layouts/_default/li.html >}}
++<li>
++ <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a>
++ <div class="meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</div>
++</li>
++{{< /code >}}
++
++[render]: /methods/page/render/
++[single template]: /templates/types/#single
++[summaries]: /content-management/summaries/
++[taxonomy template]: /templates/types/#taxonomy
--- /dev/null
- keywords: [internal, analytics,]
+---
+title: Embedded templates
+description: Hugo provides embedded templates for common use cases.
+categories: [templates]
- weight: 190
- weight: 190
++keywords: []
+menu:
+ docs:
+ parent: templates
++ weight: 200
++weight: 200
+toc: true
+aliases: [/templates/internal]
+---
+
+## Disqus
+
+{{% note %}}
+To override Hugo's embedded Disqus template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
+`{{ partial "disqus.html" . }}`
+
+[`partial`]: /functions/partials/include/
+[source code]: {{% eturl disqus %}}
+{{% /note %}}
+
+Hugo includes an embedded template for [Disqus], a popular commenting system for both static and dynamic websites. To effectively use Disqus, secure a Disqus "shortname" by [signing up] for the free service.
+
+[Disqus]: https://disqus.com
+[signing up]: https://disqus.com/profile/signup/
+
+To include the embedded template:
+
+```go-html-template
+{{ template "_internal/disqus.html" . }}
+```
+
+### Configure Disqus
+
+To use Hugo's Disqus template, first set up a single configuration value:
+
+{{< code-toggle file="hugo" >}}
+[services.disqus]
+shortname = 'your-disqus-shortname'
+{{</ code-toggle >}}
+
+Hugo's Disqus template accesses this value with:
+
+```go-html-template
+{{ .Site.Config.Services.Disqus.Shortname }}
+```
+
+You can also set the following in the front matter for a given piece of content:
+
+- `disqus_identifier`
+- `disqus_title`
+- `disqus_url`
+
+## Google Analytics
+
+{{% note %}}
+To override Hugo's embedded Google Analytics template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
+`{{ partial "google_analytics.html" . }}`
+
+[`partial`]: /functions/partials/include/
+[source code]: {{% eturl google_analytics %}}
+{{% /note %}}
+
+Hugo includes an embedded template supporting [Google Analytics 4].
+
+[Google Analytics 4]: https://support.google.com/analytics/answer/10089681
+
+To include the embedded template:
+
+```go-html-template
+{{ template "_internal/google_analytics.html" . }}
+```
+
+### Configure Google Analytics
+
+Provide your tracking ID in your configuration file:
+
+{{< code-toggle file=hugo >}}
+[services.googleAnalytics]
+ID = "G-MEASUREMENT_ID"
+{{</ code-toggle >}}
+
+To use this value in your own template, access the configured ID with `{{ site.Config.Services.GoogleAnalytics.ID }}`.
+
+## Open Graph
+
+{{% note %}}
+To override Hugo's embedded Open Graph template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
+`{{ partial "opengraph.html" . }}`
+
+[`partial`]: /functions/partials/include/
+[source code]: {{% eturl opengraph %}}
+{{% /note %}}
+
+Hugo includes an embedded template for the [Open Graph protocol](https://ogp.me/), metadata that enables a page to become a rich object in a social graph.
+This format is used for Facebook and some other sites.
+
+To include the embedded template:
+
+```go-html-template
+{{ template "_internal/opengraph.html" . }}
+```
+
+### Configure Open Graph
+
+Hugo's Open Graph template is configured using a mix of configuration settings and [front matter](/content-management/front-matter/) on individual pages.
+
+{{< code-toggle file=hugo >}}
+[params]
+ description = 'Text about my cool site'
+ images = ['site-feature-image.jpg']
+ title = 'My cool site'
+ [params.social]
+ facebook_admin = 'jsmith'
+[taxonomies]
+ series = 'series'
+{{</ code-toggle >}}
+
+{{< code-toggle file=content/blog/my-post.md fm=true >}}
+title = "Post title"
+description = "Text about this post"
+date = 2024-03-08T08:18:11-08:00
+images = ["post-cover.png"]
+audio = []
+videos = []
+series = []
+tags = []
+{{</ code-toggle >}}
+
+Hugo uses the page title and description for the title and description metadata.
+The first 6 URLs from the `images` array are used for image metadata.
+If [page bundles](/content-management/page-bundles/) are used and the `images` array is empty or undefined, images with file names matching `*feature*` or `*cover*,*thumbnail*` are used for image metadata.
+
+Various optional metadata can also be set:
+
+- Date, published date, and last modified data are used to set the published time metadata if specified.
+- `audio` and `videos` are URL arrays like `images` for the audio and video metadata tags, respectively.
+- The first 6 `tags` on the page are used for the tags metadata.
+- The `series` taxonomy is used to specify related "see also" pages by placing them in the same series.
+
+If using YouTube this will produce a og:video tag like `<meta property="og:video" content="url">`. Use the `https://youtu.be/<id>` format with YouTube videos (example: `https://youtu.be/qtIqKaDlqXo`).
+
+## Schema
+
+{{% note %}}
+To override Hugo's embedded Schema template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
+`{{ partial "schema.html" . }}`
+
+[`partial`]: /functions/partials/include/
+[source code]: {{% eturl schema %}}
+{{% /note %}}
+
+Hugo includes an embedded template to render [microdata] `meta` elements within the `head` element of your templates.
+
+[microdata]: https://html.spec.whatwg.org/multipage/microdata.html#microdata
+
+To include the embedded template:
+
+```go-html-template
+{{ template "_internal/schema.html" . }}
+```
+
+## X (Twitter) Cards
+
+{{% note %}}
+To override Hugo's embedded Twitter Cards template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
+`{{ partial "twitter_cards.html" . }}`
+
+[`partial`]: /functions/partials/include/
+[source code]: {{% eturl twitter_cards %}}
+{{% /note %}}
+
+Hugo includes an embedded template for [X (Twitter) Cards](https://developer.x.com/en/docs/twitter-for-websites/cards/overview/abouts-cards),
+metadata used to attach rich media to Tweets linking to your site.
+
+To include the embedded template:
+
+```go-html-template
+{{ template "_internal/twitter_cards.html" . }}
+```
+
+### Configure X (Twitter) Cards
+
+Hugo's X (Twitter) Card template is configured using a mix of configuration settings and [front-matter](/content-management/front-matter/) values on individual pages.
+
+{{< code-toggle file=hugo >}}
+[params]
+ images = ["site-feature-image.jpg"]
+ description = "Text about my cool site"
+{{</ code-toggle >}}
+
+{{< code-toggle file=content/blog/my-post.md >}}
+title = "Post title"
+description = "Text about this post"
+images = ["post-cover.png"]
+{{</ code-toggle >}}
+
+If `images` aren't specified in the page front-matter, then hugo searches for [image page resources](/content-management/image-processing/) with `feature`, `cover`, or `thumbnail` in their name.
+If no image resources with those names are found, the images defined in the [site config](/getting-started/configuration/) are used instead.
+If no images are found at all, then an image-less Twitter `summary` card is used instead of `summary_large_image`.
+
+Hugo uses the page title and description for the card's title and description fields. The page summary is used if no description is given.
+
+Set the value of `twitter:site` in your site configuration:
+
+{{< code-toggle file="hugo" copy=false >}}
+[params.social]
+twitter = "GoHugoIO"
+{{</ code-toggle >}}
+
+NOTE: The `@` will be added for you
+
+```html
+<meta name="twitter:site" content="@GoHugoIO"/>
+```
--- /dev/null
--- /dev/null
++---
++title: Home templates
++description: The home page of a website is often formatted differently than the other pages. For this reason, Hugo makes it easy for you to define your new site's home page as a unique template.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 60
++weight: 60
++toc: true
++aliases: [/layout/homepage/,/templates/homepage-template/,/templates/homepage/]
++---
++
++The home template is the *only* required template for building a site and therefore useful when bootstrapping a new site and template. It is also the only required template if you are developing a single-page website.
++
++
++{{< youtube ut1xtRZ1QOA >}}
++
++## Home template lookup order
++
++See [Template Lookup](/templates/lookup-order/).
++
++## Add content and front matter to the home page
++
++The home page accepts content and front matter from an `_index.md` file. This file should live at the root of your `content` folder (i.e., `content/_index.md`). You can then add body copy and metadata to your home page the way you would any other content file.
++
++See the home template below or [Content Organization][contentorg] for more information on the role of `_index.md` in adding content and front matter to list pages.
++
++## Example home template
++
++{{< code file=layouts/_default/home.html >}}
++{{ define "main" }}
++ <main aria-role="main">
++ <header class="home-page-header">
++ <h1>{{ .Title }}</h1>
++ {{ with .Params.subtitle }}
++ <span class="subtitle">{{ . }}</span>
++ {{ end }}
++ </header>
++ <div class="home-page-content">
++ <!-- Note that the content for index.html, as a sort of list page, will pull from content/_index.md -->
++ {{ .Content }}
++ </div>
++ <div>
++ {{ range first 10 .Site.RegularPages }}
++ {{ .Render "summary" }}
++ {{ end }}
++ </div>
++ </main>
++{{ end }}
++{{< /code >}}
++
++[contentorg]: /content-management/organization/
++[lookup]: /templates/lookup-order/
--- /dev/null
- [partial templates]: /templates/partials
+---
+title: Introduction to templating
+linkTitle: Introduction
+description: Create templates to render your content, resources, and data.
+categories: [templates,fundamentals]
+keywords: []
+menu:
+ docs:
+ identifier: templates-introduction
+ parent: templates
+ weight: 20
+weight: 20
+toc: true
+---
+
+A template is a file in the layouts directory of a project, theme, or module. Templates use [variables] , [functions], and [methods] to transform your content, resources, and data into a published page.
+
+[functions]: /functions/
+[methods]: /methods/
+[variables]: #variables
+
+{{% note %}}
+Hugo uses Go's [text/template] and [html/template] packages.
+
+The text/template package implements data-driven templates for generating textual output, while the html/template package implements data-driven templates for generating HTML output safe against code injection.
+
+By default, Hugo uses the html/template package when rendering HTML files.
+
+[text/template]: https://pkg.go.dev/text/template
+[html/template]: https://pkg.go.dev/html/template
+{{% /note %}}
+
+For example, this HTML template initializes the `$v1` and `$v2` variables, then displays them and their product within an HTML paragraph.
+
+```go-html-template
+{{ $v1 := 6 }}
+{{ $v2 := 7 }}
+<p>The product of {{ $v1 }} and {{ $v2 }} is {{ mul $v1 $v2 }}.</p>
+```
+
+While HTML templates are the most common, you can create templates for any [output format] including CSV, JSON, RSS, and plain text.
+
+[output format]: /templates/output-formats/
+
+## Context
+
+The most important concept to understand before creating a template is _context_, the data passed into each template. The data may be a simple value, or more commonly [objects] and associated [methods].
+
+[objects]: /getting-started/glossary/#object
+[methods]: /getting-started/glossary/#method
+
+For example, a template for a single page receives a `Page` object, and the `Page` object provides methods to return values or perform actions.
+
+### Current context
+
+Within a template, the dot (`.`) represents the current context.
+
+{{< code file=layouts/_default/single.html >}}
+<h2>{{ .Title }}</h2>
+{{< /code >}}
+
+In the example above the dot represents the `Page` object, and we call its [`Title`] method to return the title as defined in [front matter].
+
+[front matter]: /content-management/front-matter/
+[`Title`]: /methods/page/title
+
+The current context may change within a template. For example, at the top of a template the context might be a `Page` object, but we rebind the context to another value or object within [`range`] or [`with`] blocks.
+
+[`range`]: /functions/go-template/range/
+[`with`]: /functions/go-template/with/
+
+{{< code file=layouts/_default/single.html >}}
+<h2>{{ .Title }}</h2>
+
+{{ range slice "foo" "bar" }}
+ <p>{{ . }}</p>
+{{ end }}
+
+{{ with "baz" }}
+ <p>{{ . }}</p>
+{{ end }}
+{{< /code >}}
+
+In the example above, the context changes as we `range` through the [slice] of values. In the first iteration the context is "foo", and in the second iteration the context is "bar". Inside of the `with` block the context is "baz". Hugo renders the above to:
+
+[slice]: /getting-started/glossary/#slice
+
+```html
+<h2>My Page Title</h2>
+<p>foo</p>
+<p>bar</p>
+<p>baz</p>
+```
+
+### Template context
+
+Within a `range` or `with` block you can access the context passed into the template by prepending a dollar sign (`$`) to the dot:
+
+{{< code file=layouts/_default/single.html >}}
+{{ with "foo" }}
+ <p>{{ $.Title }} - {{ . }}</p>
+{{ end }}
+{{< /code >}}
+
+Hugo renders this to:
+
+```html
+<p>My Page Title - foo</p>
+```
+
+{{% note %}}
+Make sure that you thoroughly understand the concept of _context_ before you continue reading. The most common templating errors made by new users relate to context.
+{{% /note %}}
+
+## Actions
+
+In the examples above the paired opening and closing braces represent the beginning and end of a template action, a data evaluation or control structure within a template.
+
+A template action may contain literal values ([boolean], [string], [integer], and [float]), variables, functions, and methods.
+
+[boolean]: /getting-started/glossary/#boolean
+[string]: /getting-started/glossary/#string
+[integer]: /getting-started/glossary/#integer
+[float]: /getting-started/glossary/#float
+
+{{< code file=layouts/_default/single.html >}}
+{{ $convertToLower := true }}
+{{ if $convertToLower }}
+ <h2>{{ strings.ToLower .Title }}</h2>
+{{ end }}
+{{< /code >}}
+
+In the example above:
+
+- `$convertToLower` is a variable
+- `true` is a literal boolean value
+- `strings.ToLower` is a function that converts all characters to lowercase
+- `Title` is a method on a the `Page` object
+
+Hugo renders the above to:
+
+```html
+
+
+ <h2>my page title</h2>
+
+```
+
+### Whitespace
+
+Notice the blank lines and indentation in the previous example? Although irrelevant in production when you typically minify the output, you can remove the adjacent whitespace by using template action delimiters with hyphens:
+
+{{< code file=layouts/_default/single.html >}}
+{{- $convertToLower := true -}}
+{{- if $convertToLower -}}
+ <h2>{{ strings.ToLower .Title }}</h2>
+{{- end -}}
+{{< /code >}}
+
+Hugo renders this to:
+
+```html
+<h2>my page title</h2>
+```
+
+Whitespace includes spaces, horizontal tabs, carriage returns, and newlines.
+
+### Pipes
+
+Within a template action you may [pipe] a value to function or method. The piped value becomes the final argument to the function or method. For example, these are equivalent:
+
+[pipe]: /getting-started/glossary/#pipeline
+
+```go-html-template
+{{ strings.ToLower "Hugo" }} → hugo
+{{ "Hugo" | strings.ToLower }} → hugo
+```
+
+You can pipe the result of one function or method into another. For example, these are equivalent:
+
+```go-html-template
+{{ strings.TrimSuffix "o" (strings.ToLower "Hugo") }} → hug
+{{ "Hugo" | strings.ToLower | strings.TrimSuffix "o" }} → hug
+```
+
+These are also equivalent:
+
+```go-html-template
+{{ mul 6 (add 2 5) }} → 42
+{{ 5 | add 2 | mul 6 }} → 42
+```
+
+{{% note %}}
+Remember that the piped value becomes the final argument to the function or method to which you are piping.
+{{% /note %}}
+
+### Line splitting
+
+You can split a template action over two or more lines. For example, these are equivalent:
+
+```go-html-template
+{{ $v := or .Site.Language.LanguageName .Site.Language.Lang }}
+
+{{ $v := or
+ .Site.Language.LanguageName
+ .Site.Language.Lang
+}}
+```
+
+You can also split [raw string literals] over two or more lines. For example, these are equivalent:
+
+[raw string literals]: /getting-started/glossary/#string-literal-raw
+
+```go-html-template
+{{ $msg := "This is line one.\nThis is line two." }}
+
+{{ $msg := `This is line one.
+This is line two.`
+}}
+```
+
+## Variables
+
+A variable is a user-defined [identifier] prepended with a dollar sign (`$`), representing a value of any data type, initialized or assigned within a template action. For example, `$foo` and `$bar` are variables.
+
+[identifier]: /getting-started/glossary/#identifier
+
+Variables may contain [scalars], [slices], [maps], or [objects].
+
+[scalars]: /getting-started/glossary/#scalar
+[slices]: /getting-started/glossary/#slice
+[maps]: /getting-started/glossary/#map
+[objects]: /getting-started/glossary/#object
+
+Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. For example:
+
+```go-html-template
+{{ $total := 3 }}
+{{ range slice 7 11 21 }}
+ {{ $total = add $total . }}
+{{ end }}
+{{ $total }} → 42
+```
+
+Variables initialized inside of an `if`, `range`, or `with` block are scoped to the block. Variables initialized outside of these blocks are scoped to the template.
+
+With variables that represent a slice or map, use the [`index`] function to return the desired value.
+
+[`index`]: /functions/collections/indexfunction/
+
+```go-html-template
+{{ $slice := slice "foo" "bar" "baz" }}
+{{ index $slice 2 }} → baz
+
+{{ $map := dict "a" "foo" "b" "bar" "c" "baz" }}
+{{ index $map "c" }} → baz
+```
+
+{{% note %}}
+Slices and arrays are zero-based; element 0 is the first element.
+{{% /note %}}
+
+With variables that represent a map or object, [chain] identifiers to return the desired value or to access the desired method.
+
+[chain]: /getting-started/glossary/#chain
+
+```go-html-template
+{{ $map := dict "a" "foo" "b" "bar" "c" "baz" }}
+{{ $map.c }} → baz
+
+{{ $homePage := .Site.Home }}
+{{ $homePage.Title }} → My Homepage
+```
+
+{{% note %}}
+As seen above, object and method names are capitalized. Although not required, to avoid confusion we recommend beginning variable and map key names with a lowercase letter or underscore.
+{{% /note %}}
+
+## Functions
+
+Used within a template action, a function takes one or more arguments and returns a value. Unlike methods, functions are not associated with an object.
+
+Go's text/template and html/template packages provide a small set of functions, operators, and statements for general use. See the [go-templates] section of the function documentation for details.
+
+[go-templates]: /functions/go-template/
+
+Hugo provides hundreds of custom [functions] categorized by namespace. For example, the `strings` namespace includes these and other functions:
+
+[functions]: /functions
+
+Function|Alias
+:--|:--
+[`strings.ToLower`](/functions/strings/tolower)|`lower`
+[`strings.ToUpper`](/functions/strings/toupper)|`upper`
+[`strings.Replace`](/functions/strings/replace)|`replace`
+
+As shown above, frequently used functions have an alias. Use aliases in your templates to reduce code length.
+
+When calling a function, separate the arguments from the function, and from each other, with a space. For example:
+
+```go-html-template
+{{ $total := add 1 2 3 4 }}
+```
+
+## Methods
+
+Used within a template action and associated with an object, a method takes zero or more arguments and either returns a value or performs an action.
+
+The most commonly accessed objects are the [`Page`] and [`Site`] objects. This is a small sampling of the [methods] available to each object.
+
+[`Site`]: /methods/site/
+[`Page`]: /methods/page/
+[methods]: /methods/
+
+Object|Method|Description
+:--|:--|:--
+`Page`|[`Date`](methods/page/date/)|Returns the date of the given page.
+`Page`|[`Params`](methods/page/params/)|Returns a map of custom parameters as defined in the front matter of the given page.
+`Page`|[`Title`](methods/page/title/)|Returns the title of the given page.
+`Site`|[`Data`](methods/site/data/)|Returns a data structure composed from the files in the data directory.
+`Site`|[`Params`](methods/site/params/)|Returns a map of custom parameters as defined in the site configuration.
+`Site`|[`Title`](methods/site/title/)|Returns the title as defined in the site configuration.
+
+Chain the method to its object with a dot (`.`) as shown below, remembering that the leading dot represents the [current context].
+
+[current context]: #current-context
+
+{{< code file=layouts/_default/single.html >}}
+{{ .Site.Title }} → My Site Title
+{{ .Page.Title }} → My Page Title
+{{< /code >}}
+
+The context passed into most templates is a `Page` object, so this is equivalent to the previous example:
+
+{{< code file=layouts/_default/single.html >}}
+{{ .Site.Title }} → My Site Title
+{{ .Title }} → My Page Title
+{{< /code >}}
+
+Some methods take an argument. Separate the argument from the method with a space. For example:
+
+{{< code file=layouts/_default/single.html >}}
+{{ $page := .Page.GetPage "/books/les-miserables" }}
+{{ $page.Title }} → Les Misérables
+{{< /code >}}
+
+## Comments
+
+{{% note %}}
+Do not attempt to use HTML comment delimiters to comment out template code.
+
+Hugo strips HTML comments when rendering a page, but first evaluates any template code within the HTML comment delimiters. Depending on the template code within the HTML comment delimiters, this could cause unexpected results or fail the build.
+{{% /note %}}
+
+Template comments are similar to template actions. Paired opening and closing braces represent the beginning and end of a comment. For example:
+
+```text
+{{/* This is an inline comment. */}}
+{{- /* This is an inline comment with adjacent whitespace removed. */ -}}
+```
+
+Code within a comment is not parsed, executed, or displayed. Comments may be inline, as shown above, or in block form:
+
+```text
+{{/*
+This is a block comment.
+*/}}
+
+{{- /*
+This is a block comment with
+adjacent whitespace removed.
+*/ -}}
+```
+
+You may not nest one comment inside of another.
+
+To render an HTML comment, pass a string through the [`safeHTML`] template function. For example:
+
+[`safeHTML`]: /functions/safe/html
+
+```go-html-template
+{{ "<!-- I am an HTML comment. -->" | safeHTML }}
+{{ printf "<!-- This is the %s site. -->" .Site.Title | safeHTML }}
+```
+
+## Include
+
+Use the [`template`] function to include one or more of Hugo's [embedded templates]:
+
+[embedded templates]: /templates/embedded/
+
+```go-html-template
+{{ template "_internal/google_analytics.html" . }}
+{{ template "_internal/opengraph" . }}
+{{ template "_internal/pagination.html" . }}
+{{ template "_internal/schema.html" . }}
+{{ template "_internal/twitter_cards.html" . }}
+```
+
+[`partial`]: /functions/partials/include/
+[`partialCached`]: /functions/partials/includecached/
+[`template`]: functions/go-template/template/
+
+Use the [`partial`] or [`partialCached`] function to include one or more [partial templates]:
+
++[partial templates]: /templates/partial
+
+```go-html-template
+{{ partial "breadcrumbs.html" . }}
+{{ partialCached "css.html" . }}
+```
+
+Create your partial templates in the layouts/partials directory.
+
+{{% note %}}
+In the examples above, note that we are passing the current context (the dot) to each of the templates.
+{{% /note %}}
+
+## Examples
+
+This limited set of contrived examples demonstrates some of concepts described above. Please see the [functions], [methods], and [templates] documentation for specific examples.
+
+[templates]: /templates/
+
+### Conditional blocks
+
+See documentation for [`if`], [`else`], and [`end`].
+
+[`if`]: /functions/go-template/if/
+[`else`]: /functions/go-template/else/
+[`end`]: /functions/go-template/end/
+
+```go-html-template
+{{ $var := 42 }}
+{{ if eq $var 6 }}
+ {{ print "var is 6" }}
+{{ else if eq $var 7 }}
+ {{ print "var is 7" }}
+{{ else if eq $var 42 }}
+ {{ print "var is 42" }}
+{{ else }}
+ {{ print "var is something else" }}
+{{ end }}
+```
+
+### Logical operators
+
+See documentation for [`and`] and [`or`].
+
+[`and`]: /functions/go-template/and
+[`or`]: /functions/go-template/or
+
+```go-html-template
+{{ $v1 := true }}
+{{ $v2 := false }}
+{{ $v3 := false }}
+{{ $result := false }}
+
+{{ if and $v1 $v2 $v3 }}
+ {{ $result = true }}
+{{ end }}
+{{ $result }} → false
+
+{{ if or $v1 $v2 $v3 }}
+ {{ $result = true }}
+{{ end }}
+{{ $result }} → true
+```
+
+### Loops
+
+See documentation for [`range`], [`else`], and [`end`].
+
+[`range`]: /functions/go-template/range/
+
+```go-html-template
+{{ $s := slice "foo" "bar" "baz" }}
+{{ range $s }}
+ <p>{{ . }}</p>
+{{ else }}
+ <p>The collection is empty</p>
+{{ end }}
+```
+
+Use the [`seq`] function to loop a specified number of times:
+
+[`seq`]: /functions/collections/seq
+
+```go-html-template
+{{ $total := 0 }}
+{{ range seq 4 }}
+ {{ $total = add $total . }}
+{{ end }}
+{{ $total }} → 10
+```
+
+### Rebind context
+
+See documentation for [`with`], [`else`], and [`end`].
+
+[`with`]: /functions/go-template/with/
+
+```go-html-template
+{{ $var := "foo" }}
+{{ with $var }}
+ {{ . }} → foo
+{{ else }}
+ {{ print "var is falsy" }}
+{{ end }}
+```
+
+### Access site parameters
+
+See documentation for the [`Params`](/methods/site/params/) method on a `Site` object.
+
+With this site configuration:
+
+{{< code-toggle file=hugo >}}
+title = 'ABC Widgets'
+baseURL = 'https://example.org'
+[params]
+ subtitle = 'The Best Widgets on Earth'
+ copyright-year = '2023'
+ [params.author]
+ email = 'jsmith@example.org'
+ name = 'John Smith'
+ [params.layouts]
+ rfc_1123 = 'Mon, 02 Jan 2006 15:04:05 MST'
+ rfc_3339 = '2006-01-02T15:04:05-07:00'
+{{< /code-toggle >}}
+
+Access the custom site parameters by chaining the identifiers:
+
+```go-html-template
+{{ .Site.Params.subtitle }} → The Best Widgets on Earth
+{{ .Site.Params.author.name }} → John Smith
+
+{{ $layout := .Site.Params.layouts.rfc_1123 }}
+{{ .Site.Lastmod.Format $layout }} → Tue, 17 Oct 2023 13:21:02 PDT
+```
+
+### Access page parameters
+
+See documentation for the [`Params`](/methods/page/params/) method on a `Page` object.
+
+With this front matter:
+
+{{< code-toggle file=content/news/annual-conference.md >}}
+title = 'Annual conference'
+date = 2023-10-17T15:11:37-07:00
+[params]
+display_related = true
+[params.author]
+ email = 'jsmith@example.org'
+ name = 'John Smith'
+{{< /code-toggle >}}
+
+Access the custom page parameters by chaining the identifiers:
+
+```go-html-template
+{{ .Params.display_related }} → true
+{{ .Params.author.name }} → John Smith
+```
--- /dev/null
- keywords: [templates]
+---
+title: Template lookup order
++linkTitle: Lookup order
+description: Hugo uses the rules below to select a template for a given page, starting from the most specific.
+categories: [templates,fundamentals]
- weight: 30
- weight: 30
++keywords: []
+menu:
+ docs:
+ parent: templates
- ## Home page
++ weight: 40
++weight: 40
+toc: true
+---
+
+## Lookup rules
+
+Hugo takes the parameters listed below into consideration when choosing a template for a given page. The templates are ordered by specificity. This should feel natural, but look at the table below for concrete examples of the different parameter variations.
+
+Kind
+: The page `Kind` (the home page is one). See the example tables below per kind. This also determines if it is a **single page** (i.e. a regular content page. We then look for a template in `_default/single.html` for HTML) or a **list page** (section listings, home page, taxonomy lists, taxonomy terms. We then look for a template in `_default/list.html` for HTML).
+
+Layout
+: Can be set in front matter.
+
+Output Format
+: See [Custom Output Formats](/templates/output-formats). An output format has both a `name` (e.g. `rss`, `amp`, `html`) and a `suffix` (e.g. `xml`, `html`). We prefer matches with both (e.g. `index.amp.html`), but look for less specific templates.
+
+Note that if the output format's Media Type has more than one suffix defined, only the first is considered.
+
+Language
+: We will consider a language tag in the template name. If the site language is `fr`, `index.fr.amp.html` will win over `index.amp.html`, but `index.amp.html` will be chosen before `index.fr.html`.
+
+Type
+: Is value of `type` if set in front matter, else it is the name of the root section (e.g. "blog"). It will always have a value, so if not set, the value is "page".
+
+Section
+: Is relevant for `section`, `taxonomy` and `term` types.
+
+{{% note %}}
+Templates can live in either the project's or the themes' layout folders, and the most specific templates will be chosen. Hugo will interleave the lookups listed below, finding the most specific one either in the project or themes.
+{{% /note %}}
+
+## Target a template
+
+You cannot change the lookup order to target a content page, but you can change a content page to target a template. Specify `type`, `layout`, or both in front matter.
+
+Consider this content structure:
+
+```text
+content/
+├── about.md
+└── contact.md
+```
+
+Files in the root of the content directory have a [content type] of `page`. To render these pages with a unique template, create a matching subdirectory:
+
+[content type]: /getting-started/glossary/#content-type
+
+```text
+layouts/
+└── page/
+ └── single.html
+```
+
+But the contact page probably has a form and requires a different template. In the front matter specify `layout`:
+
+{{< code-toggle file=content/contact.md >}}
+title = 'Contact'
+layout = 'contact'
+{{< /code-toggle >}}
+
+Then create the template for the contact page:
+
+```text
+layouts/
+└── page/
+ └── contact.html <-- renders contact.md
+ └── single.html <-- renders about.md
+```
+
+As a content type, the word `page` is vague. Perhaps `miscellaneous` would be better. Add `type` to the front matter of each page:
+
+{{< code-toggle file=content/about.md >}}
+title = 'About'
+type = 'miscellaneous'
+{{< /code-toggle >}}
+
+{{< code-toggle file=content/contact.md >}}
+title = 'Contact'
+type = 'miscellaneous'
+layout = 'contact'
+{{< /code-toggle >}}
+
+Now place the layouts in the corresponding directory:
+
+```text
+layouts/
+└── miscellaneous/
+ └── contact.html <-- renders contact.md
+ └── single.html <-- renders about.md
+```
+
- ## Single pages
++## Home templates
++
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
+
+{{< datatable-filtered "output" "layouts" "Kind == home" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
+
- ## Section pages
++## Single templates
++
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
+
+{{< datatable-filtered "output" "layouts" "Kind == page" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
+
- A section page is a list of pages within a given section.
++## Section templates
+
- ## Taxonomy pages
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
+
+{{< datatable-filtered "output" "layouts" "Kind == section" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
+
- A taxonomy page is a list of terms within a given taxonomy. The examples below assume the following site configuration:
++## Taxonomy templates
+
- ## Term pages
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
++
++The examples below assume the following site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+category = 'categories'
+{{< /code-toggle >}}
+
+{{< datatable-filtered "output" "layouts" "Kind == taxonomy" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
+
- A term page is a list of pages associated with a given term. The examples below assume the following site configuration:
++## Term templates
++
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
+
++The examples below assume the following site configuration:
+
+{{< code-toggle file=hugo >}}
+[taxonomies]
+category = 'categories'
+{{< /code-toggle >}}
+
+{{< datatable-filtered "output" "layouts" "Kind == term" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
++
++## RSS templates
++
++These template paths are sorted by specificity in descending order. The least specific path is at the bottom of each list.
++
++The examples below assume the following site configuration:
++
++{{< code-toggle file=hugo >}}
++[taxonomies]
++category = 'categories'
++{{< /code-toggle >}}
++
++{{< datatable-filtered "output" "layouts" "OutputFormat == rss" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
--- /dev/null
--- /dev/null
++---
++title: Menus
++description: Create templates to render one or more menus.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ identifier: templates-menu
++ parent: templates
++ weight: 180
++weight: 180
++toc: true
++aliases: [/templates/menus/,/templates/menu-templates/]
++---
++
++## Overview
++
++After [defining menu entries], use [menu methods] to render a menu.
++
++Three factors determine how to render a menu:
++
++1. The method used to define the menu entries: [automatic], [in front matter], or [in site configuration]
++1. The menu structure: flat or nested
++1. The method used to [localize the menu entries]: site configuration or translation tables
++
++The example below handles every combination.
++
++## Example
++
++This partial template recursively "walks" a menu structure, rendering a localized, accessible nested list.
++
++{{< code file=layouts/partials/menu.html copy=true >}}
++{{- $page := .page }}
++{{- $menuID := .menuID }}
++
++{{- with index site.Menus $menuID }}
++ <nav>
++ <ul>
++ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
++ </ul>
++ </nav>
++{{- end }}
++
++{{- define "partials/inline/menu/walk.html" }}
++ {{- $page := .page }}
++ {{- range .menuEntries }}
++ {{- $attrs := dict "href" .URL }}
++ {{- if $page.IsMenuCurrent .Menu . }}
++ {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }}
++ {{- else if $page.HasMenuCurrent .Menu .}}
++ {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }}
++ {{- end }}
++ {{- $name := .Name }}
++ {{- with .Identifier }}
++ {{- with T . }}
++ {{- $name = . }}
++ {{- end }}
++ {{- end }}
++ <li>
++ <a
++ {{- range $k, $v := $attrs }}
++ {{- with $v }}
++ {{- printf " %s=%q" $k $v | safeHTMLAttr }}
++ {{- end }}
++ {{- end -}}
++ >{{ $name }}</a>
++ {{- with .Children }}
++ <ul>
++ {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }}
++ </ul>
++ {{- end }}
++ </li>
++ {{- end }}
++{{- end }}
++{{< /code >}}
++
++Call the partial above, passing a menu ID and the current page in context.
++
++{{< code file=layouts/_default/single.html >}}
++{{ partial "menu.html" (dict "menuID" "main" "page" .) }}
++{{ partial "menu.html" (dict "menuID" "footer" "page" .) }}
++{{< /code >}}
++
++## Page references
++
++Regardless of how you [define menu entries], an entry associated with a page has access to page context.
++
++This simplistic example renders a page parameter named `version` next to each entry's `name`. Code defensively using `with` or `if` to handle entries where (a) the entry points to an external resource, or (b) the `version` parameter is not defined.
++
++{{< code file=layouts/_default/single.html >}}
++{{- range site.Menus.main }}
++ <a href="{{ .URL }}">
++ {{ .Name }}
++ {{- with .Page }}
++ {{- with .Params.version -}}
++ ({{ . }})
++ {{- end }}
++ {{- end }}
++ </a>
++{{- end }}
++{{< /code >}}
++
++## Menu entry parameters
++
++When you define menu entries [in site configuration] or [in front matter], you can include a `params` key as shown in these examples:
++
++- [Menu entry defined in site configuration]
++- [Menu entry defined in front matter]
++
++This simplistic example renders a `class` attribute for each anchor element. Code defensively using `with` or `if` to handle entries where `params.class` is not defined.
++
++{{< code file=layouts/partials/menu.html >}}
++{{- range site.Menus.main }}
++ <a {{ with .Params.class -}} class="{{ . }}" {{ end -}} href="{{ .URL }}">
++ {{ .Name }}
++ </a>
++{{- end }}
++{{< /code >}}
++
++## Localize
++
++Hugo provides two methods to localize your menu entries. See [multilingual].
++
++[automatic]: /content-management/menus/#define-automatically
++[define menu entries]: /content-management/menus/
++[defining menu entries]: /content-management/menus/
++[in front matter]: /content-management/menus/#define-in-front-matter
++[in site configuration]: /content-management/menus/#define-in-site-configuration
++[localize the menu entries]: /content-management/multilingual/#menus
++[menu entry defined in front matter]: /content-management/menus/#example-front-matter
++[menu entry defined in site configuration]: /content-management/menus/#example-site-configuration
++[menu and methods]: /methods/menu/
++[multilingual]: /content-management/multilingual/#menus
--- /dev/null
- keywords: ["amp", "outputs", "rss"]
+---
+title: Custom output formats
+description: Hugo can output content in multiple formats, including calendar events, e-book formats, Google AMP, and JSON search indexes, or any custom text format.
+categories: [templates,fundamentals]
- The above example is fictional, but if used for the homepage on a site with `baseURL` `https://example.org`, it will produce a plain text homepage with the URL `bep://example.org/myindex.enr`.
++keywords: []
+menu:
+ docs:
+ parent: templates
+ weight: 210
+weight: 210
+toc: true
+aliases: [/templates/outputs/,/extras/output-formats/,/content-management/custom-outputs/]
+---
+
+This page describes how to properly configure your site with the media types and output formats, as well as where to create your templates for your custom outputs.
+
+## Media types
+
+A [media type] (formerly known as a MIME type) is a two-part identifier for file formats and format contents transmitted on the internet.
+
+This is the full set of built-in media types in Hugo:
+
+{{< datatable "config" "mediaTypes" "_key" "suffixes" >}}
+
+**Note:**
+
+- It is possible to add custom media types or change the defaults; e.g., if you want to change the suffix for `text/html` to `asp`.
+- `Suffixes` are the values that will be used for URLs and file names for that media type in Hugo.
+- The `Type` is the identifier that must be used when defining new/custom `Output Formats` (see below).
+- The full set of media types will be registered in Hugo's built-in development server to make sure they are recognized by the browser.
+
+To add or modify a media type, define it in a `mediaTypes` section in your [site configuration], either for all sites or for a given language.
+
+{{< code-toggle file=hugo >}}
+[mediaTypes]
+ [mediaTypes."text/enriched"]
+ suffixes = ["enr"]
+ [mediaTypes."text/html"]
+ suffixes = ["asp"]
+{{</ code-toggle >}}
+
+The above example adds one new media type, `text/enriched`, and changes the suffix for the built-in `text/html` media type.
+
+**Note:** these media types are configured for **your output formats**. If you want to redefine one of Hugo's default output formats (e.g. `HTML`), you also need to redefine the media type. So, if you want to change the suffix of the `HTML` output format from `html` (default) to `htm`:
+
+{{< code-toggle file=hugo >}}
+[mediaTypes]
+ [mediaTypes."text/html"]
+ suffixes = ["htm"]
+
+[outputFormats]
+ [outputFormats.html]
+ mediaType = "text/html"
+{{</ code-toggle >}}
+
+{{% note %}}
+For the above to work, you also need to add an `outputs` definition in your site configuration.
+{{% /note %}}
+
+## Output format definitions
+
+Given a media type and some additional configuration, you get an **Output Format**.
+
+This is the full set of Hugo's built-in output formats:
+
+{{< datatable "config" "outputFormats" "_key" "baseName" "isHTML" "isPlainText" "mediaType" "noUgly" "path" "permalinkable" "protocol" "rel" >}}
+
+- A page can be output in as many output formats as you want, and you can have an infinite amount of output formats defined **as long as they resolve to a unique path on the file system**. In the above table, the best example of this is `amp` vs. `html`. `amp` has the value `amp` for `path` so it doesn't overwrite the `html` version; e.g. we can now have both `/index.html` and `/amp/index.html`.
+- The `mediaType` must match a defined media type.
+- You can define new output formats or redefine built-in output formats; e.g., if you want to put `amp` pages in a different path.
+
+To add or modify an output format, define it in an `outputFormats` section in your site's [configuration file](/getting-started/configuration/), either for all sites or for a given language.
+
+{{< code-toggle file=hugo >}}
+[outputFormats.MyEnrichedFormat]
+mediaType = "text/enriched"
+baseName = "myindex"
+isPlainText = true
+protocol = "bep://"
+{{</ code-toggle >}}
+
- * The `outputs` definition is per page [`Kind`][page_kinds].
++The above example is fictional, but if used for the home page on a site with `baseURL` `https://example.org`, it will produce a plain text home page with the URL `bep://example.org/myindex.enr`.
+
+### Configure output formats
+
+Use these parameters when configuring an output format:
+
+baseName
+: (`string`) The base name of the published file. Default is `index`.
+
+isHTML
+: (`bool`) If `true`, classifies the output format as HTML. Hugo uses this value to determine when to create alias redirects, when to inject the LiveReload script, etc. Default is `false`.
+
+isPlainText
+: (`bool`) If `true`, Hugo parses templates for this output format with Go's [text/template] package instead of the [html/template] package. Default is `false`.
+
+[html/template]: https://pkg.go.dev/html/template
+[text/template]: https://pkg.go.dev/text/template
+
+mediaType
+: (`string`) The [media type] of the published file. This must match a defined media type, either [built-in](#media-types) or custom.
+
+[media type]: https://en.wikipedia.org/wiki/Media_type
+
+notAlternative
+: (`bool`) If `true`, excludes this output format from the values returned by the [`AlternativeOutputFormats`] method on a `Page` object. Default is `false`.
+
+[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats/
+
+noUgly
+: (`bool`) If `true`, disables ugly URLs for this output format when `uglyURLs` is `true` in your site configuration. Default is `false`.
+
+path
+: (`string`) The path to the directory containing the published files, relative to the root of the publish directory.
+
+permalinkable
+: (`bool`) If `true`, the [`Permalink`] and [`RelPermalink`] methods on a `Page` object return the rendering output format rather than main output format ([see below](#link-to-output-formats)). Enabled by default for the `html` and `amp` output formats. Default is `false`.
+
+[`Permalink`]: /methods/page/permalink/
+[`RelPermalink`]: /methods/page/relpermalink/
+
+protocol
+: (`string`) The protocol (scheme) of the URL for this output format. For example, `https://` or `webcal://`. Default is the scheme of the `baseURL` parameter in your site configuration, typically `https://`.
+
+rel
+: (`string`) If provided, you can assign this value to `rel` attributes in `link` elements when iterating over output formats in your templates. Default is `alternate`.
+
+root
+: (`bool`) If `true`, files will be published to the root of the publish directory. Default is `false`.
+
+ugly
+: (`bool`) If `true`, enables uglyURLs for this output format when `uglyURLs` is `false` in your site configuration. Default is `false`.
+
+weight
+: (`int`) When set to a non-zero value, Hugo uses the `weight` as the first criteria when sorting output formats, falling back to the name of the output format. Lighter items float to the top, while heavier items sink to the bottom. Hugo renders output formats sequentially based on the sort order.
+
+## Output formats for pages
+
+A `Page` in Hugo can be rendered to multiple _output formats_ on the file
+system.
+
+### Default output formats
+
+Every `Page` has a [`Kind`] attribute, and the default Output
+Formats are set based on that.
+
+{{< code-toggle config=outputs />}}
+
+### Customizing output formats
+
+This can be changed by defining an `outputs` list of output formats in either
+the `Page` front matter or in the site configuration (either for all sites or
+per language).
+
+Example from site configuration file:
+
+{{< code-toggle file=hugo >}}
+[outputs]
+ home = ["html", "amp", "rss"]
+ page = ["html"]
+{{</ code-toggle >}}
+
+Note that in the above examples, the _output formats_ for `section`,
+`taxonomy` and `term` will stay at their default value `['html','rss']`.
+
- [base]: /templates/base/
++* The `outputs` definition is per page [`Kind`].
+* The names (e.g. `html`, `amp`) must match the `name` of a defined output format, and can be overridden per page in front matter.
+
+The following is an example of front matter in a content file that defines output formats for the rendered `Page`:
+
+{{< code-toggle file=content/example.md fm=true >}}
+title: Example
+outputs:
+- html
+- amp
+- json
+{{< /code-toggle >}}
+
+## List output formats
+
+Each `Page` object has both an [`OutputFormats`] method (all formats, including the current) and an [`AlternativeOutputFormats`] method, the latter of which is useful for creating a `link rel` list in your site's `<head>`:
+
+[`OutputFormats`]: /methods/page/outputformats
+[`AlternativeOutputFormats`]: /methods/page/alternativeoutputformats
+
+```go-html-template
+{{ range .AlternativeOutputFormats -}}
+ <link rel="{{ .Rel }}" type="{{ .MediaType.Type }}" href="{{ .Permalink | safeURL }}">
+{{ end }}
+```
+
+## Link to output formats
+
+The [`Permalink`] and [`RelPermalink`] methods on a `Page` object return the first output format defined for that page (usually `HTML` if nothing else is defined). This is regardless of the template from which they are called.
+
+[`Permalink`]: /methods/page/permalink
+[`RelPermalink`]: /methods/page/relpermalink
+
+__from `single.json.json`:__
+```go-html-template
+{{ .RelPermalink }} → /that-page/
+{{ with .OutputFormats.Get "json" }}
+ {{ .RelPermalink }} → /that-page/index.json
+{{ end }}
+```
+
+In order for them to return the output format of the current template file instead, the given output format should have its `permalinkable` setting set to true.
+
+**Same template file as above with json output format's `permalinkable` set to true:**
+
+```go-html-template
+{{ .RelPermalink }} → /that-page/index.json
+{{ with .OutputFormats.Get "html" }}
+ {{ .RelPermalink }} → /that-page/
+{{ end }}
+```
+
+From content files, you can use the `ref` or `relref` shortcodes:
+
+```go-html-template
+[Neat]({{</* ref "blog/neat.md" "amp" */>}})
+[Who]({{</* relref "about.md#who" "amp" */>}})
+```
+
+## Templates for your output formats
+
+Each output format requires a corresponding template conforming to the [template lookup order](/templates/lookup-order/). Hugo considers both output format and suffix when selecting a template.
+
+For example, to generate a JSON file for the home page, the template with highest specificity is `layouts/index.json.json`.
+
+Hugo will now also detect the media type and output format of partials, if possible, and use that information to decide if the partial should be parsed as a plain text template or not.
+
+Hugo will look for the name given, so you can name it whatever you want. But if you want it treated as plain text, you should use the file suffix and, if needed, the name of the Output Format. The pattern is as follows:
+
+```go-html-template
+[partial name].[OutputFormat].[suffix]
+```
+
+The partial below is a plain text template . The output format is `csv`, and since this is the only output format with the suffix `csv`, we don't need to include the output format `name`):
+
+```go-html-template
+{{ partial "mytextpartial.csv" . }}
+```
+
- [partials]: /templates/partials/
+[site configuration]: /getting-started/configuration/
+[lookup order]: /templates/lookup-order/
+[media type]: https://en.wikipedia.org/wiki/Media_type
+[`kind`]: /methods/page/kind/
--- /dev/null
- description: Hugo supports pagination for your homepage, section pages, and taxonomies.
+---
+title: Pagination
- keywords: [lists,sections,pagination]
++description: Split a list page into two or more subsets.
+categories: [templates]
- weight: 100
- weight: 100
++keywords: []
+menu:
+ docs:
+ parent: templates
- The real power of Hugo pagination shines when combined with the [`where`] function and its SQL-like operators: [`first`], [`last`], and [`after`]. You can even [order the content][lists] the way you've become used to with Hugo.
++ weight: 190
++weight: 190
+toc: true
+aliases: [/extras/pagination,/doc/pagination/]
+---
+
- ## Configure pagination
++Displaying a large page collection on a list page is not user-friendly:
+
- Pagination can be configured in your [site configuration][configuration]:
++- A massive list can be intimidating and difficult to navigate. Users may get lost in the sheer volume of information.
++- Large pages take longer to load, which can frustrate users and lead to them abandoning the site.
++- Without any filtering or organization, finding a specific item becomes a tedious scrolling exercise.
+
- : default = `10`. This setting can be overridden within the template.
++Improve usability by paginating `home`, `section`, `taxonomy`, and `term` pages.
++
++{{% note %}}
++The most common templating mistake related to pagination is invoking pagination more than once for a given list page. See the [caching](#caching) section below.
++{{% /note %}}
++
++## Terminology
+
+paginate
- paginatePath
- : default = `page`. Allows you to set a different path for your pagination pages.
++: To split a [list page] into two or more subsets.
+
- Setting `paginate` to a positive value will split the list pages for the homepage, sections and taxonomies into chunks of that size. But note that the generation of the pagination pages for sections, taxonomies and homepage is *lazy* --- the pages will not be created if not referenced by a `.Paginator` (see below).
++pagination
++: The process of paginating a list page.
+
- `paginatePath` is used to adapt the `URL` to the pages in the paginator (the default setting will produce URLs on the form `/page/1/`.
++pager
++: Created during pagination, a pager contains a subset of a list page and navigation links to other pagers.
+
- ## List paginator pages
++paginator
++: A collection of pagers.
+
- {{% note %}}
- Paginate a page collection in list templates for these page kinds: `home`, `section`, `taxonomy`, or `term`. You cannot paginate a page collection in a template for the `page` page kind.
- {{% /note %}}
++[list page]: /getting-started/glossary/#list-page
+
- There are two ways to configure and use a `.Paginator`:
++## Configuration
++
++Control pagination behavior in your site configuration. These are the default settings:
++
++{{< code-toggle file=hugo config=pagination />}}
+
- 1. The simplest way is just to call `.Paginator.Pages` from a template. It will contain the pages for *that page*.
- 2. Select another set of pages with the available template functions and ordering options, and pass the slice to `.Paginate`, e.g.
- * `{{ range (.Paginate ( first 50 .Pages.ByTitle )).Pages }}` or
- * `{{ range (.Paginate .RegularPagesRecursive).Pages }}`.
++disableAliases
++: (`bool`) Whether to disable alias generation for the first pager. Default is `false`.
+
- For a given **Page**, it's one of the options above. The `.Paginator` is static and cannot change once created.
++pagerSize
++: (`int`) The number of pages per pager. Default is `10`.
+
- If you call `.Paginator` or `.Paginate` multiple times on the same page, you should ensure all the calls are identical. Once *either* `.Paginator` or `.Paginate` is called while generating a page, its result is cached, and any subsequent similar call will reuse the cached result. This means that any such calls which do not match the first one will not behave as written.
++path
++: (`string`) The segment of each pager URL indicating that the target page is a pager. Default is `page`.
+
- (Remember that function arguments are eagerly evaluated, so a call like `$paginator := cond x .Paginator (.Paginate .RegularPagesRecursive)` is an example of what you should *not* do. Use `if`/`else` instead to ensure exactly one evaluation.)
++With multilingual sites you can define the pagination behavior for each language:
+
- The global page size setting (`Paginate`) can be overridden by providing a positive integer as the last argument. The examples below will give five items per page:
++{{< code-toggle file=hugo >}}
++[languages.en]
++contentDir = 'content/en'
++languageCode = 'en-US'
++languageDirection = 'ltr'
++languageName = 'English'
++weight = 1
++[languages.en.pagination]
++disableAliases = true
++pagerSize = 10
++path = 'page'
++[languages.de]
++contentDir = 'content/de'
++languageCode = 'de-DE'
++languageDirection = 'ltr'
++languageName = 'Deutsch'
++weight = 2
++[languages.de.pagination]
++disableAliases = true
++pagerSize = 20
++path = 'blatt'
++{{< /code-toggle >}}
+
- * `{{ range (.Paginator 5).Pages }}`
- * `{{ $paginator := .Paginate (where .Pages "Type" "posts") 5 }}`
++## Methods
+
- It is also possible to use the `GroupBy` functions in combination with pagination:
++To paginate a `home`, `section`, `taxonomy`, or `term` page, invoke either of these methods on the `Page` object in the corresponding template:
+
- {{ range (.Paginate (.Pages.GroupByDate "2006")).PageGroups }}
- ```
++- [`Paginate`]
++- [`Paginator`]
++
++The `Paginate` method is more flexible, allowing you to:
++
++- Paginate any page collection
++- Filter, sort, and group the page collection
++- Override the number of pages per pager as defined in your site configuration
++
++By comparison, the `Paginator` method paginates the page collection passed into the template, and you cannot override the number of pages per pager.
++
++[`Paginate`]: /methods/page/paginate/
++[`Paginator`]: /methods/page/paginator/
++
++## Examples
++
++To paginate a list page using the `Paginate` method:
+
+```go-html-template
- ## Build the navigation
++{{ $pages := where site.RegularPages "Type" "posts" }}
++{{ $paginator := .Paginate $pages.ByTitle 7 }}
+
- {{% note %}}
- To override Hugo's embedded pagination template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
++{{ range $paginator.Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++{{ end }}
+
- `{{ partial "pagination" . }}`
++{{ template "_internal/pagination.html" . }}
++```
+
- [`partial`]: /functions/partials/include/
- [source code]: {{% eturl pagination %}}
- {{% /note %}}
++In the example above, we:
++
++1. Build a page collection
++2. Sort the page collection by title
++3. Paginate the page collection, with 7 pages per pager
++4. Range over the paginated page collection, rendering a link to each page
++5. Call the embedded pagination template to create navigation links between pagers
+
- The easiest way to add this to your pages is to include the embedded template:
+
- If you use any filters or ordering functions to create your `.Paginator` *and* you want the navigation buttons to be shown before the page listing, you must create the `.Paginator` before it's used.
++To paginate a list page using the `Paginator` method:
+
+```go-html-template
++{{ range .Paginator.Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++{{ end }}
++
+{{ template "_internal/pagination.html" . }}
+```
+
++In the example above, we:
++
++1. Paginate the page collection passed into the template, with the default number of pages per pager
++2. Range over the paginated page collection, rendering a link to each page
++3. Call the embedded pagination template to create navigation links between pagers
++
++## Caching
++
+{{% note %}}
- The following example shows how to create `.Paginator` before its used:
++The most common templating mistake related to pagination is invoking pagination more than once for a given list page.
+{{% /note %}}
+
- {{ $paginator := .Paginate (where .Pages "Type" "posts") }}
- {{ template "_internal/pagination.html" . }}
- {{ range $paginator.Pages }}
- {{ .Title }}
++Regardless of pagination method, the initial invocation is cached and cannot be changed. If you invoke pagination more than once for a given list page, subsequent invocations use the cached result. This means that subsequent invocations will not behave as written.
++
++When paginating conditionally, do not use the `compare.Conditional` function due to its eager evaluation of arguments. Use an `if-else` construct instead.
++
++[`compare.Conditional`]: /functions/compare/conditional/
++
++## Grouping
++
++Use pagination with any of the [grouping methods]. For example:
++
++[grouping methods]: /quick-reference/page-collections/#group
+
+```go-html-template
- Without the `where` filter, the above example is even simpler:
++{{ $pages := where site.RegularPages "Type" "posts" }}
++{{ $paginator := .Paginate ($pages.GroupByDate "Jan 2006") }}
++
++{{ range $paginator.PageGroups }}
++ <h2>{{ .Key }}</h2>
++ {{ range .Pages }}
++ <h3><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h3>
++ {{ end }}
+{{ end }}
++
++{{ template "_internal/pagination.html" . }}
+```
+
- {{ range .Paginator.Pages }}
- {{ .Title }}
- {{ end }}
++[grouping methods]: /quick-reference/page-collections/#group
++
++## Navigation
++
++As shown in the examples above, the easiest way to add navigation between pagers is with Hugo's embedded pagination template:
+
+```go-html-template
+{{ template "_internal/pagination.html" . }}
- If you want to build custom navigation, you can do so using the `.Paginator` object, which includes the following properties:
+```
+
- PageNumber
- : The current page's number in the pager sequence
++The embedded pagination template has two formats: `default` and `terse`. The above is equivalent to:
++
++```go-html-template
++{{ template "_internal/pagination.html" (dict "page" . "format" "default") }}
++```
+
- URL
- : The relative URL to the current pager
++The `terse` format has fewer controls and page slots, consuming less space when styled as a horizontal list. To use the `terse` format:
+
- Pages
- : The pages in the current pager
++```go-html-template
++{{ template "_internal/pagination.html" (dict "page" . "format" "terse") }}
++```
+
- NumberOfElements
- : The number of elements on this page
++{{% note %}}
++To override Hugo's embedded pagination template, copy the [source code] to a file with the same name in the layouts/partials directory, then call it from your templates using the [`partial`] function:
+
- HasPrev
- : Whether there are page(s) before the current
++`{{ partial "pagination.html" . }}`
+
- Prev
- : The pager for the previous page
++[`partial`]: /functions/partials/include/
++[source code]: {{% eturl pagination %}}
++{{% /note %}}
+
- HasNext
- : Whether there are page(s) after the current
++Create custom navigation components using any of the `Pager` methods:
+
- Next
- : The pager for the next page
++{{< list-pages-in-section path=/methods/pager >}}
+
- First
- : The pager for the first page
++## Structure
+
- Last
- : The pager for the last page
++The example below depicts the published site structure when paginating a list page.
+
- Pagers
- : A list of pagers that can be used to build a pagination menu
++With this content:
+
- PageSize
- : Size of each pager
++```text
++content/
++├── posts/
++│ ├── _index.md
++│ ├── post-1.md
++│ ├── post-2.md
++│ ├── post-3.md
++│ └── post-4.md
++└── _index.md
++```
+
- TotalPages
- : The number of pages in the paginator
++And this site configuration:
+
- TotalNumberOfElements
- : The number of elements on all pages in this paginator
++{{< code-toggle file=hugo >}}
++[pagination]
++ disableAliases = false
++ pagerSize = 2
++ path = 'page'
++{{< /code-toggle >}}
+
- ## Additional information
++And this section template:
+
- The pages are built on the following form (`BLANK` means no value):
++```go-html-template
++{{ range (.Paginate .Pages).Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++{{ end }}
+
- ```txt
- [SECTION/TAXONOMY/BLANK]/index.html
- [SECTION/TAXONOMY/BLANK]/page/1/index.html => redirect to [SECTION/TAXONOMY/BLANK]/index.html
- [SECTION/TAXONOMY/BLANK]/page/2/index.html
- ....
++{{ template "_internal/pagination.html" . }}
++```
+
- [`first`]: /functions/collections/first/
- [`last`]: /functions/collections/last/
- [`after`]: /functions/collections/after/
- [configuration]: /getting-started/configuration/
- [lists]: /templates/lists/
- [`where`]: /functions/collections/where/
++The published site has this structure:
++
++```text
++public/
++├── posts/
++│ ├── page/
++│ │ ├── 1/
++│ │ │ └── index.html <-- alias to public/posts/index.html
++│ │ └── 2/
++│ │ └── index.html
++│ ├── post-1/
++│ │ └── index.html
++│ ├── post-2/
++│ │ └── index.html
++│ ├── post-3/
++│ │ └── index.html
++│ ├── post-4/
++│ │ └── index.html
++│ └── index.html
++└── index.html
+```
+
++To disable alias generation for the first pager, change your site configuration:
++
++{{< code-toggle file=hugo >}}
++[pagination]
++ disableAliases = true
++ pagerSize = 2
++ path = 'page'
++{{< /code-toggle >}}
++
++Now the published site will have this structure:
++
++```text
++public/
++├── posts/
++│ ├── page/
++│ │ └── 2/
++│ │ └── index.html
++│ ├── post-1/
++│ │ └── index.html
++│ ├── post-2/
++│ │ └── index.html
++│ ├── post-3/
++│ │ └── index.html
++│ ├── post-4/
++│ │ └── index.html
++│ └── index.html
++└── index.html
++```
--- /dev/null
--- /dev/null
++---
++title: Partial templates
++description: Partials are smaller, context-aware components in your list and page templates that can be used economically to keep your templating DRY.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 110
++weight: 110
++toc: true
++aliases: [/templates/partials/,/layout/chrome/]
++---
++
++{{< youtube pjS4pOLyB7c >}}
++
++## Use partials in your templates
++
++All partials for your Hugo project are located in a single `layouts/partials` directory. For better organization, you can create multiple subdirectories within `partials` as well:
++
++```txt
++layouts/
++└── partials/
++ ├── footer/
++ │ ├── scripts.html
++ │ └── site-footer.html
++ ├── head/
++ │ ├── favicons.html
++ │ ├── metadata.html
++ │ ├── prerender.html
++ │ └── twitter.html
++ └── header/
++ ├── site-header.html
++ └── site-nav.html
++```
++
++All partials are called within your templates using the following pattern:
++
++```go-html-template
++{{ partial "<PATH>/<PARTIAL>.html" . }}
++```
++
++{{% note %}}
++One of the most common mistakes with new Hugo users is failing to pass a context to the partial call. In the pattern above, note how "the dot" (`.`) is required as the second argument to give the partial context. You can read more about "the dot" in the [Hugo templating introduction](/templates/introduction/#context).
++{{% /note %}}
++
++{{% note %}}
++`<PARTIAL>` including `baseof` is reserved. ([#5373](https://github.com/gohugoio/hugo/issues/5373))
++{{% /note %}}
++
++As shown in the above example directory structure, you can nest your directories within `partials` for better source organization. You only need to call the nested partial's path relative to the `partials` directory:
++
++```go-html-template
++{{ partial "header/site-header.html" . }}
++{{ partial "footer/scripts.html" . }}
++```
++
++### Variable scoping
++
++The second argument in a partial call is the variable being passed down. The above examples are passing the `.`, which tells the template receiving the partial to apply the current [context][context].
++
++This means the partial will *only* be able to access those variables. The partial is isolated and cannot access the outer scope. From within the partial, `$.Var` is equivalent to `.Var`.
++
++## Returning a value from a partial
++
++In addition to outputting markup, partials can be used to return a value of any type. In order to return a value, a partial must include a lone `return` statement *at the end of the partial*.
++
++### Example GetFeatured
++
++```go-html-template
++{{/* layouts/partials/GetFeatured.html */}}
++{{ return first . (where site.RegularPages "Params.featured" true) }}
++```
++
++```go-html-template
++{{/* layouts/index.html */}}
++{{ range partial "GetFeatured.html" 5 }}
++ [...]
++{{ end }}
++```
++
++### Example GetImage
++
++```go-html-template
++{{/* layouts/partials/GetImage.html */}}
++{{ $image := false }}
++{{ with .Params.gallery }}
++ {{ $image = index . 0 }}
++{{ end }}
++{{ with .Params.image }}
++ {{ $image = . }}
++{{ end }}
++{{ return $image }}
++```
++
++```go-html-template
++{{/* layouts/_default/single.html */}}
++{{ with partial "GetImage.html" . }}
++ [...]
++{{ end }}
++```
++
++{{% note %}}
++Only one `return` statement is allowed per partial file.
++{{% /note %}}
++
++## Inline partials
++
++You can also define partials inline in the template. But remember that template namespace is global, so you need to make sure that the names are unique to avoid conflicts.
++
++```go-html-template
++Value: {{ partial "my-inline-partial.html" . }}
++
++{{ define "partials/my-inline-partial.html" }}
++{{ $value := 32 }}
++{{ return $value }}
++{{ end }}
++```
++
++## Cached partials
++
++The `partialCached` template function provides significant performance gains for complex templates that don't need to be re-rendered on every invocation. See [details][partialcached].
++
++## Examples
++
++### `header.html`
++
++The following `header.html` partial template is used for [spf13.com](https://spf13.com/):
++
++{{< code file=layouts/partials/header.html >}}
++<!DOCTYPE html>
++<html class="no-js" lang="en-US" prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
++<head>
++ <meta charset="utf-8">
++
++ {{ partial "meta.html" . }}
++
++ <base href="{{ .Site.BaseURL }}">
++ <title> {{ .Title }} : spf13.com </title>
++ <link rel="canonical" href="{{ .Permalink }}">
++ {{ if .RSSLink }}<link href="{{ .RSSLink }}" rel="alternate" type="application/rss+xml" title="{{ .Title }}" />{{ end }}
++
++ {{ partial "head_includes.html" . }}
++</head>
++{{< /code >}}
++
++{{% note %}}
++The `header.html` example partial was built before the introduction of block templates to Hugo. Read more on [base templates and blocks](/templates/base/) for defining the outer chrome or shell of your master templates (i.e., your site's head, header, and footer). You can even combine blocks and partials for added flexibility.
++{{% /note %}}
++
++### `footer.html`
++
++The following `footer.html` partial template is used for [spf13.com](https://spf13.com/):
++
++{{< code file=layouts/partials/footer.html >}}
++<footer>
++ <div>
++ <p>
++ © 2013-14 Steve Francia.
++ <a href="https://creativecommons.org/licenses/by/3.0/" title="Creative Commons Attribution">Some rights reserved</a>;
++ please attribute properly and link back.
++ </p>
++ </div>
++</footer>
++{{< /code >}}
++
++[context]: /templates/introduction/
++[customize]: /hugo-modules/theme-components/
++[lookup order]: /templates/lookup-order/
++[partialcached]: /functions/partials/includecached/
++[themes]: /themes/
--- /dev/null
- title: Robots.txt file
- linkTitle: Robots.txt
+---
- keywords: [robots,search engines]
++title: robots.txt template
++linkTitle: robots.txt templates
+description: Hugo can generate a customized robots.txt in the same way as any other template.
+categories: [templates]
- weight: 230
- weight: 230
++keywords: []
+menu:
+ docs:
+ parent: templates
++ weight: 170
++weight: 170
+aliases: [/extras/robots-txt/]
+---
+
+To generate a robots.txt file from a template, change the [site configuration]:
+
+{{< code-toggle file=hugo >}}
+enableRobotsTXT = true
+{{< /code-toggle >}}
+
+By default, Hugo generates robots.txt using an [embedded template].
+
+[embedded template]: {{% eturl robots %}}
+
+```text
+User-agent: *
+```
+
+Search engines that honor the Robots Exclusion Protocol will interpret this as permission to crawl everything on the site.
+
+## robots.txt template lookup order
+
+You may overwrite the internal template with a custom template. Hugo selects the template using this lookup order:
+
+1. `/layouts/robots.txt`
+2. `/themes/<THEME>/layouts/robots.txt`
+
+## robots.txt template example
+
+{{< code file=layouts/robots.txt >}}
+User-agent: *
+{{ range .Pages }}
+Disallow: {{ .RelPermalink }}
+{{ end }}
+{{< /code >}}
+
+This template creates a robots.txt file with a `Disallow` directive for each page on the site. Search engines that honor the Robots Exclusion Protocol will not crawl any page on the site.
+
+{{% note %}}
+To create a robots.txt file without using a template:
+
+1. Set `enableRobotsTXT` to `false` in the site configuration.
+2. Create a robots.txt file in the `static` directory.
+
+Remember that Hugo copies everything in the [static directory][static] to the root of `publishDir` (typically `public`) when you build your site.
+
+[static]: /getting-started/directory-structure/
+{{% /note %}}
+
+[site configuration]: /getting-started/configuration/
--- /dev/null
- keywords: [rss,xml,templates]
+---
+title: RSS templates
+description: Use the embedded RSS template, or create your own.
+categories: [templates]
- weight: 160
- weight: 160
++keywords: []
+menu:
+ docs:
+ parent: templates
- [template lookup order]: #template-lookup-order
++ weight: 150
++weight: 150
+toc: true
+---
+
+## Configuration
+
+By default, when you build your site, Hugo generates RSS feeds for home, section, taxonomy, and term pages. Control feed generation in your site configuration. For example, to generate feeds for home and section pages, but not for taxonomy and term pages:
+
+{{< code-toggle file=hugo >}}
+[outputs]
+home = ['html', 'rss']
+section = ['html', 'rss']
+taxonomy = ['html']
+term = ['html']
+{{< /code-toggle >}}
+
+To disable feed generation for all [page kinds]:
+
+[page kinds]: /getting-started/glossary/#page-kind
+
+{{< code-toggle file=hugo >}}
+disableKinds = ['rss']
+{{< /code-toggle >}}
+
+By default, the number of items in each feed is unlimited. Change this as needed in your site configuration:
+
+{{< code-toggle file=hugo >}}
+[services.rss]
+limit = 42
+{{< /code-toggle >}}
+
+Set `limit` to `-1` to generate an unlimited number of items per feed.
+
+The built-in RSS template will render the following values, if present, from your site configuration:
+
+{{< code-toggle file=hugo >}}
+copyright = '© 2023 ABC Widgets, Inc.'
+[params.author]
+name = 'John Doe'
+email = 'jdoe@example.org'
+{{< /code-toggle >}}
+
+## Include feed reference
+
+To include a feed reference in the `head` element of your rendered pages, place this within the `head` element of your templates:
+
+```go-html-template
+{{ with .OutputFormats.Get "rss" -}}
+ {{ printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink site.Title | safeHTML }}
+{{ end }}
+```
+
+Hugo will render this to:
+
+```html
+<link rel="alternate" type="application/rss+xml" href="https://example.org/index.xml" title="ABC Widgets">
+```
+
+## Custom templates
+
+Override Hugo's [embedded RSS template] by creating one or more of your own, following the naming conventions as shown in the [template lookup order].
+
+[embedded RSS template]: {{% eturl rss %}}
-
- ## Template lookup order
-
- The table below shows the RSS template lookup order for the different page kinds. The first listing shows the lookup order when running with a theme (`demoTheme`).
-
- {{< datatable-filtered "output" "layouts" "OutputFormat == rss" "Example" "OutputFormat" "Suffix" "Template Lookup Order" >}}
++[template lookup order]: /templates/lookup-order/#rss-templates
+
+For example, to use different templates for home, section, taxonomy, and term pages:
+
+```text
+layouts/
+└── _default/
+ ├── home.rss.xml
+ ├── section.rss.xml
+ ├── taxonomy.rss.xml
+ └── term.rss.xml
+```
+
+RSS templates receive the `.Page` and `.Site` objects in context.
--- /dev/null
--- /dev/null
++---
++title: Section templates
++description: Use section templates to list members of a section.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 80
++weight: 80
++toc: true
++aliases: [/templates/sections/,/templates/section-templates/]
++---
++
++## Add content and front matter to section templates
++
++To effectively leverage section templates, you should first understand Hugo's [content organization](/content-management/organization/) and, specifically, the purpose of `_index.md` for adding content and front matter to section and other list pages.
++
++## Section template lookup order
++
++See [Template Lookup](/templates/lookup-order/).
++
++## Example: creating a default section template
++
++{{< code file=layouts/_default/section.html >}}
++{{ define "main" }}
++ <main>
++ {{ .Content }}
++
++ {{ $pages := where site.RegularPages "Type" "posts" }}
++ {{ $paginator := .Paginate $pages }}
++
++ {{ range $paginator.Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++
++ {{ template "_internal/pagination.html" . }}
++ </main>
++{{ end }}
++{{< /code >}}
++
++### Example: using `.Site.GetPage`
++
++The `.Site.GetPage` example that follows assumes the following project directory structure:
++
++```txt
++.
++└── content
++ ├── blog
++ │ ├── _index.md <-- title: My Hugo Blog
++ │ ├── post-1.md
++ │ ├── post-2.md
++ │ └── post-3.md
++ └── events
++ ├── event-1.md
++ └── event-2.md
++```
++
++`.Site.GetPage` will return `nil` if no `_index.md` page is found. Therefore, if `content/blog/_index.md` does not exist, the template will output the section name:
++
++```go-html-template
++<h1>{{ with .Site.GetPage "/blog" }}{{ .Title }}{{ end }}</h1>
++```
++
++Since `blog` has a section index page with front matter at `content/blog/_index.md`, the above code will return the following result:
++
++```html
++<h1>My Hugo Blog</h1>
++```
++
++If we try the same code with the `events` section, however, Hugo will default to the section title because there is no `content/events/_index.md` from which to pull content and front matter:
++
++```go-html-template
++<h1>{{ with .Site.GetPage "/events" }}{{ .Title }}{{ end }}</h1>
++```
++
++Which then returns the following:
++
++```html
++<h1>Events</h1>
++```
++
++[contentorg]: /content-management/organization/
++[lookup]: /templates/lookup-order/
++[`where`]: /functions/collections/where/
++[sections]: /content-management/sections/
--- /dev/null
--- /dev/null
++---
++title: Create your own shortcodes
++linkTitle: Shortcode templates
++description: You can extend Hugo's embedded shortcodes by creating your own using the same templating syntax as that for single and list pages.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 130
++weight: 130
++aliases: [/templates/shortcode-templates/]
++toc: true
++---
++
++Shortcodes are a means to consolidate templating into small, reusable snippets that you can embed directly inside your content.
++
++{{% note %}}
++Hugo also ships with embedded shortcodes for common use cases. (See [Content Management: Shortcodes](/content-management/shortcodes/).)
++{{% /note %}}
++
++## Create custom shortcodes
++
++Hugo's embedded shortcodes cover many common, but not all, use cases. Luckily, Hugo provides the ability to easily create custom shortcodes to meet your website's needs.
++
++{{< youtube Eu4zSaKOY4A >}}
++
++### File location
++
++To create a shortcode, place an HTML template in the `layouts/shortcodes` directory. Consider the file name carefully since the shortcode name will mirror that of the file but without the `.html` extension. For example, `layouts/shortcodes/myshortcode.html` will be called with either `{{</* myshortcode /*/>}}` or `{{%/* myshortcode /*/%}}`.
++
++You can organize your shortcodes in subdirectories, e.g. in `layouts/shortcodes/boxes`. These shortcodes would then be accessible with their relative path, e.g:
++
++```go-html-template
++{{</* boxes/square */>}}
++```
++
++Note the forward slash.
++
++### Shortcode template lookup order
++
++Shortcode templates have a simple [lookup order]:
++
++1. `/layouts/shortcodes/<SHORTCODE>.html`
++2. `/themes/<THEME>/layouts/shortcodes/<SHORTCODE>.html`
++
++### Positional vs. named arguments
++
++You can create shortcodes using the following types of arguments:
++
++* Positional arguments
++* Named arguments
++* Positional *or* named arguments
++
++In shortcodes with positional arguments, the order of the arguments is important. If a shortcode has a single required value, positional arguments require less typing from content authors.
++
++For more complex layouts with multiple or optional arguments, named arguments work best. While less terse, named arguments require less memorization from a content author and can be added in a shortcode declaration in any order.
++
++Allowing both types of arguments is useful for complex layouts where you want to set default values that can be easily overridden by users.
++
++### Access arguments
++
++All shortcode arguments can be accessed via the `.Get` method. Whether you pass a string or a number to the `.Get` method depends on whether you are accessing a named or positional argument, respectively.
++
++To access an argument by name, use the `.Get` method followed by the named argument as a quoted string:
++
++```go-html-template
++{{ .Get "class" }}
++```
++
++To access an argument by position, use the `.Get` followed by a numeric position, keeping in mind that positional arguments are zero-indexed:
++
++```go-html-template
++{{ .Get 0 }}
++```
++
++For the second position, you would just use:
++
++```go-html-template
++{{ .Get 1 }}
++```
++
++`with` is great when the output depends on a argument being set:
++
++```go-html-template
++{{ with .Get "class" }} class="{{ . }}"{{ end }}
++```
++
++`.Get` can also be used to check if a argument has been provided. This is
++most helpful when the condition depends on either of the values, or both:
++
++```go-html-template
++{{ if or (.Get "title") (.Get "alt") }} alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "title" }}{{ end }}"{{ end }}
++```
++
++#### `.Inner`
++
++The `.Inner` method returns the content between the opening and closing shortcode tags. To check if `.Inner` returns anything other than whitespace:
++
++```go-html-template
++{{ if strings.ContainsNonSpace .Inner }}
++ Inner is not empty
++{{ end }}
++```
++
++{{% note %}}
++Any shortcode that calls the `.Inner` method must be closed or self-closed. To call a shortcode using the self-closing syntax.
++
++```go-html-template
++{{</* innershortcode /*/>}}
++```
++
++{{% /note %}}
++
++#### `.Params`
++
++The `.Params` method in shortcodes returns the arguments passed to the shortcode for more complicated use cases. You can also access higher-scoped arguments with the following logic:
++
++$.Params
++: these are the arguments passed directly into the shortcode declaration (e.g., a YouTube video ID)
++
++$.Page.Params
++: refers to the page's parameters; the "page" in this case refers to the content file in which the shortcode is declared (e.g., a `shortcode_color` field in a content's front matter could be accessed via `$.Page.Params.shortcode_color`).
++
++$.Site.Params
++: refers to parameters defined in your site configuration.
++
++#### `.IsNamedParams`
++
++The `.IsNamedParams` method checks whether the shortcode declaration uses named arguments and returns a boolean value.
++
++For example, you could create an `image` shortcode that can take either a `src` named argument or the first positional argument, depending on the preference of the content's author. Let's assume the `image` shortcode is called as follows:
++
++```go-html-template
++{{</* image src="images/my-image.jpg" */>}}
++```
++
++You could then include the following as part of your shortcode templating:
++
++```go-html-template
++{{ if .IsNamedParams }}
++ <img src="{{ .Get "src" }}" alt="">
++{{ else }}
++ <img src="{{ .Get 0 }}" alt="">
++{{ end }}
++```
++
++See the [example Vimeo shortcode][vimeoexample] below for `.IsNamedParams` in action.
++
++{{% note %}}
++While you can create shortcode templates that accept both positional and named arguments, you *cannot* declare shortcodes in content with a mix of argument types. Therefore, a shortcode declared like `{{</* image src="images/my-image.jpg" "This is my alt text" */>}}` will return an error.
++{{% /note %}}
++
++Shortcodes can also be nested. In a nested shortcode, you can access the parent shortcode context with the [`.Parent`] shortcode method. This can be very useful for inheritance from the root.
++
++### Checking for existence
++
++You can check if a specific shortcode is used on a page by calling `.HasShortcode` in that page template, providing the name of the shortcode. This is useful when you want to include specific scripts or styles in the header that are only used by that shortcode.
++
++## Custom shortcode examples
++
++The following are examples of the different types of shortcodes you can create via shortcode template files in `/layouts/shortcodes`.
++
++### Single-word example: `year`
++
++Let's assume you would like to keep mentions of your copyright year current in your content files without having to continually review your Markdown. Your goal is to be able to call the shortcode as follows:
++
++```go-html-template
++{{</* year */>}}
++```
++
++{{< code file=layouts/shortcodes/year.html >}}
++{{ now.Format "2006" }}
++{{< /code >}}
++
++### Single positional example: `youtube`
++
++Embedded videos are a common addition to Markdown content. The following is the code used by [Hugo's built-in YouTube shortcode][youtubeshortcode]:
++
++```go-html-template
++{{</* youtube 09jf3ow9jfw */>}}
++```
++
++Would load the template at `/layouts/shortcodes/youtube.html`:
++
++{{< code file=layouts/shortcodes/youtube.html >}}
++<div class="embed video-player">
++<iframe class="youtube-player" type="text/html" width="640" height="385" src="https://www.youtube.com/embed/{{ index .Params 0 }}" allowfullscreen frameborder="0">
++</iframe>
++</div>
++{{< /code >}}
++
++{{< code file=youtube-embed.html >}}
++<div class="embed video-player">
++ <iframe class="youtube-player" type="text/html"
++ width="640" height="385"
++ src="https://www.youtube.com/embed/09jf3ow9jfw"
++ allowfullscreen frameborder="0">
++ </iframe>
++</div>
++{{< /code >}}
++
++### Single named example: `image`
++
++Let's say you want to create your own `img` shortcode rather than use Hugo's built-in [`figure` shortcode][figure]. Your goal is to be able to call the shortcode as follows in your content files:
++
++{{< code file=content-image.md >}}
++{{</* img src="/media/spf13.jpg" title="Steve Francia" */>}}
++{{< /code >}}
++
++You have created the shortcode at `/layouts/shortcodes/img.html`, which loads the following shortcode template:
++
++{{< code file=layouts/shortcodes/img.html >}}
++<!-- image -->
++<figure {{ with .Get "class" }}class="{{ . }}"{{ end }}>
++ {{ with .Get "link" }}<a href="{{ . }}">{{ end }}
++ <img src="{{ .Get "src" }}" {{ if or (.Get "alt") (.Get "caption") }}alt="{{ with .Get "alt" }}{{ . }}{{ else }}{{ .Get "caption" }}{{ end }}"{{ end }} />
++ {{ if .Get "link" }}</a>{{ end }}
++ {{ if or (or (.Get "title") (.Get "caption")) (.Get "attr") }}
++ <figcaption>{{ if isset .Params "title" }}
++ <h4>{{ .Get "title" }}</h4>{{ end }}
++ {{ if or (.Get "caption") (.Get "attr") }}<p>
++ {{ .Get "caption" }}
++ {{ with .Get "attrlink" }}<a href="{{ . }}"> {{ end }}
++ {{ .Get "attr" }}
++ {{ if .Get "attrlink" }}</a> {{ end }}
++ </p> {{ end }}
++ </figcaption>
++ {{ end }}
++</figure>
++<!-- image -->
++{{< /code >}}
++
++Would be rendered as:
++
++{{< code file=img-output.html >}}
++<figure>
++ <img src="/media/spf13.jpg" />
++ <figcaption>
++ <h4>Steve Francia</h4>
++ </figcaption>
++</figure>
++{{< /code >}}
++
++### Single flexible example: `vimeo`
++
++```go-html-template
++{{</* vimeo 49718712 */>}}
++{{</* vimeo id="49718712" class="flex-video" */>}}
++```
++
++Would load the template found at `/layouts/shortcodes/vimeo.html`:
++
++{{< code file=layouts/shortcodes/vimeo.html >}}
++{{ if .IsNamedParams }}
++ <div class="{{ if .Get "class" }}{{ .Get "class" }}{{ else }}vimeo-container{{ end }}">
++ <iframe src="https://player.vimeo.com/video/{{ .Get "id" }}" allowfullscreen></iframe>
++ </div>
++{{ else }}
++ <div class="{{ if len .Params | eq 2 }}{{ .Get 1 }}{{ else }}vimeo-container{{ end }}">
++ <iframe src="https://player.vimeo.com/video/{{ .Get 0 }}" allowfullscreen></iframe>
++ </div>
++{{ end }}
++{{< /code >}}
++
++Would be rendered as:
++
++{{< code file=vimeo-iframes.html >}}
++<div class="vimeo-container">
++ <iframe src="https://player.vimeo.com/video/49718712" allowfullscreen></iframe>
++</div>
++<div class="flex-video">
++ <iframe src="https://player.vimeo.com/video/49718712" allowfullscreen></iframe>
++</div>
++{{< /code >}}
++
++### Paired example: `highlight`
++
++The following is taken from `highlight`, which is a [built-in shortcode] that ships with Hugo.
++
++{{< code file=highlight-example.md >}}
++{{</* highlight html */>}}
++ <html>
++ <body> This HTML </body>
++ </html>
++{{</* /highlight */>}}
++{{< /code >}}
++
++The template for the `highlight` shortcode uses the following code, which is already included in Hugo:
++
++```go-html-template
++{{ .Get 0 | highlight .Inner }}
++```
++
++The rendered output of the HTML example code block will be as follows:
++
++{{< code file=syntax-highlighted.html >}}
++<div class="highlight" style="background: #272822"><pre style="line-height: 125%"><span style="color: #f92672"><html></span>
++ <span style="color: #f92672"><body></span> This HTML <span style="color: #f92672"></body></span>
++<span style="color: #f92672"></html></span>
++</pre></div>
++{{< /code >}}
++
++### Nested shortcode: image gallery
++
++Hugo's [`.Parent`] shortcode method provides access to the parent shortcode context when the shortcode in question is called within the context of a parent shortcode. This provides an inheritance model.
++
++The following example is contrived but demonstrates the concept. Assume you have a `gallery` shortcode that expects one named `class` argument:
++
++{{< code file=layouts/shortcodes/gallery.html >}}
++<div class="{{ .Get "class" }}">
++ {{ .Inner }}
++</div>
++{{< /code >}}
++
++You also have an `img` shortcode with a single named `src` argument that you want to call inside of `gallery` and other shortcodes, so that the parent defines the context of each `img`:
++
++{{< code file=layouts/shortcodes/img.html >}}
++{{- $src := .Get "src" -}}
++{{- with .Parent -}}
++ <img src="{{ $src }}" class="{{ .Get "class" }}-image">
++{{- else -}}
++ <img src="{{ $src }}">
++{{- end -}}
++{{< /code >}}
++
++You can then call your shortcode in your content as follows:
++
++```go-html-template
++{{</* gallery class="content-gallery" */>}}
++ {{</* img src="/images/one.jpg" */>}}
++ {{</* img src="/images/two.jpg" */>}}
++{{</* /gallery */>}}
++{{</* img src="/images/three.jpg" */>}}
++```
++
++This will output the following HTML. Note how the first two `img` shortcodes inherit the `class` value of `content-gallery` set with the call to the parent `gallery`, whereas the third `img` only uses `src`:
++
++```html
++<div class="content-gallery">
++ <img src="/images/one.jpg" class="content-gallery-image">
++ <img src="/images/two.jpg" class="content-gallery-image">
++</div>
++<img src="/images/three.jpg">
++```
++
++## Error handling in shortcodes
++
++Use the [`errorf`] template function with the [`Name`] and [`Position`] shortcode methods to generate useful error messages:
++
++{{< code file=layouts/shortcodes/greeting.html >}}
++{{ with .Get "name" }}
++ <p>Hello, my name is {{ . }}.</p>
++{{ else }}
++ {{ errorf "The %q shortcode requires a 'name' argument. See %s" .Name .Position }}
++{{ end }}
++{{< /code >}}
++
++When the above fails, you will see an `ERROR` message such as:
++
++```sh
++ERROR The "greeting" shortcode requires a 'name' argument. See "/home/user/project/content/_index.md:12:1"
++```
++
++## Inline shortcodes
++
++You can also implement your shortcodes inline -- e.g. where you use them in the content file. This can be useful for scripting that you only need in one place.
++
++This feature is disabled by default, but can be enabled in your site configuration:
++
++{{< code-toggle file=hugo >}}
++[security]
++enableInlineShortcodes = true
++{{< /code-toggle >}}
++
++It is disabled by default for security reasons. The security model used by Hugo's template handling assumes that template authors are trusted, but that the content files are not, so the templates are injection-safe from malformed input data. But in most situations you have full control over the content, too, and then `enableInlineShortcodes = true` would be considered safe. But it's something to be aware of: It allows ad-hoc [Go Text templates](https://golang.org/pkg/text/template/) to be executed from the content files.
++
++And once enabled, you can do this in your content files:
++
++ ```go-html-template
++ {{</* time.inline */>}}{{ now }}{{</* /time.inline */>}}
++ ```
++
++The above will print the current date and time.
++
++Note that an inline shortcode's inner content is parsed and executed as a Go text template with the same context as a regular shortcode template.
++
++This means that the current page can be accessed via `.Page.Title` etc. This also means that there are no concept of "nested inline shortcodes".
++
++The same inline shortcode can be reused later in the same content file, with different arguments if needed, using the self-closing syntax:
++
++ ```go-html-template
++{{</* time.inline /*/>}}
++```
++
++[`.Parent`]: /methods/shortcode/parent/
++[`errorf`]: /functions/fmt/errorf/
++[`Name`]: /methods/shortcode/name/
++[`Position`]: /methods/shortcode/position/
++[built-in shortcode]: /content-management/shortcodes/
++[figure]: /content-management/shortcodes/#figure
++[lookup order]: /templates/lookup-order/
++[source organization]: /getting-started/directory-structure/
++[vimeoexample]: #single-flexible-example-vimeo
++[youtubeshortcode]: /content-management/shortcodes/#youtube
--- /dev/null
--- /dev/null
++---
++title: Single templates
++description: Create a single template to render a single page.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 70
++weight: 70
++toc: true
++aliases: [/layout/content/,/templates/single-page-templates/]
++---
++
++The single template below inherits the site's shell from the [base template].
++
++[base template]: /templates/types/
++
++{{< code file=layouts/_default/single.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++{{ end }}
++{{< /code >}}
++
++Review the [template lookup order] to select a template path that provides the desired level of specificity.
++
++[template lookup order]: /templates/lookup-order/#single-templates
++
++The single template below inherits the site's shell from the base template, and renders the page title, creation date, content, and a list of associated terms in the "tags" taxonomy.
++
++{{< code file=layouts/_default/single.html >}}
++{{ define "main" }}
++ <section>
++ <h1>{{ .Title }}</h1>
++ {{ with .Date }}
++ {{ $dateMachine := . | time.Format "2006-01-02T15:04:05-07:00" }}
++ {{ $dateHuman := . | time.Format ":date_long" }}
++ <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time>
++ {{ end }}
++ <article>
++ {{ .Content }}
++ </article>
++ <aside>
++ {{ with .GetTerms "tags" }}
++ <div>{{ (index . 0).Parent.LinkTitle }}</div>
++ <ul>
++ {{ range . }}
++ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
++ {{ end }}
++ </ul>
++ {{ end }}
++ </aside>
++ </section>
++{{ end }}
++{{< /code >}}
--- /dev/null
--- /dev/null
++---
++title: Sitemap templates
++description: Hugo provides built-in sitemap templates.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 140
++weight: 140
++toc: true
++aliases: [/layout/sitemap/,/templates/sitemap-template/]
++---
++
++## Overview
++
++Hugo's embedded sitemap templates conform to v0.9 of the [sitemap protocol].
++
++With a monolingual project, Hugo generates a sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemap template].
++
++With a multilingual project, Hugo generates:
++
++- A sitemap.xml file in the root of each site (language) using the [embedded sitemap template]
++- A sitemap.xml file in the root of the [`publishDir`] using the [embedded sitemapindex template]
++
++[embedded sitemap template]: {{% eturl sitemap %}}
++[embedded sitemapindex template]: {{% eturl sitemapindex %}}
++
++## Configuration
++
++These are the default sitemap configuration values. They apply to all pages unless overridden in front matter.
++
++{{< code-toggle config=sitemap />}}
++
++changefreq
++: (`string`) How frequently a page is likely to change. Valid values are `always`, `hourly`, `daily`, `weekly`, `monthly`, `yearly`, and `never`. With the default value of `""` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#changefreqdef).
++
++disable {{< new-in 0.125.0 >}}
++: (`bool`) Whether to disable page inclusion. Default is `false`. Set to `true` in front matter to exclude the page.
++
++filename
++: (`string`) The name of the generated file. Default is `sitemap.xml`.
++
++priority
++: (`float`) The priority of a page relative to any other page on the site. Valid values range from 0.0 to 1.0. With the default value of `-1` Hugo will omit this field from the sitemap. See [details](https://www.sitemaps.org/protocol.html#priority).
++
++## Override default values
++
++Override the default values for a given page in front matter.
++
++{{< code-toggle file=news.md fm=true >}}
++title = 'News'
++[sitemap]
++ changefreq = 'weekly'
++ disable = true
++ priority = 0.8
++{{</ code-toggle >}}
++
++## Override built-in templates
++
++To override the built-in sitemap.xml template, create a new file in either of these locations:
++
++- layouts/sitemap.xml
++- layouts/_default/sitemap.xml
++
++When ranging through the page collection, access the _change frequency_ and _priority_ with `.Sitemap.ChangeFreq` and `.Sitemap.Priority` respectively.
++
++To override the built-in sitemapindex.xml template, create a new file in either of these locations:
++
++- layouts/sitemapindex.xml
++- layouts/_default/sitemapindex.xml
++
++## Disable sitemap generation
++
++You may disable sitemap generation in your site configuration:
++
++{{< code-toggle file=hugo >}}
++disableKinds = ['sitemap']
++{{</ code-toggle >}}
++
++[`publishDir`]: /getting-started/configuration#publishdir
++[sitemap protocol]: <https://www.sitemaps.org/protocol.html>
--- /dev/null
--- /dev/null
++---
++title: Taxonomy templates
++description: Create a taxonomy template to render a list of terms.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 90
++weight: 90
++toc: true
++aliases: [/taxonomies/displaying/,/templates/terms/,/indexes/displaying/,/taxonomies/templates/,/indexes/ordering/, /templates/taxonomies/, /templates/taxonomy-templates/]
++---
++
++The [taxonomy] template below inherits the site's shell from the [base template], and renders a list of [terms] in the current taxonomy.
++
++[taxonomy]: /getting-started/glossary/#taxonomy
++[terms]: /getting-started/glossary/#term
++[base template]: /templates/types/
++
++{{< code file=layouts/_default/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++Review the [template lookup order] to select a template path that provides the desired level of specificity.
++
++[template lookup order]: /templates/lookup-order/#taxonomy-templates
++
++In the example above, the taxonomy and term will be capitalized if their respective pages are not backed by files. You can disable this in your site configuration:
++
++{{< code-toggle file=hugo >}}
++capitalizeListTitles = false
++{{< /code-toggle >}}
++
++## Data object
++
++Use these methods on the `Data` object within a taxonomy template.
++
++Singular
++: (`string`) Returns the singular name of the taxonomy.
++
++```go-html-template
++{{ .Data.Singular }} → tag
++```
++
++Plural
++: (`string`) Returns the plural name of the taxonomy.
++
++```go-html-template
++{{ .Data.Plural }} → tags
++```
++
++Terms
++: (`page.Taxonomy`) Returns the `Taxonomy` object, consisting of a map of terms and the [weighted pages] associated with each term.
++
++[weighted pages]: /getting-started/glossary/#weighted-page
++
++```go-html-template
++{{ $taxonomyObject := .Data.Terms }}
++```
++
++Once we have the `Taxonomy` object, we can call any of its [methods], allowing us to sort alphabetically or by term count.
++
++[methods]: /methods/taxonomy/
++
++## Sort alphabetically
++
++The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list alphabetically by term, and displays the number of pages associated with each term.
++
++{{< code file=layouts/_default/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Data.Terms.Alphabetical }}
++ <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++## Sort by term count
++
++The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list by the number of pages associated with each term, and displays the number of pages associated with each term.
++
++{{< code file=layouts/_default/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Data.Terms.ByCount }}
++ <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++## Include content links
++
++The [`Alphabetical`] and [`ByCount`] methods used in the previous examples return an [ordered taxonomy], so we can also list the content to which each term is assigned.
++
++[ordered taxonomy]: /getting-started/glossary/#ordered-taxonomy
++[`Alphabetical`]: /methods/taxonomy/alphabetical/
++[`ByCount`]: /methods/taxonomy/bycount/
++
++The taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy. Hugo sorts the list by the number of pages associated with each term, displays the number of pages associated with each term, then lists the content to which each term is assigned.
++
++{{< code file=layouts/_default/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Data.Terms.ByCount }}
++ <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a> ({{ .Count }})</h2>
++ <ul>
++ {{ range .WeightedPages }}
++ <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li>
++ {{ end }}
++ </ul>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++## Display metadata
++
++Display metadata about each term by creating a corresponding branch bundle in the content directory.
++
++For example, create an "authors" taxonomy:
++
++{{< code-toggle file=hugo >}}
++[taxonomies]
++author = 'authors'
++{{< /code-toggle >}}
++
++Then create content with one [branch bundle] for each term:
++
++[branch bundle]: /getting-started/glossary/#branch-bundle
++
++```text
++content/
++└── authors/
++ ├── jsmith/
++ │ ├── _index.md
++ │ └── portrait.jpg
++ └── rjones/
++ ├── _index.md
++ └── portrait.jpg
++```
++
++Then add front matter to each term page:
++
++{{< code-toggle file=content/authors/jsmith/_index.md fm=true >}}
++title = "John Smith"
++affiliation = "University of Chicago"
++{{< /code-toggle >}}
++
++Then create a taxonomy template specific to the "authors" taxonomy:
++
++{{< code file=layouts/authors/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Data.Terms.Alphabetical }}
++ <h2><a href="{{ .Page.RelPermalink }}">{{ .Page.LinkTitle }}</a></h2>
++ <p>Affiliation: {{ .Page.Params.Affiliation }}</p>
++ {{ with .Page.Resources.Get "portrait.jpg" }}
++ {{ with .Fill "100x100" }}
++ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="portrait">
++ {{ end }}
++ {{ end }}
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++In the example above we list each author including their affiliation and portrait.
--- /dev/null
--- /dev/null
++---
++title: Term templates
++description: Create a term template to render a list of pages associated with the current term.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 100
++weight: 100
++toc: true
++---
++
++The [term] template below inherits the site's shell from the [base template], and renders a list of pages associated with the current term.
++
++[term]: /getting-started/glossary/#term
++[base template]: /templates/types/
++
++{{< code file=layouts/_default/term.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++Review the [template lookup order] to select a template path that provides the desired level of specificity.
++
++[template lookup order]: /templates/lookup-order/#taxonomy-templates
++
++In the example above, the term will be capitalized if its respective page is not backed by a file. You can disable this in your site configuration:
++
++{{< code-toggle file=hugo >}}
++capitalizeListTitles = false
++{{< /code-toggle >}}
++
++## Data object
++
++Use these methods on the `Data` object within a term template.
++
++Singular
++: (`string`) Returns the singular name of the taxonomy.
++
++```go-html-template
++{{ .Data.Singular }} → tag
++```
++
++Plural
++: (`string`) Returns the plural name of the taxonomy.
++
++```go-html-template
++{{ .Data.Plural }} → tags
++```
++
++Term
++: (`string`) Returns the name of the term.
++
++```go-html-template
++{{ .Data.Term }} → fiction
++```
++
++## Display metadata
++
++Display metadata about each term by creating a corresponding branch bundle in the content directory.
++
++For example, create an "authors" taxonomy:
++
++{{< code-toggle file=hugo >}}
++[taxonomies]
++author = 'authors'
++{{< /code-toggle >}}
++
++Then create content with one [branch bundle] for each term:
++
++[branch bundle]: /getting-started/glossary/#branch-bundle
++
++```text
++content/
++└── authors/
++ ├── jsmith/
++ │ ├── _index.md
++ │ └── portrait.jpg
++ └── rjones/
++ ├── _index.md
++ └── portrait.jpg
++```
++
++Then add front matter to each term page:
++
++{{< code-toggle file=content/authors/jsmith/_index.md fm=true >}}
++title = "John Smith"
++affiliation = "University of Chicago"
++{{< /code-toggle >}}
++
++Then create a term template specific to the "authors" taxonomy:
++
++{{< code file=layouts/authors/term.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ <p>Affiliation: {{ .Params.affiliation }}</p>
++ {{ with .Resources.Get "portrait.jpg" }}
++ {{ with .Fill "100x100" }}
++ <img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="portrait">
++ {{ end }}
++ {{ end }}
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++In the example above we display the author with their affiliation and portrait, then a list of associated content.
--- /dev/null
--- /dev/null
++---
++title: Template types
++linkTitle: Template types
++description: Create templates of different types to render your content, resources, and data.
++categories: [templates]
++keywords: []
++menu:
++ docs:
++ parent: templates
++ weight: 30
++weight: 30
++toc: true
++aliases: ['/templates/lists/']
++---
++
++[](site-hierarchy.svg)
++
++## Structure
++
++Create templates in the layouts directory in the root of your project.
++
++Although your site may not require each of these templates, the example below is typical for a site of medium complexity.
++
++```text
++layouts/
++├── _default/
++│ ├── _markup/
++│ │ ├── render-image.html <-- render hook
++│ │ └── render-link.html <-- render hook
++│ ├── baseof.html
++│ ├── home.html
++│ ├── section.html
++│ ├── single.html
++│ ├── taxonomy.html
++│ └── term.html
++├── articles/
++│ └── card.html <-- content view
++├── partials/
++│ ├── footer.html
++│ └── header.html
++└── shortcodes/
++ ├── audio.html
++ └── video.html
++```
++
++Hugo's [template lookup order] determines the template path, allowing you to create unique templates for any page.
++
++[template lookup order]: /templates/lookup-order/
++
++{{% note %}}
++You must have thorough understanding of the [template lookup order] when creating templates. Template selection is based on template type, page kind, content type, section, language, and output format.
++
++[template lookup order]: /templates/lookup-order/
++{{% /note %}}
++
++The purpose of each template type is described below.
++
++## Base
++
++Base templates reduce duplicate code by wrapping other templates within a shell.
++
++For example, the base template below calls the [partial] function to include partial templates for the `head`, `header`, and `footer` elements of each page, and it uses the [block] function to include `home`, `single`, `section`, `taxonomy`, and `term` templates within the `main` element of each page.
++
++[block]: /functions/go-template/block/
++[partial]: /functions/partials/include/
++
++{{< code file=layouts/_default/baseof.html >}}
++<!DOCTYPE html>
++<html lang="{{ or site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}">
++<head>
++ {{ partial "head.html" . }}
++</head>
++<body>
++ <header>
++ {{ partial "header.html" . }}
++ </header>
++ <main>
++ {{ block "main" . }}{{ end }}
++ </main>
++ <footer>
++ {{ partial "footer.html" . }}
++ </footer>
++</body>
++</html>
++{{< /code >}}
++
++Learn more about [base templates](/templates/base/).
++
++## Home
++
++A home template renders your site's home page. For a single page site this is the only required template.
++
++For example, the home template below inherits the site's shell from the base template, and renders the home page content with a list of pages.
++
++{{< code file=layouts/_default/home.html >}}
++{{ define "main" }}
++ {{ .Content }}
++ {{ range site.RegularPages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++{{% include "templates/_common/filter-sort-group.md" %}}
++
++Learn more about [home templates](/templates/home/).
++
++## Single
++
++A single template renders a single page.
++
++For example, the single template below inherits the site's shell from the base template, and renders the title and content of each page.
++
++{{< code file=layouts/_default/single.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++{{ end }}
++{{< /code >}}
++
++Learn more about [single templates](/templates/single/).
++
++## Section
++
++A section template typically renders a list of pages within a section.
++
++For example, the section template below inherits the site's shell from the base template, and renders a list of pages in the current section.
++
++{{< code file=layouts/_default/section.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++{{% include "templates/_common/filter-sort-group.md" %}}
++
++Learn more about [section templates](/templates/section/).
++
++## Taxonomy
++
++A taxonomy template renders a list of terms in a [taxonomy].
++
++[taxonomy]: /getting-started/glossary/#taxonomy
++
++For example, the taxonomy template below inherits the site's shell from the base template, and renders a list of terms in the current taxonomy.
++
++{{< code file=layouts/_default/taxonomy.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++{{% include "templates/_common/filter-sort-group.md" %}}
++
++Learn more about [taxonomy templates](/templates/taxonomy/).
++
++## Term
++
++A term template renders a list of pages associated with a [term].
++
++[term]: /getting-started/glossary/#term
++
++For example, the term template below inherits the site's shell from the base template, and renders a list of pages associated with the current term.
++
++{{< code file=layouts/_default/term.html >}}
++{{ define "main" }}
++ <h1>{{ .Title }}</h1>
++ {{ .Content }}
++ {{ range .Pages }}
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ end }}
++{{ end }}
++{{< /code >}}
++
++{{% include "templates/_common/filter-sort-group.md" %}}
++
++Learn more about [term templates](/templates/term/).
++
++## Partial
++
++A partial template is typically used to render a component of your site, though you may also create partial templates that return values.
++
++{{% note %}}
++Unlike other template types, you cannot create partial templates to target a particular page kind, content type, section, language, or output format. Partial templates do not follow Hugo's [template lookup order].
++
++[template lookup order]: /templates/lookup-order/
++{{% /note %}}
++
++For example, the partial template below renders copyright information.
++
++{{< code file=layouts/partials/footer.html >}}
++<p>Copyright {{ now.Year }}. All rights reserved.</p>
++{{< /code >}}
++
++Learn more about [partial templates](/templates/partial/).
++
++## Content view
++
++A content view template is similar to a partial template, invoked by calling the [`Render`] method on a `Page` object. Unlike partial templates, content view templates:
++
++- Automatically inherit the context of the current page
++- Follow a lookup order allowing you to target a given content type or section
++
++[`Render`]: /methods/page/render/
++
++For example, the home template below inherits the site's shell from the base template, and renders a card component for each page within the "articles" section of your site.
++
++{{< code file=layouts/_default/home.html >}}
++{{ define "main" }}
++ {{ .Content }}
++ <ul>
++ {{ range where site.RegularPages "Section" "articles" }}
++ {{ .Render "card" }}
++ {{ end }}
++ </ul>
++{{ end }}
++{{< /code >}}
++
++{{< code file=layouts/articles/card.html >}}
++<div class="card">
++ <h2><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></h2>
++ {{ .Summary }}
++</div>
++{{< /code >}}
++
++Learn more about [content view templates](/templates/content-view/).
++
++## Render hook
++
++A render hook template overrides the conversion of Markdown to HTML.
++
++For example, the render hook template below adds a `rel` attribute to external links.
++
++{{< code file=layouts/_default/_markup/render-link.html >}}
++{{- $u := urls.Parse .Destination -}}
++<a href="{{ .Destination | safeURL }}"
++ {{- with .Title }} title="{{ . }}"{{ end -}}
++ {{- if $u.IsAbs }} rel="external"{{ end -}}
++>
++ {{- with .Text | safeHTML }}{{ . }}{{ end -}}
++</a>
++{{- /* chomp trailing newline */ -}}
++{{< /code >}}
++
++Learn more about [render hook templates](/render-hooks/).
++
++## Shortcode
++
++A shortcode template is used to render a component of your site. Unlike partial templates, shortcode templates are called from content pages.
++
++For example, the shortcode template below renders an audio element from a [global resource].
++
++[global resource]: /getting-started/glossary/#global-resource
++
++{{< code file=layouts/shortcodes/audio.html >}}
++{{ with resources.Get (.Get "src") }}
++ <audio controls preload="auto" src="{{ .RelPermalink }}"></audio>
++{{ end }}
++{{< /code >}}
++
++Call the shortcode from your content page:
++
++{{< code file=content/example.md >}}
++{{</* audio src="audio/test.mp3" */>}}
++{{< /code >}}
++
++Learn more about [shortcode templates](/templates/shortcode/).
++
++## Other
++
++Use other specialized templates to create:
++
++- [Sitemaps](/templates/sitemap)
++- [RSS feeds](/templates/rss/)
++- [404 error pages](/templates/404/)
++- [robots.txt files](/templates/robots/)
--- /dev/null
--- /dev/null
++<svg height="446" viewBox="0 0 1730 446" width="1730" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd" transform="translate(.538462 .461538)"><g transform="translate(2.996935 .388277)"><path d="m64.0494614 5.00059856 58.8489506 34.18916364v67.3333318l-58.8489506 33.404195-58.75248965-33.404195v-67.3333318z" fill="#ff4088"/><path d="m126.283637 35.8185172 1.230228 2.1375217v69.8133611l-1.253295 2.152899-60.9934622 34.621142h-2.4387878l-60.89490434-34.623239-1.25189712-2.1522v-69.8112641l1.22883034-2.1368227 60.89280732-35.43476985h2.4891154zm-116.37121203 6.0253228v61.994421l54.13913343 30.780872 54.2320996-30.782969v-61.990227l-54.2320996-31.5064271z" fill="#c9177e"/></g><path d="m60.4490685 78.3838073h-16.0432056v-32.93617h-27.9340521v32.93617h-16.04320555v-77.90259702h16.04320555v32.56189542h27.9340521v-32.56189542h16.0432056z" fill="#fff" fill-rule="nonzero" transform="translate(35.169824 33.865851)"/><g transform="translate(329.992265 24.431705)"><path d="m.21765.21067h263.332986v115.673517h-263.332986z" fill="#0083c0"/><path d="m263.550636 115.884187h-263.33298624v-115.6735171h263.33298624zm-260.79463916-113.13482905v110.59614105h258.25629216v-110.59614105z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(352.419436 42.870159)"><path d="m22.7288949.05688029h3.6312065v31.52968501h-3.6312065v-14.4804699h-18.90904412v14.4804699h-3.58685032v-31.52968501h3.58685032v13.99359541h18.90904412z"/><path d="m37.3865286 30.4794869c-1.5939528-.9445259-2.826533-2.2879966-3.6974799-4.0296294-.8709468-1.7418937-1.3064203-3.7788866-1.3064203-6.1112394 0-2.332092.4354735-4.3693457 1.3064203-6.1109785.8709469-1.7418937 2.1035271-3.0851036 3.6974799-4.0298904 1.5942137-.94478689 3.4394312-1.41704986 5.5356526-1.41704986 2.0959605 0 3.941178.47226297 5.5353917 1.41704986 1.5942137.9447868 2.826533 2.2879967 3.6974799 4.0298904.8709468 1.7416328 1.3064203 3.7788865 1.3064203 6.1109785 0 2.3323528-.4354735 4.3693457-1.3064203 6.1112394-.8709469 1.7416328-2.1032662 3.0851035-3.6974799 4.0296294-1.5942137.9447869-3.4394312 1.4170499-5.5353917 1.4170499-2.0962214 0-3.9414389-.472263-5.5356526-1.4170499zm10.6280042-3.741836c1.1809184-1.461406 1.7713776-3.594417 1.7713776-6.3990328 0-2.7159035-.6050707-4.8194306-1.8154728-6.3103205-1.2104022-1.4908898-2.8933283-2.2363347-5.0482564-2.2363347-2.1846728 0-3.8822104.7454449-5.0926125 2.2363347-1.2104022 1.4908899-1.8157337 3.594417-1.8157337 6.3103205 0 2.8046158.5977649 4.9376268 1.7935556 6.3990328 1.1955298 1.461406 2.9006339 2.1919786 5.1147906 2.1919786s3.9116942-.7305726 5.0923516-2.1919786z"/><path d="m91.1464927 17.5929699v13.9935954h-3.5868503v-13.8164316c0-2.0959605-.3616334-3.6163341-1.0849002-4.561121-.7232669-.9447869-1.8968795-1.4170498-3.520577-1.4170498-1.8893128 0-3.3655912.6348153-4.4283133 1.9041851-1.0627222 1.2693698-1.5942137 2.9966521-1.5942137 5.181064v12.7093533h-3.5868503v-13.8164316c0-2.0664767-.3692001-3.5795446-1.1070784-4.5389429-.7381392-.9593983-1.9190575-1.4392279-3.542755-1.4392279-1.8893128 0-3.3728969.6348153-4.4504915 1.9041851-1.0775945 1.2693698-1.6163917 2.9966521-1.6163917 5.181064v12.7093533h-3.5868504v-16.0305883c0-2.3026081-.1181962-4.3839571-.3543276-6.24378613h3.4099473l.3540668 3.89682183c.619943-1.4170498 1.5425518-2.5092558 2.7678263-3.27687883 1.2252746-.76762302 2.6496301-1.15143453 4.2733276-1.15143453 1.7713775 0 3.2179112.35432769 4.3398619 1.06272215 1.1216898.70865541 1.9482805 1.80086131 2.479772 3.27713971.6789106-1.3285983 1.6753594-2.3840148 2.9890854-3.16624924 1.313726-.78249538 2.7973101-1.17361262 4.4504915-1.17361262 4.930321 0 7.3952206 2.93742346 7.3952206 8.81227056z"/><path d="m116.609555 20.3386181h-16.340559c.029483 2.8340996.686477 4.9744163 1.970458 6.4212109 1.284242 1.4465336 3.151638 2.1698005 5.601926 2.1698005 2.597968 0 4.989289-.8709469 7.173962-2.6128406l1.19553 2.6128406c-.974271.915303-2.221463 1.6385698-3.741837 2.1698004-1.520373.5314916-3.077797.7971069-4.672011.7971069-3.483526 0-6.214302-1.0259326-8.1923275-3.0775369-1.9780252-2.0518652-2.9669073-4.8637868-2.9669073-8.4360256 0-2.2731244.4427791-4.2882 1.3283374-6.0447052.8858192-1.7565051 2.1257054-3.121893 3.7199194-4.0961637 1.594213-.97427072 3.409686-1.46140606 5.44694-1.46140606 2.952035 0 5.269515.96696496 6.952441 2.90063396 1.682665 1.933669 2.524128 4.5979105 2.524128 7.9929856zm-13.971417-7.0852492c-1.166046 1.1216898-1.911491 2.701292-2.236335 4.7382848h12.974969c-.177164-2.0959604-.789801-3.6901741-1.837651-4.782641-1.048111-1.092206-2.50195-1.6385699-4.36204-1.6385699-1.859829 0-3.372897.5609754-4.538943 1.6829261z"/><path d="m138.352699 10.2421054c1.505502.9742707 2.671548 2.3396586 3.498399 4.0961637.826591 1.7565052 1.239886 3.7861923 1.239886 6.0890613 0 2.3026082-.413295 4.3174229-1.239886 6.0444443-.826851 1.7272822-1.985592 3.0631863-3.476221 4.0077122-1.49089.9447869-3.225478 1.4170499-5.203503 1.4170499-1.741632 0-3.262006-.3838115-4.561121-1.1511736-1.298853-.767623-2.287996-1.8600899-2.966907-3.2771398v13.683624h-3.587111v-25.5958704c0-2.3026081-.117936-4.3839571-.354067-6.24378613h3.409686l.354328 4.29550573c.619943-1.5352461 1.60152-2.7234701 2.944729-3.5649332 1.343471-.841463 2.930118-1.26206406 4.760463-1.26206406 1.948542 0 3.675563.48713534 5.181325 1.46140606zm-.774929 16.4733674c1.19553-1.4760175 1.793295-3.5722389 1.793295-6.2881424 0-2.7161643-.60507-4.8343029-1.815473-6.3546766-1.210402-1.5203736-2.893328-2.2806909-5.048256-2.2806909-2.214418 0-3.911694.7381392-5.092613 2.2141566-1.180918 1.4760175-1.771377 3.5868504-1.771377 6.3324986s.590459 4.8637867 1.771377 6.3546766c1.180919 1.4908898 2.878195 2.2363348 5.092613 2.2363348 2.184412 0 3.874644-.7381392 5.070434-2.2141567z"/><path d="m168.243032 9.31219087v22.27437443h-3.540668v-4.0296295c-.649688 1.387566-1.633352 2.4575939-2.945773 3.2103445-1.313987.7530116-2.841666 1.1292565-4.58356 1.1292565-1.978025 0-3.712352-.472263-5.203242-1.4170499-1.49089-.9445259-2.642325-2.28043-3.454043-4.0077122-.811979-1.7270214-1.217969-3.7418361-1.217969-6.0444443 0-2.302869.413296-4.3325561 1.239886-6.0890613.826852-1.7565051 1.985592-3.121893 3.476221-4.0961637 1.49089-.97427072 3.210606-1.46140606 5.159147-1.46140606 1.741894 0 3.262267.38381151 4.560077 1.15143453 1.299376.76762303 2.288258 1.84521753 2.969256 3.23252263v-3.85246563zm-5.312307 17.38110383c1.179353-1.4908899 1.771639-3.6090284 1.771639-6.3546766s-.592286-4.8564811-1.771639-6.3324986c-1.181962-1.4760174-2.864627-2.2141566-5.0493-2.2141566-2.184412 0-3.889516.7603173-5.114529 2.2806909-1.225275 1.5203737-1.837912 3.6385123-1.837912 6.3546766 0 2.7159035.605331 4.8121249 1.815734 6.2881424 1.210402 1.4760175 2.922551 2.2141567 5.136707 2.2141567 2.184673 0 3.867338-.745445 5.0493-2.2363348z"/><path d="m195.034171 9.31219087v22.09721053c0 3.3066236-.847986 5.8085737-2.543958 7.5061112-1.698581 1.6975375-4.200792 2.5463063-7.506633 2.5463063-3.394553 0-6.319453-.7676231-8.76948-2.3028691l.620987-2.9225511c1.416789.7971068 2.752693 1.3726936 4.007712 1.7270213s2.63528.5314915 4.140781.5314915c2.155189 0 3.778104-.568281 4.871353-1.7051041 1.090641-1.1365622 1.63857-2.826533 1.63857-5.0704345v-5.2695154c-.680998 1.4170498-1.675098 2.5165615-2.990129 3.2990569-1.315031.7822345-2.870106 1.1733517-4.670446 1.1733517-1.949063 0-3.684173-.4573906-5.205329-1.3726936-1.518548-.9150422-2.692682-2.2141567-3.519795-3.8968219-.827112-1.682926-1.239364-3.616595-1.239364-5.8012679 0-2.1846728.412252-4.1183418 1.239364-5.801007.827113-1.682926 2.001247-2.9817797 3.519795-3.8970827 1.521156-.91504214 3.256266-1.37269366 5.205329-1.37269366 1.769029 0 3.313668.38381151 4.62609 1.15143453 1.31503.76762303 2.309131 1.84521753 2.990129 3.23252263v-3.85246563zm-5.424501 16.45118933c1.226318-1.4319222 1.839477-3.4023808 1.839477-5.9118975 0-2.5092558-.613159-4.4799752-1.839477-5.9116365-1.223709-1.4319222-2.914463-2.1478833-5.069652-2.1478833-2.18389 0-3.903345.7159611-5.158364 2.1478833-1.255019 1.4316613-1.881224 3.4023807-1.881224 5.9116365 0 2.5095167.626205 4.4799753 1.881224 5.9118975s2.974474 2.1476224 5.158364 2.1476224c2.155189 0 3.845943-.7157002 5.069652-2.1476224z"/><path d="m220.585946 20.3386181h-16.338733c.028701 2.8340996.686216 4.9744163 1.969936 6.4212109 1.283721 1.4465336 3.151899 2.1698005 5.601926 2.1698005 2.598751 0 4.988767-.8709469 7.172657-2.6128406l1.195008 2.6128406c-.973227.915303-2.220419 1.6385698-3.741575 2.1698004-1.518547.5314916-3.076232.7971069-4.670446.7971069-3.483266 0-6.215085-1.0259326-8.192849-3.0775369-1.977765-2.0518652-2.966647-4.8637868-2.966647-8.4360256 0-2.2731244.443562-4.2882 1.328077-6.0447052.887124-1.7565051 2.126488-3.121893 3.720701-4.0961637 1.594214-.97427072 3.410209-1.46140606 5.445375-1.46140606 2.953601 0 5.270559.96696496 6.953485 2.90063396s2.523085 4.5979105 2.523085 7.9929856zm-13.969591-7.0852492c-1.166307 1.1216898-1.912535 2.701292-2.236074 4.7382848h12.972881c-.177424-2.0959604-.787974-3.6901741-1.836868-4.782641-1.048893-1.092206-2.502211-1.6385699-4.362562-1.6385699-1.86035 0-3.37107.5609754-4.537377 1.6829261z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(347.017193 95.746626)"><path d="m.13103057 17.5444886 1.30960428-16.95274668h3.09535177l-1.16678937 14.42893518h7.92875255l-.1903731 2.5238115z"/><path d="m13.2028032 17.5444886.9524268-12.02408921h2.9762458l-.9524267 12.02408921zm1.1904984-17.47658839h3.3095741l-.2142224 2.92868762h-3.3095741z"/><path d="m18.7267099 16.2111754 1.0238341-2.0715176c1.3493063.936574 2.7858728 1.404861 4.3096994 1.404861 1.5396794 0 2.3095892-.4444378 2.3095892-1.3334535 0-.412592-.202438-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516115-.4563624-1.940487-.7261395-.8413173-.2380716-1.5398197-.4762835-2.0953669-.7143551-.5555471-.2380716-1.0277622-.5833245-1.4166453-1.0357588-.388883-.452294-.5833245-1.04361503-.5833245-1.77382287 0-1.14279984.4602905-2.06352109 1.3808714-2.76188318.9207213-.69850237 2.1429251-1.04768342 3.6667517-1.04768342.8890158 0 1.7461858.13495869 2.5715101.40473576.8254645.26991737 1.5159704.64294766 2.0715176 1.11909088l-.999985 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6906009-1.35716248-.7460606 0-1.3174605.11910595-1.71434.35717755-.3968796.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.202438.74998869.6071738.96421105.4047358.21436265 1.0594677.45636238 1.9643363.72627978.8730227.2539243 1.5793813.4960643 2.1190758.7261394.5396944.2302154 1.0040533.5754683 1.3929363 1.0357588.388883.4604308.5833246 1.0556799.5833246 1.7857475 0 1.1587929-.4602905 2.0635211-1.3810118 2.714325-.9207212.6508038-2.1587778.9762759-3.7143099.9762759-1.9525519 0-3.7064536-.5079889-5.262126-1.5238266z"/><path d="m35.3699775 13.1396729c-.1111094 1.4127172.4841397 2.1190758 1.7857475 2.1190758.3651741 0 .7777661-.0555547 1.2381968-.1666642l-.1905134 2.3334385c-.5238417.1903731-1.1746456.2856298-1.9524116.2856298-1.2540496 0-2.2143325-.3294002-2.8809891-.9880603-.6667969-.6588004-1.0001253-1.6151552-1.0001253-2.8690645 0-.2382119.0079966-.4207288.0238493-.547691l.428585-5.54775586h-2.3095892l.1905134-2.23818175h2.28574l.2380716-2.92854732 3.0476532-1.00012522-.309479 3.92867254h3.2143174l-.1903731 2.23818175h-3.1906085z"/><path d="m39.5605709 16.2111754 1.0238342-2.0715176c1.349166.936574 2.7857324 1.404861 4.309559 1.404861 1.5398197 0 2.3095893-.4444378 2.3095893-1.3334535 0-.412592-.2022978-.7261395-.6071738-.9405021-.4047358-.2142224-1.0516116-.4563624-1.9404871-.7261395-.8413172-.2380716-1.5396793-.4762835-2.0952265-.7143551s-1.0279026-.5833245-1.4167856-1.0357588c-.388883-.452294-.5833246-1.04361503-.5833246-1.77382287 0-1.14279984.4602905-2.06352109 1.3810118-2.76188318.9207212-.69850237 2.142925-1.04768342 3.6667517-1.04768342.8888754 0 1.7460455.13495869 2.57151.40473576.8253243.26991737 1.5158301.64294766 2.0715176 1.11909088l-1.0001252 2.0238191c-1.1904983-.90472823-2.4206986-1.35716248-3.6904606-1.35716248-.7460606 0-1.3176008.11910595-1.7143401.35717755-.3968795.23807161-.5952492.58725266-.5952492 1.04768343 0 .42858501.2022978.74998869.6071738.96421105.4047358.21436265 1.0594678.45636238 1.964196.72627978.8731631.2539243 1.5795217.4960643 2.1192161.7261394.5396945.2302154 1.003913.5754683 1.3927961 1.0357588.388883.4604308.5833245 1.0556799.5833245 1.7857475 0 1.1587929-.4602905 2.0635211-1.3808714 2.714325-.9207213.6508038-2.1587778.9762759-3.7144502.9762759-1.9524117 0-3.7064537-.5079889-5.2619858-1.5238266z"/><path d="m58.3943218 15.592077.7380641-1.4999774c.8413173.7142148 1.6984873 1.2222038 2.57151 1.5238266.8730228.3016229 1.8890008.4524343 3.0476533.4524343 1.365159 0 2.4167706-.2659893 3.1548346-.7976872.7382044-.5318382 1.1071663-1.2818269 1.1071663-2.2501064 0-.5713999-.1784485-1.0357588-.5356261-1.392796-.3571775-.3571776-.8254645-.6390196-1.4048609-.8452454-.5793965-.2063662-1.3532344-.4207288-2.3215139-.6429477-1.3016077-.2857701-2.3730001-.59524916-3.2143174-.92857747s-1.5238266-.81353993-2.0476684-1.44049456c-.5238417-.62695464-.7857625-1.44849108-.7857625-2.46432874 0-.96827945.2540646-1.82152136.7619133-2.55958543.507989-.73820436 1.2262722-1.31353239 2.1548497-1.72626467.9285774-.41273227 2.0120347-.61909841 3.2500913-.61909841 1.1746456 0 2.2698872.18265718 3.2857249.54769096 1.0159779.36503378 1.8731479.896872 2.57151 1.59523409l-.7619133 1.50011768c-.7936188-.68264964-1.5991622-1.18264211-2.4166302-1.50011768-.8174681-.31747557-1.710412-.47614322-2.6786914-.47614322-1.3174605 0-2.3492912.28170171-3.0953518.8452454s-1.1190909 1.33738164-1.1190909 2.32151383c0 .85717002.3254721 1.49997739.976276 1.9285624s1.6507888.8016153 3.0000951 1.11909087c1.4602754.34918105 2.6071436.67058473 3.4404644.96435135.833461.29362633 1.527895.73806407 2.0834422 1.3333132.5555472.5952492.8333208 1.3849399.8333208 2.3690721 0 .9524267-.2539244 1.7896756-.7619133 2.5120272-.507989.7222113-1.2341285 1.2816866-2.1785587 1.6785662-.9445705.3968795-2.0517367.5952491-3.3214987.5952491-2.6509141 0-4.7619934-.7143551-6.3335185-2.142925z"/><path d="m83.9663269 11.4967403h-8.7859225c.0158527 1.5238266.3691021 2.674623 1.059608 3.4525293.6905059.7777661 1.6944189 1.1666491 3.0118794 1.1666491 1.3968645 0 2.6826195-.468287 3.8572651-1.404861l.6429477 1.404861c-.5238417.4921362-1.1945668.8810193-2.0120348 1.1666491-.817468.2857701-1.6547169.428585-2.5118869.428585-1.873148 0-3.3414199-.5516191-4.4049561-1.6547169-1.0635361-1.1032382-1.5952341-2.6151402-1.5952341-4.5358464 0-1.2222038.2380716-2.30566106.7143551-3.25009127.4761433-.94443021 1.1427999-1.67856617 1.9999699-2.20240788s1.833446-.78576257 2.9286876-.78576257c1.5872376 0 2.8334309.5199136 3.7381591 1.55960051.9047283 1.03968691 1.3571625 2.47218496 1.3571625 4.29763441zm-7.5120921-3.80956661c-.6269547.60310539-1.0277623 1.45241918-1.202423 2.54766081h6.9763258c-.0951164-1.1269471-.4245166-1.98411712-.9880603-2.57151006-.5635437-.58725265-1.3452378-.88101927-2.345363-.88101927-.999985 0-1.8135249.30162284-2.4404795.90486852z"/><path d="m88.8830598 16.9492395c-.8650263-.5078487-1.5316829-1.2261319-1.9999699-2.1548497-.468287-.9285775-.7024305-2.0118945-.7024305-3.249951 0-1.2381968.2380716-2.32951036.7143551-3.27394057.4761433-.94443021 1.1547245-1.67856617 2.0357438-2.20240788.8808789-.52384171 1.9087815-.78576257 3.0834271-.78576257.8094715 0 1.591306.1388868 2.3452228.41666039.7540571.27777359 1.3770836.66272851 1.8690796 1.15486475l-.6428074 1.42856993c-.6032457-.4762835-1.1865702-.82546455-1.7501139-1.04768342s-1.1388717-.33332831-1.7262647-.33332831c-1.2222038 0-2.1824867.40880417-2.8809891 1.2262722-.6983621.81746804-1.0475431 1.95633978-1.0475431 3.41675548 0 1.4444227.3452529 2.5674416 1.0356185 3.3690569.6905059.8016153 1.6548572 1.202423 2.8929137 1.202423.587393 0 1.162721-.1111094 1.7262647-.3333283s1.1468682-.5713999 1.7501139-1.0476834l.6428074 1.4285699c-.507989.4762835-1.1468683.8532419-1.9166378 1.1310155-.7699098.2777736-1.567597.4166604-2.3929213.4166604-1.1587928 0-2.1707024-.2539244-3.0358689-.7619133z"/><path d="m101.276251 7.09192453v6.54774077c0 .8888755.182517 1.511902.547691 1.8690796.365034.3571776.880879.5357663 1.547536.5357663.444437 0 .873023-.0714074 1.285755-.2143626v1.6429326c-.491996.1588079-1.047543.2380716-1.666642.2380716-1.14294 0-2.035743-.3214037-2.678691-.9642111-.6428075-.6429476-.9642112-1.591306-.9642112-2.8453555v-6.80966167h-2.3334385v-1.52382664h2.3334385v-3.07150253l1.9285622-.69050586v3.76200839h3.42868v1.52382664z"/><path d="m107.038229 17.5444886v-11.97639071h1.928703v11.97639071zm-.190373-17.04800338h2.357148v2.19062355h-2.357148z"/><path d="m114.681352 16.9492395c-.85717-.5078487-1.519898-1.2302003-1.988185-2.166634-.468287-.936574-.702431-2.0318157-.702431-3.2858652 0-1.2539093.234144-2.3492912.702431-3.2857249.468287-.93657398 1.131015-1.65878532 1.988185-2.1667743.85717-.50798897 1.849159-.76191332 2.976246-.76191332 1.126947 0 2.119076.25392435 2.976246.76191332.85717.50798898 1.519898 1.23020032 1.988185 2.1667743.468147.9364337.702291 2.0318156.702291 3.2857249 0 1.2540495-.234144 2.3492912-.702291 3.2858652-.468287.9364337-1.131015 1.6587853-1.988185 2.166634-.85717.5079889-1.849299.7619133-2.976246.7619133-1.127087 0-2.119076-.2539244-2.976246-.7619133zm5.71442-2.0118945c.634951-.7857626.952287-1.9326308.952287-3.4406047 0-1.4602754-.325332-2.59129092-.976136-3.39290622-.650804-.80161531-1.555532-1.20242296-2.714325-1.20242296-1.174646 0-2.08737.40080765-2.738174 1.20242296-.650804.8016153-.976276 1.93263082-.976276 3.39290622 0 1.5079739.321544 2.6548421.964351 3.4406047.642808.7857626 1.559601 1.1785737 2.750099 1.1785737s2.103223-.3928111 2.738174-1.1785737z"/><path d="m136.610315 10.0204719v7.5240167h-1.928563v-7.42876c0-1.11109441-.222219-1.92463434-.666656-2.44047953-.444438-.5158452-1.142941-.77383795-2.095367-.77383795-1.111095 0-1.99997.34132482-2.666627 1.02383418-.666656.68250935-1.000125 1.6032306-1.000125 2.7620235v6.8572198h-1.928562v-8.61925838c0-1.23805653-.063411-2.35714741-.190514-3.35713233h1.833446l.190514 2.14292505c.365033-.77790635.912724-1.37708362 1.642792-1.79767212.730208-.42072879 1.563529-.63102304 2.500102-.63102304 2.873133 0 4.30956 1.57938136 4.30956 4.73814412z"/><path d="m139.515153 16.1634769.642948-1.4285699c.650803.5079889 1.309464.8730227 1.97626 1.0952416.666517.2222189 1.412858.3333283 2.237761.3333283.904869 0 1.590885-.1547395 2.059453-.4642186s.702851-.7579852.702851-1.3452379c0-.4762835-.158527-.85717-.475582-1.1429401-.318457-.2857701-.841738-.507989-1.572647-.6666566l-2.022977-.4762835c-1.000406-.2222189-1.774104-.6189581-2.321795-1.1904983-.547691-.5713999-.821396-1.2539093-.821396-2.04766838 0-1.04754313.420588-1.90078504 1.261906-2.55958543.841317-.65866011 1.952832-.98806031 3.333283-.98806031.841738 0 1.635778.13495869 2.380716.40473577.746341.26991736 1.373436.65880039 1.881285 1.16678937l-.642527 1.40472069c-1.127929-.93657399-2.333018-1.40472069-3.619474-1.40472069-.85717 0-1.519338.16259575-1.987905.48806784-.468427.32533179-.702571.78169416-.702571 1.3690871 0 .49199596.146883.88101927.44051 1.16664909.294328.28577005.765701.50798895 1.416645.66665665l2.02438.4999924c1.111095.2540647 1.935998.6468758 2.476113 1.178714.540116.531698.809472 1.2261319.809472 2.083302 0 1.0318306-.420869 1.8571549-1.262607 2.4762533-.840336.6190984-1.983697.9285775-3.42868.9285775-2.015402 0-3.610776-.5158452-4.785422-1.5476759z"/><path d="m171.469076 17.5444886-1.857435-4.3572575h-8.857891l-1.881285 4.3572575h-2.022977l7.452188-16.95274668h1.71434l7.452189 16.95274668zm-10.025101-5.9763409h7.476038l-3.737318-8.71437478z"/><path d="m178.348883 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.332487 1.8333057-.22306.5555472-.596231 1.0952416-1.119511 1.6190833l-.904869-.6905058c.618678-.7142148.967999-1.3968645 1.047964-2.0476684h-1.143361v-2.4524041z"/><path d="m200.064324 10.2943173c.540116.7063586.809472 1.5834498.809472 2.6309929 0 1.4762685-.492417 2.6151402-1.475848 3.4167555-.984833.8016153-2.373701 1.2024229-4.166603 1.2024229h-7.048155v-16.95274668h6.809662c1.729772 0 3.07515.38495492 4.036134 1.15486475.959582.76976954 1.439373 1.86108306 1.439373 3.27380026 0 .90486851-.232881 1.68656268-.701449 2.34536307-.468567.65866011-1.12372 1.14686824-1.964055 1.46420352.967998.26991737 1.721354.75798521 2.261469 1.46434378zm-9.95215-2.1785586h4.570638c1.269622 0 2.230606-.25406463 2.88155-.76191332.650944-.50798897.976416-1.25404956.976416-2.23818175 0-1.93655891-1.286456-2.90483837-3.857966-2.90483837h-4.570638zm7.892698 7.0596579c.627095-.4999925.939941-1.2658339.939941-2.2976646 0-2.0793738-1.293471-3.11906071-3.880413-3.11906071h-4.952226v6.16671401h4.952226c1.332752 0 2.313377-.2499962 2.940472-.7499887z"/><path d="m206.064515 15.0920845v1.7381893c0 .6666566-.110829 1.2777585-.33389 1.8333057-.221658.5555472-.594828 1.0952416-1.118109 1.6190833l-.904868-.6905058c.618677-.7142148.967999-1.3968645 1.046561-2.0476684h-1.141958v-2.4524041z"/><path d="m218.957137 16.6873186c-1.182642-.6983621-2.090316-1.7024154-2.725828-3.0118794-.635513-1.3096043-.952567-2.853352-.952567-4.63110303 0-1.77789127.317054-3.31364253.952567-4.60725378.635512-1.29361125 1.543186-2.28966807 2.725828-2.98817045 1.182642-.69836209 2.575719-1.04768342 4.17923-1.04768342 1.174225 0 2.250247.17858878 3.226663.53576634.975013.35717755 1.82096.89294389 2.535035 1.60715871l-.737924 1.50011768c-.809471-.69850238-1.60772-1.19849484-2.393342-1.50011768s-1.654016-.45229397-2.606583-.45229397c-1.857435 0-3.29821.60310539-4.322325 1.80945645-1.022712 1.20635107-1.534769 2.92069111-1.534769 5.14302012 0 2.23818173.507848 3.96430613 1.523546 5.17865373 1.015697 1.2143476 2.460681 1.8215213 4.333548 1.8215213.952567 0 1.820961-.1508114 2.606583-.4524342.785622-.3016229 1.583871-.8016153 2.393342-1.4999774l.737924 1.4999774c-.714075.7143551-1.560022 1.2499811-2.535035 1.6071587-.976416.3571776-2.052438.5357663-3.226663.5357663-1.603511 0-2.996588-.349181-4.17923-1.0476834z"/></g><g transform="translate(.267895 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g transform="translate(.968438 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(97.321977 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(193.675515 362.150954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(329.309669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(425.663669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(523.997669 362.924954)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(660.171823 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(756.527208 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g transform="translate(852.877977 361.893877)"><path d="m.058374.14766h70.625927v81.076506h-70.625927z" fill="#00a88a"/><path d="m70.6843004 81.224166h-70.62592672v-81.07650576h70.62592672zm-68.08746821-78.53804774v75.99958964h65.54828551v-75.99958964z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(26.69736 242.51167)"><path d="m.00427353 31.0947909 1.49915514-3.0461739c1.70855821 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592255.9188095 6.18921435.9188095 2.772098 0 4.9077245-.5401745 6.4068797-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626805-2.1034326-1.0880414-2.8285086-.7253608-.7253609-1.6763642-1.2977293-2.8527252-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145609-1.3057065-2.6433221-.5803457-4.8194048-1.2088399-6.52767811-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.51567289-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49004483-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08578183-1.25727321 6.60004333-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478846-2.40172515-4.9080094-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399217-.96695791-2.6755162 0-4.7706866.57208353-6.28579626 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272854 1.6279309 6.09263255 2.2726645 2.9658314.7091214 5.2949065 1.3618322 6.9872253 1.9584174 1.6923188.5963002 3.1025845 1.4988702 4.230797 2.70771 1.1284974 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.38322623 0-9.67071874-1.4507218-12.86219267-4.3518804z"/><path d="m51.9362381 22.7779272h-17.8425672c.0324789 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4413331 2.3692463 6.1168493 2.3692463 2.8367707 0 5.4478989-.9510034 7.8330998-2.8530102l1.3057065 2.8530102c-1.0638246.9994368-2.4256569 1.7891855-4.0857817 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037287 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598433-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837638-4.6823669 1.4507217-6.6003282s2.3210979-3.4088543 4.06185-4.4726789c1.7404673-1.0638247 3.7231014-1.595737 5.9473325-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2553707-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418964 5.1738231h14.1676144c-.1934486-2.288619-.8623989-4.0293711-2.0068508-5.2222565-1.1441671-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829302.6125397-4.9561579 1.8376189z"/><path d="m61.9214888 33.8509343c-1.7569916-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.4837639-4.7308002 1.4507218-6.6487615s2.3453145-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7627093.8461594 1.5313491.5641063 2.7965995 1.3458778 3.7960363 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325078.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276493 3.9729605-2.1276493 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749674 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812-1.5635431.5641063-3.1832118.8461594-4.8595761.8461594-2.3532918 0-4.408291-.5156729-6.1649977-1.5473036z"/><path d="m87.0894602 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891855 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994368.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.7912464 35.0597742v-24.321812h3.9165496v24.321812zm-.3868972-34.62130978h4.7869258v4.44874713h-4.7869258z"/><path d="m114.312716 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037634-4.4000289-.950718-1.9020067-1.42622-4.1262378-1.42622-6.6729782 0-2.5464555.475502-4.7709715 1.42622-6.6726933.951004-1.9020068 2.296882-3.3686831 4.037634-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037633 4.4003138c.951004 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475501 4.7709715-1.426505 6.6729782-.951003 1.9017219-2.296881 3.3686831-4.037633 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289467-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.98235 3.9248121-1.98235 6.8903586c0 3.0624133.652711 5.3914884 1.958133 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.846626 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320813-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353856 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.129061-4.786926-.386897-6.8177085h3.723101l.386897 4.3518804c.741316-1.5797825 1.853574-2.7965996 3.33649-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m205.653771 35.0597742-3.772105-8.848776h-17.988722l-3.817689 8.848776h-4.111138l15.134003-34.42786122h3.481504l15.134002 34.42786122zm-20.359108-12.1368318h15.185285l-7.592643-17.69726709z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(22.788376 290.137172)"><path d="m.04658391 21.7701602 1.62834138-20.70276002h4.56506199l-1.36656882 17.01005832h9.24650314l-.2907867 3.6927017z"/><path d="m16.3006611 21.7701602 1.1629859-14.74195382h4.3906544l-1.1629859 14.74195382zm1.5119622-21.66232409h4.7104554l-.319801 4.12904304h-4.7104553z"/><path d="m23.395439 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.6863698.9935752 2.6169196 1.2940334.9303887.3004581 1.8609386.4506872 2.7913273.4506872.8141707 0 1.415087-.1163792 1.8027489-.3489764.387662-.2325971.5815736-.5427267.5815736-.9303886 0-.407166-.2277615-.7269669-.6832845-.9595641-.4555229-.2325972-1.1969969-.5040411-2.224422-.8141707-1.0661106-.2907868-1.9384709-.5815735-2.6169196-.8723603-.6784487-.2907867-1.2648579-.72197-1.7590665-1.2938721-.4943697-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2664471-1.78340617.7995024-2.50054048.5330554-.7172955 1.2891976-1.27936503 2.2681045-1.68653097.9789069-.40700475 2.0983714-.61058772 3.3583937-.61058772 1.1047962 0 2.1855752.16473618 3.2420144.49436973 1.0564393.32947236 1.9433067.7753239 2.6606022 1.33755462l-1.3957442 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2679433-1.1921612-.7948279-.27144401-1.5701518-.40716599-2.3262941-.40716599-.7946667 0-1.395583.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845371.25194 1.2211754.5135513 2.2097537.7849953 1.0662719.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7447205 1.2938721.4942086.5719021.7413128 1.3133761.7413128 2.224422 0 1.4539338-.5765766 2.5927412-1.7300522 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7458015-1.802749z"/><path d="m44.7087867 16.0421124c-.0581896.8141707.1065466 1.415087.4942086 1.8027489.3878231.387662.9208784.5815736 1.5993272.5815736.4458515 0 .94006-.0776936 1.482948-.2327584l-.2907868 3.4020761c-.6591059.271444-1.5119622.4070048-2.5587301.4070048-1.6671881 0-2.9417175-.4458516-3.8237491-1.3375546-.8818705-.8915419-1.3228864-2.1515642-1.3228864-3.7799055 0-.3296336.0096714-.5815736.0290142-.7559811l.4651944-5.8154129h-2.7913273l.2616114-3.28569692h2.7914884l.2616114-3.46010454 4.5070336-1.42475841-.3779906 4.88486295h3.7508913l-.2617725 3.28569692h-3.7508913z"/><path d="m49.3900667 20.2000084 1.4247584-3.0530998c.8141707.5622308 1.686531.9935752 2.6169197 1.2940334.9305498.3004581 1.8609385.4506872 2.7914884.4506872.8141707 0 1.415087-.1163792 1.802749-.3489764.3876619-.2325971.5815735-.5427267.5815735-.9303886 0-.407166-.2277615-.7269669-.6832844-.9595641-.4556842-.2325972-1.196997-.5040411-2.224422-.8141707-1.0661107-.2907868-1.938471-.5815735-2.6169197-.8723603-.6784487-.2907867-1.2648579-.72197-1.7592276-1.2938721-.4942086-.5719021-.741474-1.3133761-.741474-2.224422 0-.9498927.2666082-1.78340617.7996635-2.50054048.5330554-.7172955 1.2890365-1.27936503 2.2679433-1.68653097.9789069-.40700475 2.0983715-.61058772 3.3583937-.61058772 1.1049574 0 2.1857364.16473618 3.2421757.49436973 1.0564392.32947236 1.9433066.7753239 2.6604409 1.33755462l-1.395583 2.93672062c-.7172955-.5233839-1.4732766-.9208785-2.2681045-1.1921612-.7946667-.27144401-1.5701518-.40716599-2.3261329-.40716599-.7948279 0-1.3957442.11637918-1.802749.34897639-.4070047.2325971-.6105877.5523981-.6105877.959564 0 .4265088.2422686.7656525.7269669 1.0177537.4845372.25194 1.2211755.5135513 2.2097537.7849953 1.0661107.3101296 1.9336353.6105877 2.6024126.9013745.6687773.2907867 1.2503508.7221312 1.7445594 1.2938721.4943697.5719021.741474 1.3133761.741474 2.224422 0 1.4539338-.5767379 2.5927412-1.7300523 3.4165832-1.1533145.8238421-2.7089592 1.2356826-4.6667729 1.2356826-2.5200445 0-4.768645-.6009163-6.7459627-1.802749z"/><path d="m73.2145935 2.29179942h7.7695192c2.0061707 0 3.5700361.48340881 4.6917573 1.44990405 1.12156.96665643 1.68234 2.29808583 1.68234 3.9942882 0 1.69604118-.5652933 3.03198393-1.6960412 4.00782813-1.1307478.9756831-2.6900999 1.4636052-4.6780561 1.4636052h-5.526238v8.5627352h-2.2432812zm7.5778643 9.05533178c1.4408774 0 2.5260084-.3101295 3.2555544-.9302274.7295459-.62009798 1.0943189-1.51373534 1.0943189-2.68091213 0-1.16733798-.364773-2.05646202-1.0943189-2.66737212-.729546-.61107129-1.814677-.91652634-3.2555544-.91652634h-5.3345831v7.19503799z"/><path d="m102.432215 8.0095311v13.7606291h-2.188638v-2.4894183c-.4012015.8572084-1.0075983 1.5182486-1.8193511 1.9832817-.8115916.4651944-1.7553591.6976303-2.8314635.6976303-1.2218202 0-2.2934114-.2917539-3.214451-.8754229-.9210397-.5835078-1.63221-1.4088006-2.1338332-2.4758784-.5016233-1.0669166-.7522738-2.3116257-.7522738-3.7341275 0-1.4226629.255325-2.6765599.7659749-3.761691s1.2264947-1.92863838 2.1475344-2.53052184c.9210396-.60188346 1.9834429-.90282519 3.1870487-.90282519 1.0761044 0 2.0153585.23711049 2.8179235.71133147.8024039.47422098 1.4134752 1.13993568 1.8328911 1.99698296v-2.3799704zm-3.2829565 10.7376719c.729546-.9210397 1.0943185-2.2295801 1.0943185-3.9257825s-.3647725-3.0002295-1.0943185-3.9120813c-.7295459-.91185183-1.7690602-1.36785834-3.1187041-1.36785834s-2.4028593.46970764-3.1598076 1.40896184c-.756787.9392541-1.1352611 2.2477945-1.1352611 3.9257824 0 1.6778267.3737996 2.9728272 1.12156 3.884679s1.8056504 1.3678583 3.1735087 1.3678583c1.3496439 0 2.3891582-.4605198 3.1187041-1.3815594z"/><path d="m118.983366 8.0095311v13.6511811c0 2.0427609-.524351 3.5884118-1.573054 4.6371139-1.048702 1.0487022-2.594514 1.5730532-4.637113 1.5730532-2.097405 0-3.903055-.4742209-5.41679-1.4226629l.382987-1.8054892c.875423.4924355 1.700716.8480206 2.475878 1.0669166.775163.218896 1.627697.328344 2.557925.328344 1.331429 0 2.334514-.3510718 3.009256-1.0533766.674902-.7021436 1.012273-1.7461713 1.012273-3.1324053v-3.2553932c-.419417.8754229-1.035001 1.5546775-1.846593 2.0380863-.811591.4832477-1.773735.7248715-2.886268.7248715-1.203606 0-2.275197-.2825661-3.214451-.8480206-.939254-.5652933-1.664287-1.3678584-2.174937-2.4073727-.51065-1.0396755-.765974-2.2342546-.765974-3.5838984 0-1.3496439.255324-2.544223.765974-3.5837373.51065-1.0396755 1.235683-1.84207932 2.174937-2.40753384.939254-.56529333 2.010845-.84802059 3.214451-.84802059 1.094319 0 2.047274.23711049 2.858866.71133147s1.427176 1.13993568 1.846593 1.99698296v-2.3799704zm-3.351302 10.1631907c.756787-.8846107 1.135262-2.1019176 1.135262-3.652243 0-1.5501643-.378475-2.7676323-1.135262-3.6520819-.756948-.88461068-1.800976-1.32691604-3.132405-1.32691604-1.349644 0-2.412047.44230536-3.18721 1.32691604-.775001.8844496-1.162663 2.1019176-1.162663 3.6520819 0 1.5503254.387662 2.7676323 1.162663 3.652243.775163.8846107 1.837566 1.3267549 3.18721 1.3267549 1.331429 0 2.375457-.4421442 3.132405-1.3267549z"/><path d="m134.76838 14.8214205h-10.094846c.018375 1.7508458.424091 3.0730874 1.217468 3.9668859.793377.8936374 1.947014 1.340456 3.460749 1.340456 1.604969 0 3.082275-.5380522 4.431758-1.6141566l.738734 1.6141566c-.601884.5654546-1.372372 1.0122732-2.311626 1.3404561-.939415.328344-1.901397.4924354-2.886268.4924354-2.152048 0-3.839062-.633799-5.061044-1.901236-1.221981-1.2675982-1.833052-3.0047428-1.833052-5.2115951 0-1.4042873.2737-2.6491576.820779-3.7342887s1.313215-1.92863838 2.298086-2.53052184c.98471-.60188346 2.106431-.90282519 3.364841-.90282519 1.823865 0 3.255555.59737014 4.295069 1.79194923 1.039675 1.1945791 1.559352 2.8404902 1.559352 4.9378945zm-8.63108-4.3771144c-.720519.6929558-1.181039 1.6688-1.381559 2.9272104h8.015656c-.109448-1.2948393-.487922-2.2797102-1.135422-2.9546127-.647339-.67474139-1.545651-1.01227325-2.694614-1.01227325-1.148962 0-2.083703.3465585-2.804061 1.03967555z"/><path d="m137.285362 20.1834059.738572-1.6413978c.747761.583669 1.504709 1.0030854 2.270684 1.2584103.765975.255325 1.623506.3829875 2.571303.3829875 1.039675 0 1.827894-.1777926 2.366269-.5333778.538375-.3555851.807562-.8709095.807562-1.5456509 0-.54724-.182145-.9848709-.546434-1.3132149-.365901-.328344-.96714-.583669-1.80694-.7659749l-2.32436-.54724c-1.149446-.255325-2.03857-.7111703-2.667856-1.3678584-.629124-.6565268-.943767-1.4407162-.943767-2.3527292 0-1.2036057.483248-2.18396332 1.449904-2.94091156.966656-.75678705 2.243926-1.13526117 3.830036-1.13526117.96714 0 1.877863.15506478 2.735394.46503315.857531.31012956 1.57805.75694824 2.161558 1.34061723l-.73825 1.61399545c-1.295968-1.0761044-2.682202-1.61399545-4.158702-1.61399545-.984871 0-1.745688.18681921-2.284063.56078005-.538213.3737996-.807239.8981506-.807239 1.5730532 0 .5652933.168605 1.0122732.505975 1.340456.336726.328344.879936.583669 1.627858.7659749l2.325972.5744812c1.276625.291915 2.224422.743247 2.845003 1.3543183.61897.6109101.930067 1.4088006.930067 2.3936715 0 1.1855525-.48357 2.1338333-1.45071 2.8451647-.965529.7113315-2.279227 1.0669166-3.939484 1.0669166-2.315817 0-4.148708-.5926956-5.498352-1.778248z"/><path d="m166.776845 19.8826253h4.294102v1.8875349h-10.860982v-1.8875349h4.295713v-14.8003046l-3.994288 2.54422296v-2.16123552l4.979159-3.17350872h1.286296z"/><path d="m177.692632 18.9523978v1.9971441c0 .7659749-.128952 1.4681185-.383632 2.1064309s-.683446 1.2584104-1.286296 1.8602938l-1.039676-.7933771c.71246-.8206183 1.113823-1.6049689 1.20409-2.3527293h-1.313699v-2.8177624z"/><path d="m194.243621 19.8826253v1.8875349h-12.529298v-1.6960412l6.811889-7.5506231c.910724-1.0214611 1.576438-1.9425007 1.997144-2.76311902.419094-.82077948.628641-1.64139777.628641-2.46217725 0-1.07610444-.311096-1.90139724-.930066-2.4758784-.620582-.57448116-1.505515-.86172174-2.654799-.86172174-1.860133 0-3.700923.74776041-5.525594 2.24328123l-.847859-1.72344348c.765652-.72954594 1.732792-1.31321493 2.899808-1.75084578 1.167016-.43779204 2.343703-.65668806 3.530061-.65668806 1.785985 0 3.199622.46051983 4.239297 1.38155949 1.039676.92103966 1.560319 2.16574884 1.560319 3.73428873 0 1.11253338-.251456 2.18396331-.752757 3.21445098-.501301 1.0304877-1.336265 2.1841245-2.503281 3.4607493l-5.552995 6.0186734z"/><path d="m200.425258 18.9523978v1.9971441c0 .7659749-.12734 1.4681185-.38202 2.1064309-.256292.6383124-.683446 1.2584104-1.286297 1.8602938l-1.039675-.7933771c.710848-.8206183 1.112211-1.6049689 1.204089-2.3527293h-1.313698v-2.8177624z"/><path d="m215.691563 13.4535622c.601239.802565.902664 1.814677.902664 3.0366584 0 1.6962023-.575448 3.0321451-1.723121 4.0078281-1.149285.9758443-2.709604 1.4636052-4.679346 1.4636052-1.257282 0-2.466207-.2097082-3.623551-.6291245-1.158956-.4195776-2.138991-1.0122732-2.941718-1.7782481l.875262-1.7236047c1.805328 1.495682 3.684803 2.2434424 5.635202 2.2434424 1.386234 0 2.440417-.3101295 3.160936-.9302275.72052-.6200979 1.079973-1.5319497 1.079973-2.7357166 0-2.3891582-1.495843-3.5837373-4.485917-3.5837373h-2.243765v-1.8876961h1.805328c1.441038 0 2.54519-.3191562 3.310842-.9574686.765653-.63847359 1.149285-1.55032542 1.149285-2.73571668 0-1.05788997-.315932-1.86948162-.944573-2.43493614-.628641-.56529333-1.51841-.84802059-2.667695-.84802059-1.860132 0-3.702534.74776041-5.525593 2.24328123l-.847859-1.72344348c.783383-.74776041 1.745687-1.33594272 2.885301-1.76454693 1.141225-.42860421 2.330807-.64298691 3.570358-.64298691 1.752135 0 3.151265.44681868 4.200612 1.34061723 1.047735.89363736 1.571602 2.09740428 1.571602 3.61113957 0 1.11253338-.272411 2.08821645-.820457 2.9272104-.546434.838994-1.304027 1.4408774-2.269555 1.8054892 1.147673.328344 2.022934.8937985 2.625785 1.6962024z"/></g><g transform="translate(329.992265 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(359.320353 242.51167)"><path d="m.14615481 31.0947909 1.49887023-3.0461739c1.70855821 1.4504369 3.44931037 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83620748.9188095 6.18921438.9188095 2.7723829 0 4.9080094-.5401745 6.4068796-1.6199537 1.4991552-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3623955-2.1034326-1.0877564-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8530102-1.7165355-1.1766458-.419091-2.7481661-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81911993-1.2088399-6.52767814-1.8857674-1.70855822-.6769275-3.0946072-1.6521476-4.15843184-2.9253753s-1.59573696-2.9416147-1.59573696-5.0045912c0-1.96639471.5159578-3.69916961 1.54730359-5.19803984 1.0316307-1.49915513 2.49032973-2.66753887 4.37609709-3.505721 1.88576735-.83818214 4.08606666-1.25727321 6.60032816-1.25727321 2.3854858 0 4.6097169.37094261 6.6726934 1.11225801 2.0632614.74131541 3.8040135 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6116915-1.38633388-3.2475997-2.40172515-4.9077245-3.04645873-1.6601249-.64473357-3.4735271-.96695791-5.4399218-.96695791-2.6755161 0-4.77097143.57208353-6.28608109 1.71653548-1.51510965 1.14445195-2.27266448 2.71597223-2.27266448 4.71456088 0 1.7407521.660973 3.0461738 1.98263409 3.9165499 1.32166109.870376 3.35244368 1.6279309 6.09263258 2.2726645 2.9655465.7091214 5.2946216 1.3618322 6.9869404 1.9584174 1.6926037.5963002 3.1028694 1.4988702 4.2310819 2.70771 1.1282125 1.2088399 1.6923188 2.8125541 1.6923188 4.8111427 0 1.9342007-.5156729 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5062843 2.602866-4.4242456 3.4088542-1.9182462.8059882-4.166694 1.2088399-6.7453434 1.2088399-5.38351106 0-9.67071867-1.4507218-12.86219259-4.3518804z"/><path d="m52.0781194 22.7779272h-17.8425672c.032194 3.0946072.7495776 5.4316596 2.151866 7.011442 1.4022884 1.5794975 3.4410482 2.3692463 6.1165643 2.3692463 2.8367708 0 5.447899-.9510034 7.8333847-2.8530102l1.3057066 2.8530102c-1.0638246.9994368-2.4259418 1.7891855-4.0860667 2.3692463-1.6601248.5803457-3.3604209.8703761-5.101173.8703761-3.8040136 0-6.7857995-1.1202353-8.9456428-3.3604209-2.1598432-2.2404705-3.2396224-5.310861-3.2396224-9.2114564 0-2.4820676.483479-4.6823669 1.4507218-6.6003282.9669579-1.9179613 2.320813-3.4088543 4.0615651-4.4726789 1.7407522-1.0638247 3.7233863-1.595737 5.9476174-1.595737 3.2233829 0 5.7541688 1.0558474 7.5915028 3.1672572 1.837334 2.1114099 2.7561434 5.0205458 2.7561434 8.7276926zm-15.2556556-7.736518c-1.2732277 1.2247944-2.0871932 2.949592-2.4418964 5.1738231h14.1676143c-.1931636-2.288619-.8621139-4.0293711-2.0065658-5.2222565-1.144452-1.1926004-2.7319268-1.7891855-4.7627094-1.7891855-2.0310674 0-3.683215.6125397-4.9564427 1.8376189z"/><path d="m62.0630852 33.8509343c-1.7567067-1.0313458-3.1105617-2.4900448-4.0615651-4.3760971-.9510034-1.8857673-1.4265051-4.0857818-1.4265051-6.6000433 0-2.5145464.483479-4.7308002 1.4507218-6.6487615.9669579-1.9179613 2.3450296-3.4088543 4.1342151-4.4726789 1.7889007-1.0638247 3.8763787-1.595737 6.2618645-1.595737 1.6438854 0 3.2316451.2820531 4.7627093.8461594 1.531349.5641063 2.7965995 1.3458778 3.7957514 2.3453145l-1.3054217 2.9011587c-1.2250793-.9672429-2.4097024-1.6763643-3.5541544-2.1276493-1.144167-.451285-2.3128357-.6769276-3.505721-.6769276-2.4820675 0-4.4322228.8302049-5.8507506 2.4903298-1.4182429 1.6601248-2.1273644 3.9729605-2.1273644 6.9387919 0 2.9333526.7011442 5.2139943 2.1031477 6.8419253 1.4022884 1.6279309 3.3607058 2.4418963 5.8749673 2.4418963 1.1928853 0 2.361554-.2256425 3.505721-.6769275 1.144452-.451285 2.3290751-1.1604065 3.5541544-2.1276493l1.3054217 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8923333 2.2968812-1.563543.5641063-3.1834966.8461594-4.859576.8461594-2.3532918 0-4.408291-.5156729-6.1652826-1.5473036z"/><path d="m87.2313415 13.8325694v13.2972382c0 1.80514.3706577 3.0703905 1.112258 3.7957514.7413154.7253609 1.7889006 1.0880413 3.1427556 1.0880413.9025701 0 1.7729461-.1450152 2.6111283-.4353305v3.3364892c-.9991519.3225092-2.1273644.4834789-3.3846376.4834789-2.3210979 0-4.1342152-.6527108-5.4399217-1.9581325-1.3054217-1.3057066-1.9581325-3.2316451-1.9581325-5.7783855v-13.8291505h-4.7387776v-3.0946072h4.7387776v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630086v3.0946072z"/><path d="m98.9328427 35.0597742v-24.321812h3.9168353v24.321812zm-.3866122-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.454597 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.951004-1.9020067-1.426505-4.1262378-1.426505-6.6729782 0-2.5464555.475501-4.7709715 1.426505-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.755295-1.5473036 6.044199-1.5473036c2.288619 0 4.303447.5156729 6.044199 1.5473036 1.740753 1.0316307 3.08663 2.498307 4.037634 4.4003138.950718 1.9017218 1.42622 4.1262378 1.42622 6.6726933 0 2.5467404-.475502 4.7709715-1.42622 6.6729782-.951004 1.9017219-2.296881 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.75558 1.5473036-6.044199 1.5473036-2.288904 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.933916-3.924812 1.933916-6.9872253 0-2.9655465-.660688-5.2624277-1.982349-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982634 3.9248121-1.982634 6.8903586c0 3.0624133.652996 5.3914884 1.958417 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.988222 19.7799018v15.2798724h-3.916549v-15.0864238c0-2.2564251-.451285-3.9085727-1.353856-4.9561579-.90257-1.0475852-2.321097-1.5715203-4.255298-1.5715203-2.256425 0-4.061565.693167-5.41542 2.079216-1.353855 1.3860489-2.031068 3.2558618-2.031068 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.128775-4.786926-.386897-6.8177085h3.723387l.386897 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336204-3.6507362 1.482916-.8544216 3.175234-1.2814899 5.077241-1.2814899 5.834796 0 8.751909 3.2074284 8.751909 9.6222853z"/><path d="m203.619569 20.3360308c1.096874 1.4344824 1.643886 3.2156906 1.643886 5.343055 0 2.9980254-1.000007 5.3108611-3.00002 6.938792-1.997164 1.6279309-4.817695 2.4418964-8.461594 2.4418964h-14.310635v-34.42786122h13.82915c3.512844 0 6.245056.78177151 8.196635 2.34531453 1.948731 1.56325812 2.923097 3.77951197 2.923097 6.64847666 0 1.83761893-.475787 3.42509373-1.424511 4.76299423-.951573 1.3376156-2.282066 2.3290751-3.991479 2.9735238 1.968673.5481517 3.498598 1.5393263 4.595471 2.9738086zm-20.213807-4.4242455h9.284961c2.578364 0 4.529944-.5159578 5.85189-1.5473036 1.321946-1.0316307 1.982919-2.5467404 1.982919-4.54532897 0-3.93278933-2.612553-5.899184-7.834809-5.899184h-9.284961zm16.031444 14.3368462c1.273512-1.0153913 1.908844-2.5706722 1.908844-4.6661275 0-4.2228197-2.626798-6.3342296-7.880393-6.3342296h-10.059895v12.523444h10.059895c2.70657 0 4.698036-.5076956 5.971549-1.5230869z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(356.809897 292.199308)"><path d="m.10689318 19.8854177 1.48742717-18.91226722h4.17039899l-1.24844346 15.53895012h8.44675212l-.2655896 3.3733171z"/><path d="m14.955185 19.8854177 1.0625151-13.46697537h4.01092l-1.0625151 13.46697537zm1.3811601-19.78885388h4.3031155l-.2921955 3.77193628h-4.3031156z"/><path d="m21.436386 18.4510458 1.3014988-2.7889259c.7437136.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7437136 0 1.2927345-.1062672 1.6469061-.3188015.3541717-.2125343.5311793-.495809.5311793-.8499807 0-.3718568-.2079956-.6640524-.6241435-.8765867-.4161478-.2123778-1.0935031-.4602823-2.0320659-.7437136-.973933-.2655896-1.7708584-.5311792-2.3906197-.7967689-.6197613-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.451518-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2435224-1.62906451.7305671-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9615514.45167454.9651687.30095986 1.7752405.70834338 2.4305286 1.22183754l-1.2750494 2.68281528c-.6551315-.47812392-1.3457898-.84121642-2.0718183-1.08912095s-1.4343718-.37185679-2.1250301-.37185679c-.7260285 0-1.2748928.10626716-1.6467496.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4425972.2302194 1.1155704.4692031 2.0186065.7171076.9740895.2832748 1.7664762.5577852 2.3773168.8233749.610997.2657461 1.1421763.6596702 1.5938508 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5269536 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632067 1.1288734-2.3020377 0-4.3561708-.5490209-6.1623995-1.6469062z"/><path d="m40.9064384 14.6526601c-.0530553.7437136.0973463 1.2927345.451518 1.6469062s.8412165.5311793 1.4609778.5311793c.407227 0 .8589015-.0707405 1.3547106-.2123778l-.2657461 3.1077274c-.6020763.2479045-1.3811601.3718568-2.337408.3718568-1.5229539 0-2.6871974-.407227-3.4928871-1.2218376-.8056897-.8146105-1.2085346-1.9655511-1.2085346-3.4531348 0-.3009598.0087643-.5311792.0264494-.6906582l.4250686-5.31241881h-2.5499422l.2389837-3.00146026h2.5499422l.2391403-3.16093925 4.1170306-1.30149878-.3452509 4.46243803h3.4265289l-.2389837 3.00146026h-3.4265289z"/><path d="m45.182948 18.4510458 1.3014988-2.7889259c.7438701.5134941 1.540639.9074182 2.3906198 1.1819286.8499807.2745105 1.6999614.4117657 2.5499422.4117657.7438701 0 1.2927345-.1062672 1.6469062-.3188015.3541716-.2125343.5313357-.495809.5313357-.8499807 0-.3718568-.2081521-.6640524-.6242999-.8765867-.4161479-.2123778-1.0935032-.4602823-2.032066-.7437136-.973933-.2655896-1.7707019-.5311792-2.3904632-.7967689-.6199178-.2657461-1.1554793-.6596702-1.6069973-1.1820852-.4516745-.5224149-.6773553-1.1997702-.6773553-2.0320659 0-.86766582.2433659-1.62906451.7304106-2.28435256.4868883-.65513154 1.1775465-1.16862571 2.0718183-1.5404825s1.916878-.5579417 3.0679751-.5579417c1.0093032 0 1.9965392.15055818 2.9617079.45167454.9650122.30095986 1.7752405.70834338 2.4303721 1.22183754l-1.2748929 2.68281528c-.655288-.47812392-1.3459463-.84121642-2.0719748-1.08912095-.7260284-.24790453-1.4343718-.37185679-2.1248736-.37185679-.7260284 0-1.2750493.10626716-1.6469061.31880147-.3718568.21237781-.5577852.50457336-.5577852.87643017 0 .3896984.2212986.6995791.6640523.9297985.4427538.2302194 1.1155704.4692031 2.018763.7171076.973933.2832748 1.7663198.5577852 2.3773168.8233749.6108405.2657461 1.1421763.6596702 1.5936943 1.1820851.451518.522415.6773553 1.1997703.6773553 2.032066 0 1.3281047-.5267971 2.3683959-1.5805479 3.1210303-1.0535942.7526344-2.4746631 1.1288734-4.2632066 1.1288734-2.3020378 0-4.3561709-.5490209-6.1623996-1.6469062z"/><path d="m67.4951382.97315048h7.543716c1.9478661 0 3.4664378.46935965 4.5554023 1.40776594 1.0891209.93856279 1.6336032 2.23129726 1.6336032 3.87820343 0 1.64674965-.5490209 2.94386628-1.6469062 3.89134985-1.0978853.9473271-2.6119184 1.4210689-4.5420993 1.4210689h-5.3654741v8.3138791h-2.1782419zm7.3577876 8.7921595c1.3990017 0 2.4525959-.30111636 3.1609393-.90319258.7083434-.60207621 1.062515-1.46974206 1.062515-2.60299755 0-1.133412-.3541716-1.9966957-1.062515-2.58985111-.7083434-.59331191-1.7619376-.88988961-3.1609393-.88988961h-5.1795457v6.98593085z"/><path d="m95.8636172 6.52470948v13.36070822h-2.1250301v-2.4170692c-.3895419.8322956-.9783152 1.4741242-1.7663198 1.9256423-.7880046.4516745-1.7043436.6773553-2.7491736.6773553-1.1864673 0-2.2267586-.2832748-3.1210303-.8499808-.8942718-.5665495-1.5849301-1.367857-2.0718183-2.4039227-.4870448-1.0359091-.7305671-2.2444437-.7305671-3.6256037 0-1.3813166.2479045-2.5987719.7437135-3.65236619.4959656-1.05359425 1.191006-1.87258693 2.0852778-2.45697803.8941152-.58439111 1.9256422-.87658666 3.0944244-.87658666 1.04483 0 1.9567869.23021942 2.7358707.69065826.7792403.46043884 1.3723957 1.10680608 1.7796227 1.93894521v-2.31080201zm-3.1873886 10.42560622c.7083433-.8942718 1.0623585-2.1647825 1.0623585-3.8116887 0-1.6469061-.3540152-2.9130347-1.0623585-3.79838565-.7083434-.88535096-1.7178031-1.32810469-3.0280662-1.32810469-1.3104196 0-2.3331823.45605669-3.0679751 1.36801357-.7349493.91195687-1.1024239 2.18246757-1.1024239 3.81168867 0 1.6290645.3630925 2.8864288 1.089121 3.7717797.7260284.885351 1.7530168 1.3281047 3.081278 1.3281047 1.3102631 0 2.3197228-.4471359 3.0280662-1.3414076z"/><path d="m111.933747 6.52470948v13.25444102c0 1.9833927-.509112 3.4841229-1.527336 4.5023469s-2.518955 1.5273361-4.502191 1.5273361c-2.036448 0-3.789621-.4604389-5.259363-1.3813166l.371857-1.7530168c.84998.478124 1.651288.8233749 2.403922 1.0359092.752478.2125343 1.580392.3188014 2.483584.3188014 1.292578 0 2.266511-.3408687 2.921799-1.0227627.655132-.6817374.982854-1.6954228.982854-3.0413691v-3.1607827c-.407384.8499807-1.005078 1.5094944-1.793082 1.978854-.788005.4692032-1.722029.7038048-2.802229.7038048-1.168782 0-2.209074-.274354-3.12103-.8233749-.911957-.5488644-1.615919-1.3281047-2.1117276-2.3374079-.4958091-1.0094597-.7437136-2.1693211-.7437136-3.4797407s.2479045-2.470281.7437136-3.47958423c.4958086-1.00945973 1.1997706-1.78854354 2.1117276-2.33756443.911956-.54886438 1.952248-.82337482 3.12103-.82337482 1.062515 0 1.987775.23021942 2.775779.69065826.788005.46043884 1.385543 1.10680608 1.792926 1.93894521v-2.31080201zm-3.253904 9.86782102c.734949-.8589016 1.102424-2.0408302 1.102424-3.546099 0-1.5051123-.367475-2.6871975-1.102424-3.54594251-.734793-.85890155-1.748634-1.28835233-3.041369-1.28835233-1.31042 0-2.34179.42945078-3.094424 1.28835233-.752635.85874501-1.128874 2.04083021-1.128874 3.54594251 0 1.5052688.376239 2.6871974 1.128874 3.546099.752634.8589015 1.784004 1.2881958 3.094424 1.2881958 1.292735 0 2.306576-.4292943 3.041369-1.2881958z"/><path d="m127.260162 13.138627h-9.801462c.017685 1.6999615.411765 2.9837752 1.182085 3.8515976.770319.8676658 1.890272 1.3014987 3.360014 1.3014987 1.558324 0 2.992696-.5224149 4.303116-1.5672449l.717264 1.5672449c-.584391.5490209-1.332644.9828538-2.244601 1.3014988-.911956.3188015-1.845981.478124-2.802228.478124-2.08966 0-3.727646-.6153792-4.914113-1.8459811-1.186467-1.2307583-1.779623-2.9174168-1.779623-5.060132 0-1.363475.26559-2.572166.796926-3.62576029.531179-1.05359425 1.274893-1.87258693 2.23114-2.45697803.956248-.58439111 2.045369-.87658666 3.267207-.87658666 1.770702 0 3.160939.58000895 4.170242 1.73987036 1.009304 1.1598614 1.514033 2.75793792 1.514033 4.79438592zm-8.380393-4.24990368c-.699423.67281665-1.146559 1.62030028-1.341408 2.84213778h7.7827c-.106111-1.2572078-.473586-2.21345565-1.102268-2.8687437-.628682-.65513154-1.50073-.98285381-2.616457-.98285381-1.11557 0-2.023145.33648658-2.722567 1.00945973z"/><path d="m129.703837 18.3447787.717265-1.5936944c.726028.566706 1.460821.973933 2.204691 1.2218376.743714.2479045 1.576009.3718568 2.496261.3718568 1.00946 0 1.776336-.1726255 2.297499-.5178764.522728-.3452508.784092-.8455986.784092-1.5007301 0-.5313358-.176851-.9562479-.530553-1.2750494-.355268-.3188014-.939033-.566706-1.752861-.7437135l-2.258529-.5313358c-1.115727-.2479046-1.97901-.6905018-2.589851-1.3281047-.610997-.6374465-.916339-1.3988452-.916339-2.2843526 0-1.16862572.469203-2.12049147 1.407766-2.85544076.938563-.73479278 2.178085-1.10226742 3.718411-1.10226742.939033 0 1.824853.15055818 2.655897.45151803.832608.30111636 1.532187.73494929 2.098737 1.30165528l-.716795 1.56708842c-1.256738-1.04482995-2.602684-1.56708842-4.037839-1.56708842-.955934 0-1.695266.18138975-2.217681.54448224-.522415.36293598-.783622.872048-.783622 1.52733603 0 .5488644.163861.9828538.491427 1.3014988.327565.3188015.854362.566706 1.580391.7437136l2.258216.5577852c1.239523.2834312 2.159774.7216463 2.76232 1.3149582.602546.5931554.903036 1.3678571.903036 2.324105 0 1.1510971-.469516 2.0718183-1.408548 2.7624765-.937467.6906583-2.212986 1.0359092-3.824992 1.0359092-2.248356 0-4.027979-.5754703-5.338399-1.7265674z"/><path d="m163.62325 13.9621584v1.8062286h-2.868744v4.1170307h-2.17699v-4.1170307h-8.712655v-1.6469061l9.110179-13.14833042h1.779466v12.98900792zm-11.500016 0h6.454282v-9.29688939z"/><path d="m168.936607 17.149547v1.9391018c0 .7437135-.123639 1.425451-.372483 2.0452123-.247278.6197613-.663582 1.2218376-1.247347 1.8062287l-1.011025-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.273954v-2.7358707z"/><path d="m182.52284 8.76915321c.893645.50472986 1.580704 1.20853458 2.058046 2.11172719.478906.903036.718359 1.947866.718359 3.1343333s-.261364 2.2400616-.784092 3.1609393c-.522728.9207211-1.266128 1.6336032-2.231766 2.1381765-.964074.5047299-2.094043.7570166-3.386777.7570166-1.150315 0-2.283414-.2079957-3.399297-.6241435s-2.054916-.987236-2.815532-1.7132645l.823218-1.673512c1.752861 1.4522134 3.551108 2.1782419 5.391611 2.1782419 1.328731 0 2.369492-.3763954 3.122282-1.1290298.751226-.7524779 1.128404-1.7752406 1.128404-3.0678186 0-1.2573642-.372483-2.2710496-1.115883-3.0413691-.743401-.7703195-1.735645-1.15547928-2.975168-1.15547928-1.806072 0-3.249051.73479278-4.328938 2.20469138h-1.514973v-11.07651212h11.341946v1.80622865h-9.163391v6.74679062c1.045456-1.00930322 2.382012-1.51403309 4.011233-1.51403309 1.186311 0 2.227072.25228668 3.120718.75701655z"/><path d="m191.010127 17.149547v1.9391018c0 .7437135-.125205 1.425451-.372483 2.0452123-.247279.6197613-.663583 1.2218376-1.248913 1.8062287l-1.00946-.7703195c.691754-.796769 1.081452-1.5583242 1.169095-2.2843526h-1.275518v-2.7358707z"/><path d="m204.543147 8.76915321c.893646.50472986 1.58853 1.21307323 2.084652 2.12503009.496122.9119569.743401 1.9522482.743401 3.1210304s-.259799 2.2134557-.782527 3.1343333c-.522728.9208777-1.244218 1.6423675-2.166035 2.1647825-.920251.522415-1.964142.7836225-3.133238.7836225-2.284978 0-4.047229-.7969254-5.286751-2.3906198-1.239523-1.5936943-1.859284-3.8603618-1.859284-6.7998459 0-2.12503014.287969-3.94894389.863909-5.47189779.57594-1.52279739 1.406984-2.6828153 2.496261-3.47958421 1.089278-.79692542 2.396098-1.19538813 3.918895-1.19538813 1.097103 0 2.164469.20377001 3.200535.61099702s1.943797.98285382 2.721629 1.7265674l-.823219 1.67335558c-.88582-.74371359-1.735644-1.29273448-2.549472-1.64690617-.813828-.35401518-1.646437-.53117927-2.496261-.53117927-1.629221 0-2.89535.72602848-3.798386 2.17808544-.903036 1.45205695-1.355336 3.48850502-1.355336 6.10934423v.3984627c.406914-1.0094598 1.072061-1.80622867 1.992313-2.39061978s1.975098-.87658666 3.161409-.87658666c1.150314 0 2.172295.25228668 3.067505.75701655zm-.438215 8.34048499c.743401-.770163 1.115884-1.7929257 1.115884-3.0678186 0-1.2573642-.377178-2.2710496-1.129969-3.0413691s-1.73095-1.15547928-2.934476-1.15547928c-1.239523 0-2.248983.38954188-3.028379 1.16878218-.779397.7790838-1.169096 1.7883871-1.169096 3.0280662 0 1.2572078.389699 2.2754318 1.169096 3.0546721.779396.7790838 1.796681 1.1686257 3.054985 1.1686257 1.203526 0 2.178555-.3851597 2.921955-1.1554792z"/></g><g transform="translate(660.011742 224.553185)"><path d="m.21765.193821h263.332986v106.422426h-263.332986z" fill="#c9177e"/><path d="m263.550636 106.616248h-263.33298624v-106.42242661h263.33298624zm-260.79463916-103.88400537v101.34558437h258.25629216v-101.34558437z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(688.758199 242.51167)"><path d="m.07350476 31.0947909 1.49915513-3.0461739c1.70855822 1.4504369 3.44902547 2.4820676 5.22225648 3.0946072 1.7729461.6125397 3.83592263.9188095 6.18921443.9188095 2.7720979 0 4.9077245-.5401745 6.4068796-1.6199537 1.4988702-1.080064 2.2484478-2.6031509 2.2484478-4.5695456 0-1.1604065-.3626804-2.1034326-1.0880413-2.8285086-.7253609-.7253609-1.6763643-1.2977293-2.8527253-1.7165355-1.1766459-.419091-2.7481662-.8544215-4.7145608-1.3057065-2.6433222-.5803457-4.81940488-1.2088399-6.52767819-1.8857674-1.70855822-.6769275-3.0948921-1.6521476-4.15843184-2.9253753-1.06382464-1.2732277-1.59573696-2.9416147-1.59573696-5.0045912 0-1.96639471.5156729-3.69916961 1.5473036-5.19803984 1.0316307-1.49915513 2.49004482-2.66753887 4.37609708-3.505721 1.88576736-.83818214 4.08578181-1.25727321 6.60004331-1.25727321 2.3854857 0 4.6097168.37094261 6.6729782 1.11225801 2.0629765.74131541 3.8037287 1.82137947 5.2222565 3.23962239l-1.5473036 3.04645873c-1.6119764-1.38633388-3.2478845-2.40172515-4.9080094-3.04645873-1.6601248-.64473357-3.473527-.96695791-5.4399217-.96695791-2.6755161 0-4.77068658.57208353-6.28579623 1.71653548-1.51510966 1.14445195-2.27266449 2.71597223-2.27266449 4.71456088 0 1.7407521.6606881 3.0461738 1.98234919 3.9165499 1.32166109.870376 3.35272853 1.6279309 6.09263253 2.2726645 2.9658315.7091214 5.2949066 1.3618322 6.9872254 1.9584174 1.6923187.5963002 3.1025844 1.4988702 4.2307969 2.70771 1.1284975 1.2088399 1.6926037 2.8125541 1.6926037 4.8111427 0 1.9342007-.5159578 3.6344968-1.5473036 5.101458-1.0316307 1.4666763-2.5065691 2.602866-4.4245304 3.4088542s-4.1664091 1.2088399-6.7453434 1.2088399c-5.3832262 0-9.67071872-1.4507218-12.86219264-4.3518804z"/><path d="m52.0054694 22.7779272h-17.8425672c.0324788 3.0946072.7495775 5.4316596 2.1518659 7.011442 1.4022884 1.5794975 3.4413332 2.3692463 6.1168493 2.3692463 2.8367707 0 5.447899-.9510034 7.8330998-2.8530102l1.3057066 2.8530102c-1.0638247.9994368-2.425657 1.7891855-4.0857818 2.3692463-1.6604098.5803457-3.3607058.8703761-5.101458.8703761-3.8037286 0-6.7855146-1.1202353-8.9453578-3.3604209-2.1598432-2.2404705-3.2399073-5.310861-3.2399073-9.2114564 0-2.4820676.4837639-4.6823669 1.4507218-6.6003282s2.3210978-3.4088543 4.06185-4.4726789c1.7407521-1.0638247 3.7231013-1.595737 5.9473324-1.595737 3.2236679 0 5.7541688 1.0558474 7.5915028 3.1672572 1.8376189 2.1114099 2.7561435 5.0205458 2.7561435 8.7276926zm-15.2553708-7.736518c-1.2735126 1.2247944-2.0874781 2.949592-2.4418963 5.1738231h14.1676143c-.1934486-2.288619-.8623988-4.0293711-2.0068508-5.2222565-1.144167-1.1926004-2.7319268-1.7891855-4.7627093-1.7891855-2.0307826 0-3.6829301.6125397-4.9561579 1.8376189z"/><path d="m61.99072 33.8509343c-1.7569915-1.0313458-3.1108466-2.4900448-4.06185-4.3760971-.9510034-1.8857673-1.426505-4.0857818-1.426505-6.6000433 0-2.5145464.4837638-4.7308002 1.4507217-6.6487615s2.3453146-3.4088543 4.1342152-4.4726789c1.7891855-1.0638247 3.8763787-1.595737 6.2618644-1.595737 1.6441703 0 3.2316451.2820531 4.7629942.8461594 1.5310642.5641063 2.7963147 1.3458778 3.7957514 2.3453145l-1.3057066 2.9011587c-1.2247943-.9672429-2.4097024-1.6763643-3.5538694-2.1276493-1.144452-.451285-2.3131206-.6769276-3.505721-.6769276-2.4820676 0-4.4325077.8302049-5.8507507 2.4903298-1.4185278 1.6601248-2.1276492 3.9729605-2.1276492 6.9387919 0 2.9333526.7011442 5.2139943 2.1034326 6.8419253 1.4022884 1.6279309 3.3604209 2.4418963 5.8749673 2.4418963 1.1926004 0 2.361269-.2256425 3.505721-.6769275 1.144167-.451285 2.3290751-1.1604065 3.5538694-2.1276493l1.3057066 2.9011586c-1.0316307.9672429-2.3290751 1.7327749-3.8926181 2.2968812s-3.1832118.8461594-4.859576.8461594c-2.3532918 0-4.4082911-.5156729-6.1649978-1.5473036z"/><path d="m87.1586914 13.8325694v13.2972382c0 1.80514.3709426 3.0703905 1.112258 3.7957514s1.7891856 1.0880413 3.1430406 1.0880413c.90257 0 1.7729461-.1450152 2.6111282-.4353305v3.3364892c-.9994367.3225092-2.1276493.4834789-3.3849225.4834789-2.3208129 0-4.1342151-.6527108-5.4396368-1.9581325-1.3057066-1.3057066-1.9584174-3.2316451-1.9584174-5.7783855v-13.8291505h-4.7387775v-3.0946072h4.7387775v-6.23764778l3.9165499-1.4022884v7.63993618h6.9630087v3.0946072z"/><path d="m98.8604776 35.0597742v-24.321812h3.9165494v24.321812zm-.3868971-34.62130978h4.7869255v4.44874713h-4.7869255z"/><path d="m114.381947 33.8509343c-1.740752-1.0313458-3.08663-2.498307-4.037633-4.4000289-.950719-1.9020067-1.426221-4.1262378-1.426221-6.6729782 0-2.5464555.475502-4.7709715 1.426221-6.6726933.951003-1.9020068 2.296881-3.3686831 4.037633-4.4003138s3.75558-1.5473036 6.044199-1.5473036c2.288904 0 4.303447.5156729 6.044199 1.5473036s3.08663 2.498307 4.037634 4.4003138c.951003 1.9017218 1.426505 4.1262378 1.426505 6.6726933 0 2.5467404-.475502 4.7709715-1.426505 6.6729782-.951004 1.9017219-2.296882 3.3686831-4.037634 4.4000289-1.740752 1.0316307-3.755295 1.5473036-6.044199 1.5473036-2.288619 0-4.303447-.5156729-6.044199-1.5473036zm11.604919-4.0857818c1.289468-1.5957369 1.934201-3.924812 1.934201-6.9872253 0-2.9655465-.660973-5.2624277-1.982634-6.8903586s-3.158995-2.4418964-5.512287-2.4418964c-2.385486 0-4.239059.8139655-5.56072 2.4418964s-1.982349 3.9248121-1.982349 6.8903586c0 3.0624133.652711 5.3914884 1.958132 6.9872253 1.305707 1.595737 3.167257 2.393463 5.584937 2.393463s4.271253-.797726 5.56072-2.393463z"/><path d="m158.915857 19.7799018v15.2798724h-3.916835v-15.0864238c0-2.2564251-.451285-3.9085727-1.353855-4.9561579s-2.320812-1.5715203-4.255013-1.5715203c-2.256425 0-4.06185.693167-5.415705 2.079216-1.353855 1.3860489-2.030783 3.2558618-2.030783 5.6091536v13.9257324h-3.91655v-17.5041035c0-2.5142615-.12906-4.786926-.386897-6.8177085h3.723101l.386898 4.3518804c.741315-1.5797825 1.853573-2.7965996 3.336489-3.6507362 1.482915-.8544216 3.175234-1.2814899 5.076956-1.2814899 5.834796 0 8.752194 3.2074284 8.752194 9.6222853z"/><path d="m185.630847 33.319022c-2.401725-1.4182429-4.247891-3.4572876-5.535648-6.1165644-1.290607-2.6595616-1.934486-5.7946249-1.934486-9.404905 0-3.6105649.643879-6.7293888 1.934486-9.35647159 1.287757-2.62708276 3.133923-4.64988805 5.535648-6.06841587 2.401726-1.41824292 5.230804-2.12764929 8.487236-2.12764929 2.384631 0 4.56983.36268044 6.552749 1.08804133 1.98007.72536088 3.69803 1.81340221 5.148182 3.26383907l-1.498585 3.04645873c-1.643886-1.41852782-3.264979-2.4339191-4.860431-3.04645873s-3.358996-.91852454-5.293482-.91852454c-3.772105 0-6.69805 1.22479436-8.777835 3.67466798-2.079786 2.44987362-3.11683 5.93137791-3.11683 10.44451291 0 4.545329 1.031346 8.0507651 3.094037 10.5168782 2.062692 2.466113 4.997184 3.6991695 8.800628 3.6991695 1.934486 0 3.69803-.3062698 5.293482-.9188094 1.595452-.6125397 3.216545-1.6279309 4.860431-3.0461739l1.498585 3.0461739c-1.450152 1.4507217-3.168112 2.5384782-5.148182 3.263839-1.982919.7253609-4.168118 1.0880414-6.552749 1.0880414-3.256432 0-6.08551-.7091215-8.487236-2.1276493z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(683.970025 292.181215)"><path d="m.10947429 20.3655834 1.52334352-19.36893462h4.27110005l-1.27858915 15.91416332h8.65071269l-.2720028 3.4547713z"/><path d="m15.3163023 20.3655834 1.0881712-13.79215735h4.1077702l-1.0881712 13.79215735zm1.4145104-20.26668789h4.4070212l-.2992511 3.86301581h-4.4070212z"/><path d="m21.9540024 18.8965763 1.3329256-2.8562691c.7616718.5258933 1.5778402.9293293 2.4483451 1.2104683.870505.2811389 1.7410099.4217084 2.6115148.4217084.7616717 0 1.3239496-.1088332 1.6866734-.3264995.3627237-.2176663.5440054-.5077811.5440054-.8705049 0-.3808359-.213018-.680087-.6392144-.8977533-.4261964-.217506-1.1199075-.4713966-2.0811335-.7616717-.9974502-.2720027-1.8136186-.5440055-2.4483451-.8160082-.6347265-.272163-1.1833802-.675599-1.6458009-1.2106285-.4624206-.5350296-.6937111-1.2287407-.6937111-2.0811335 0-.88861705.2494026-1.66840095.7482079-2.33951199.4986449-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.963164-.5714141 3.1420563-.5714141c1.0336745 0 2.0447488.15419365 3.0330628.46258095.9884743.30822702 1.8181067.72544747 2.4892177 1.25134079l-1.3058375 2.74759621c-.6709507-.489669-1.3782861-.86152895-2.1218457-1.11541954-.7435596-.25389058-1.4690071-.38083588-2.1763424-.38083588-.7435596 0-1.3056772.10883315-1.6865131.32649945-.3808359.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.6800869.95225.4532845.2357784 1.1425077.4805328 2.067349.7344234.9976105.2901149 1.8091307.5712538 2.434721.8432566.6257505.272163 1.169756.675599 1.6323369 1.2106285.4624207.5350295.6937112 1.2287407.6937112 2.0811334 0 1.360174-.5396778 2.4255848-1.6187128 3.1963928s-2.5344179 1.1561318-4.3661487 1.1561318c-2.3576242 0-4.4613577-.5622779-6.3112007-1.6866734z"/><path d="m41.8941909 15.0064724c-.0543365.7616718.0996969 1.3239497.4624206 1.6866734.3627238.3627238.861529.5440055 1.4962555.5440055.4170601 0 .8796411-.0724486 1.3874223-.217506l-.272163 3.1827685c-.6166144.2538906-1.4145104.3808359-2.3938485.3808359-1.5597281 0-2.7520842-.4170602-3.5772286-1.2513408s-1.2377166-2.0130125-1.2377166-3.5365164c0-.308227.0089759-.5440054.0270881-.7073353l.4353326-5.44069574h-2.6115148l.2447544-3.07393541h2.6115147l.2449147-3.23726527 4.216443-1.33292558-.3535875 4.57019085h3.509268l-.2447544 3.07393541h-3.509268z"/><path d="m46.2739638 18.8965763 1.3329255-2.8562691c.7618321.5258933 1.5778403.9293293 2.4483452 1.2104683.8705049.2811389 1.7410098.4217084 2.6115147.4217084.7618321 0 1.3239497-.1088332 1.6866734-.3264995.3627238-.2176663.5441658-.5077811.5441658-.8705049 0-.3808359-.2131784-.680087-.6393748-.8977533-.4261963-.217506-1.1199075-.4713966-2.0811334-.7616717-.9974502-.2720027-1.8134584-.5440055-2.4481849-.8160082-.6348867-.272163-1.1833801-.675599-1.6458008-1.2106285-.462581-.5350296-.6937112-1.2287407-.6937112-2.0811335 0-.88861705.2492424-1.66840095.7480476-2.33951199.498645-.67095076 1.2059803-1.19684408 2.1218457-1.57767996s1.9631641-.5714141 3.1420563-.5714141c1.0336745 0 2.0447489.15419365 3.0332232.46258095.988314.30822702 1.8181066.72544747 2.4890574 1.25134079l-1.3056773 2.74759621c-.671111-.489669-1.3784463-.86152895-2.1220059-1.11541954-.7435597-.25389058-1.4690071-.38083588-2.1761822-.38083588-.7435596 0-1.3058375.10883315-1.6866734.32649945-.3808358.21750602-.5712538.51675707-.5712538.89759297 0 .3991083.2266422.7164716.680087.95225.4534447.2357784 1.1425076.4805328 2.0675093.7344234.9974502.2901149 1.8089704.5712538 2.4347209.8432566.6255903.272163 1.169756.675599 1.6321767 1.2106285s.6937111 1.2287407.6937111 2.0811334c0 1.360174-.5395175 2.4255848-1.6187127 3.1963928-1.079035.770808-2.5344179 1.1561318-4.3661488 1.1561318-2.3576241 0-4.4613577-.5622779-6.3112006-1.6866734z"/><path d="m69.124918.99664878h7.7258714c1.9949004 0 3.5501405.4806931 4.6653998 1.44175873 1.1154195.96122592 1.6730492 2.28517557 1.6730492 3.97184896 0 1.6865131-.5622779 3.01495072-1.6866734 3.98531283-1.1243955.9702019-2.6749874 1.4553829-4.6517756 1.4553829h-5.4950322v8.5146312h-2.2308392zm7.5354534 9.00446052c1.4327828 0 2.5118178-.30838734 3.2372653-.92500167.7254475-.61661432 1.0881712-1.50523137 1.0881712-2.66585116 0-1.16078007-.3627237-2.04490916-1.0881712-2.65238727-.7254475-.60763839-1.8044825-.91137745-3.2372653-.91137745h-5.3046142v7.15461755z"/><path d="m98.1784001 6.6822592v13.6833242h-2.1763424v-2.4754332c-.3989481.8523927-1.0019382 1.5097193-1.8089705 1.97214-.8070322.4625809-1.7454977.6937111-2.8155568.6937111-1.2151165 0-2.2805273-.2901148-3.1963927-.8705049-.9158655-.5802297-1.6232008-1.4008862-2.1218457-2.4619693-.4988053-1.0609229-.7482079-2.2986395-.7482079-3.7131498 0-1.4146707.2538906-2.6615235.7616717-3.74055852.5079415-1.07903499 1.2197648-1.91780358 2.1356302-2.51630576.9157051-.59850218 1.97214-.89775327 3.1691444-.89775327 1.0700591 0 2.0040366.23577845 2.8019327.70733533.7980563.47155689 1.4055344 1.13353171 1.8225946 1.9857642v-2.36660008zm-3.2643534 10.6773494c.7254475-.9158654 1.088011-2.2170547 1.088011-3.9037281 0-1.6866733-.3625635-2.9833746-1.088011-3.89010384-.7254474-.90672919-1.7592822-1.36017394-3.1011837-1.36017394-1.3420618 0-2.3895208.46706892-3.1420563 1.40104648-.7526958.9339776-1.1290438 2.2351668-1.1290438 3.9037281 0 1.6684009.37186 2.9561263 1.1154196 3.8628555s1.7953463 1.3601739 3.1556805 1.3601739c1.3419015 0 2.3757363-.4579327 3.1011837-1.3737981z"/><path d="m114.636569 6.6822592v13.574491c0 2.031285-.521405 3.5682527-1.564216 4.6110634s-2.579779 1.5642161-4.610903 1.5642161c-2.085622 0-3.881128-.4715569-5.38636-1.4146707l.380836-1.7953462c.870505.489669 1.691162.8432565 2.46197 1.0609228.770647.2176663 1.618552.3264995 2.543554.3264995 1.323789 0 2.321239-.3490996 2.99235-1.047459.670951-.6981991 1.006587-1.7363615 1.006587-3.1148079v-3.237105c-.417221.8705049-1.029347 1.5459436-1.836379 2.0266367-.807033.4805329-1.76361.7207993-2.869894.7207993-1.197004 0-2.262415-.2809787-3.196392-.8432566-.933978-.5621176-1.654937-1.3601739-2.162719-2.3938484-.507781-1.0338348-.761671-2.2217029-.761671-3.5637647s.25389-2.52993.761671-3.56360448c.507782-1.03383477 1.228741-1.83173082 2.162719-2.39400871.933977-.56211761 1.999388-.84325656 3.196392-.84325656 1.088172 0 2.035773.23577845 2.842806.70733533.807032.47155689 1.418998 1.13353171 1.836218 1.9857642v-2.36660008zm-3.332474 10.1060956c.752695-.8796411 1.129043-2.0901094 1.129043-3.6317253 0-1.5414557-.376348-2.7520842-1.129043-3.63156509-.752536-.87964112-1.790859-1.31946169-3.114808-1.31946169-1.342062 0-2.398337.43982057-3.169145 1.31946169-.770808.87948089-1.156131 2.09010939-1.156131 3.63156509 0 1.5416159.385323 2.7520842 1.156131 3.6317253s1.827083 1.3193014 3.169145 1.3193014c1.323949 0 2.362272-.4396603 3.114808-1.3193014z"/><path d="m130.333066 13.4558805h-10.038135c.018112 1.7410099.421708 3.0558233 1.210628 3.9446006.788921.8886171 1.935916 1.3329256 3.441148 1.3329256 1.595952 0 3.064959-.5350295 4.407021-1.6050886l.734584 1.6050886c-.598503.5622779-1.364823 1.0065864-2.2988 1.3329256-.933978.3264995-1.890555.489669-2.869893.489669-2.140119 0-3.817656-.6302385-5.032772-1.8905552-1.215117-1.260477-1.822595-2.9878626-1.822595-5.1823172 0-1.3963982.272003-2.6342751.816169-3.71331012.544005-1.07903499 1.305677-1.91780358 2.285015-2.51630576s2.094757-.89775327 3.346098-.89775327c1.813459 0 3.237266.59401422 4.27094 1.78188236 1.033675 1.18786815 1.550592 2.82453279 1.550592 4.91015419zm-8.582752-4.35252451c-.716311.6890629-1.174244 1.65942501-1.373798 2.91076581h7.970625c-.108672-1.2875651-.48502-2.26690312-1.128883-2.93801417-.643863-.67095075-1.536968-1.00658641-2.679636-1.00658641-1.142507 0-2.071997.34461159-2.788308 1.03383477z"/><path d="m132.835747 18.7877432.734584-1.6321767c.74356.58039 1.496095.9974502 2.257927 1.2513408.761672.2538906 1.614065.3808359 2.556538.3808359 1.033834 0 1.819228-.1767938 2.352975-.5303813.535351-.3535875.803026-.866017.803026-1.5369677 0-.5441658-.181122-.9793381-.543365-1.3058375-.363845-.3264995-.961706-.5803901-1.795186-.7616718l-2.313065-.5441657c-1.142668-.2538906-2.026797-.7071751-2.652387-1.360174-.625751-.6528386-.938466-1.4326225-.938466-2.339512 0-1.19684406.480533-2.17169415 1.441759-2.92438998.961226-.75253555 2.230679-1.12888347 3.808199-1.12888347.961706 0 1.868917.15419366 2.720027.46242067.852713.30838731 1.569185.75269584 2.149415 1.33308587l-.734103 1.60492831c-1.287084-1.07005906-2.665531-1.60492831-4.135339-1.60492831-.979018 0-1.736202.18576969-2.271231.55762964-.53503.37169967-.802544.89310502-.802544 1.56421607 0 .5621176.167817 1.0065864.503293 1.3329256.335475.3264994.874993.58039 1.618552.7616717l2.312745.5712539c1.269453.2902751 2.211925.7390716 2.829021 1.34671.617095.6074781.924841 1.4008862.924841 2.3802243 0 1.1788922-.480854 2.1218457-1.44256 2.829181-.960104.7073353-2.266423 1.0609228-3.917353 1.0609228-2.302646 0-4.125241-.5893659-5.467303-1.7682581z"/><path d="m153.917963.99664878h12.785891v1.65942503l-9.084923 17.70950959h-2.39465l9.032029-17.49184329h-10.338347z"/><path d="m173.015856 17.5636507v1.9859245c0 .7616718-.126624 1.4598709-.381477 2.0945973-.253249.6347265-.679606 1.2513408-1.277467 1.849843l-1.035437-.7889201c.708457-.8160082 1.107565-1.5959524 1.197324-2.339512h-1.304715v-2.8019327z"/><path d="m188.807081 12.1909156c.698841.8434168 1.048261 1.8543309 1.048261 3.0332231 0 1.6502888-.626712 2.9516384-1.878534 3.9037281-1.250219.9520897-2.938014 1.4281345-5.058578 1.4281345-2.122166 0-3.809961-.4760448-5.06018-1.4281345-1.251822-.9520897-1.876931-2.2534393-1.876931-3.9037281 0-1.1788922.357434-2.1944545 1.073906-3.0468473.716471-.8523928 1.700618-1.4417587 2.95244-1.7682582-1.16046-.3444513-2.050039-.91121715-2.667134-1.70013727-.615492-.78892012-.924841-1.71840971-.924841-2.78830849 0-1.03383478.272483-1.93607601.815848-2.70688399.544967-.77064769 1.311127-1.36914987 2.300082-1.79534625.987352-.42619638 2.117357-.63937472 3.38681-.63937472s2.397856.21317834 3.386811.63937472c.987352.42619638 1.753512 1.02469856 2.298479 1.79534625.543365.77080798.815848 1.67304921.815848 2.70688399 0 1.06989878-.312555 1.99938837-.939267 2.78830849-.625109.78892012-1.500262 1.35568597-2.623856 1.70013727 1.269452.3446116 2.251996.9386258 2.950836 1.7818824zm-9.004781-3.59085282c.770969.64386269 1.809612 1.03832275 3.11593 1.18338018 1.304716-.14505743 2.343359-.53951749 3.114327-1.18338018.770969-.64386268 1.155651-1.48263127 1.155651-2.51630576 0-1.07005906-.376668-1.91331562-1.128402-2.52992994-.753337-.61661432-1.799995-.92500163-3.141576-.92500163-1.343183 0-2.389841.30838731-3.143178.92500163-.751734.61661432-1.128403 1.45987088-1.128403 2.52992994 0 1.03367449.384683 1.87244308 1.155651 2.51630576zm6.624557 9.18125422c.815848-.6166143 1.224574-1.5143676 1.224574-2.6932598 0-1.0698988-.431166-1.9267795-1.291893-2.5706422-.862331-.6438627-2.009967-1.0383227-3.441308-1.1833802-1.432943.1450575-2.580579.5395175-3.441307 1.1833802-.86233.6438627-1.293496 1.5007434-1.293496 2.5706422 0 1.1788922.408726 2.0766455 1.224574 2.6932598s1.985924.9248414 3.510229.9248414c1.522703 0 2.692779-.3082271 3.508627-.9248414z"/><path d="m195.622377 17.5636507v1.9859245c0 .7616718-.128228 1.4598709-.381477 2.0945973-.25325.6347265-.679606 1.2513408-1.27907 1.849843l-1.033835-.7889201c.708457-.8160082 1.107566-1.5959524 1.197325-2.339512h-1.306318v-2.8019327z"/><path d="m210.339696 3.22732763c1.26785 1.63217667 1.902577 3.95357653 1.902577 6.96419957 0 3.2824655-.657167 5.8351558-1.971499 7.6577504-1.314333 1.8225946-3.151193 2.7339721-5.508977 2.7339721-1.105963 0-2.189486-.2085301-3.250569-.6257505-1.061083-.4170602-1.998747-1.0064262-2.816198-1.7680979l.871947-1.7139218c.924842.7799442 1.803201 1.3465498 2.638283 1.7002976.833479.3535875 1.676575.5303813 2.529288.5303813 1.668562 0 2.960454-.7435596 3.877282-2.2306789.915224-1.4871192 1.373637-3.5727406 1.373637-6.2568642v-.35358755c-.416739 1.01556235-1.097948 1.81810665-2.040421 2.40747265-.944075.5895262-2.02279.8841291-3.237746.8841291-1.178091 0-2.221543-.2583786-3.128753-.775296-.905607-.5167571-1.614064-1.2422046-2.120563-2.1761821-.508102-.93413786-.762954-1.99954868-.762954-3.19655303 0-1.19684408.267675-2.26690314.803025-3.21001692.53535-.94295348 1.274262-1.68202514 2.216734-2.21705467.944076-.53502953 2.013173-.8025443 3.210498-.8025443 2.340153 0 4.143353.81616848 5.414409 2.44834515zm-2.176663 6.85536647c.796614-.79805638 1.195722-1.83173087 1.195722-3.10118381 0-1.28772536-.399108-2.33053607-1.195722-3.12843212-.798217-.79805633-1.841668-1.19700436-3.128753-1.19700436-1.232587 0-2.231159.39446006-2.992511 1.18338018-.761351.78892012-1.142828 1.83621879-1.142828 3.1420563 0 1.28756508.381477 2.32588782 1.142828 3.11480791.761352.7889202 1.767938 1.1833802 3.01976 1.1833802 1.269453 0 2.303287-.3991083 3.101504-1.1970043z"/></g><path d="m17.8381448 46.9715784h11.4351924v5.0258027h-28.91585333v-5.0258027h11.43519243v-39.40433576l-10.63396507 6.77374006v-5.75407418l13.25608567-8.44915063h3.4233479z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(21.524072 376.769072)"/><path d="m35.1591611 47.829883v5.0258027h-33.35886717v-4.5159698l18.13640567-20.1027815c2.4277146-2.719109 4.2001136-5.1712853 5.3167679-7.3565289 1.1170835-2.1848144 1.6754107-4.3700579 1.6754107-6.5553015 0-2.8645916-.8256891-5.06185144-2.476638-6.59135026-1.6509489-1.52992798-4.0057077-2.29467739-7.0651345-2.29467739-4.9528467 0-9.85677016 1.99083755-14.71262852 5.97294185l-2.25819944-4.58892566c2.03976092-1.94234334 4.61295815-3.4958747 7.72087917-4.66145237 3.10749189-1.16557766 6.23944539-1.74793734 9.39586059-1.74793734 4.7584408 0 8.5216774 1.22608814 11.2897098 3.67826442 2.7676032 2.45217629 4.1516194 5.76609041 4.1516194 9.94174235 0 2.9620092-.667761 5.8150138-2.003283 8.5585845-1.3350928 2.7431415-3.5568143 5.8145846-6.6643061 9.2134709l-14.7855845 16.024118z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(113.15712 375.910768)"/><path d="m32.1649655 30.7131432c1.6024547 2.1367493 2.403682 4.8318258 2.403682 8.0848003 0 4.5159698-1.5294988 8.0727841-4.5884964 10.6708722-3.0594268 2.5976589-7.2110463 3.8967029-12.4548583 3.8967029-3.3508212 0-6.5677469-.5587563-9.65077711-1.6754106-3.08345933-1.1166543-5.69356366-2.6950765-7.82988385-4.7344083l2.33072618-4.5884964c4.806935 3.9816751 9.80827598 5.9725126 15.00402298 5.9725126 3.6902807 0 6.494791-.825689 8.4126727-2.4766379 1.9178817-1.650949 2.8770371-4.0786636 2.8770371-7.283573 0-6.3608955-3.9816751-9.5413433-11.9450254-9.5413433h-5.9729418v-5.0258026h4.8073642c3.8361924 0 6.77374-.8497216 8.8130718-2.5491647 2.0393317-1.6994432 3.0594268-4.1275869 3.0594268-7.283573 0-2.8165266-.8377053-4.97730847-2.513116-6.48234561-1.6749814-1.50546629-4.0421855-2.25819944-7.1016123-2.25819944-4.9528468 0-9.85677025 1.99083755-14.71262861 5.97294185l-2.25819944-4.58892566c2.08825513-1.99083756 4.6494361-3.55681433 7.68440122-4.69793031 3.03496513-1.14111599 6.20339663-1.7114594 9.50529443-1.7114594 4.6614524 0 8.388211 1.18961019 11.180276 3.56883059 2.7920649 2.37922039 4.1880973 5.58412982 4.1880973 9.61429918 0 2.9620092-.7287006 5.5596681-2.1852435 7.7934059-1.456543 2.2337377-3.4718422 3.8361925-6.0454686 4.8073641 3.0589977.8737541 5.390153 2.3792204 6.9921786 4.5155406z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(210.490122 375.910768)"/><path d="m37.9113149 35.7548245v4.9528468h-7.8663618v11.2897098h-5.9725127v-11.2897098h-23.89005067v-4.5159697l24.98267247-36.05394371h4.8798909v35.61706661zm-31.53797398 0h17.69909948v-25.4925054z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(344.333123 377.543534)"/><path d="m27.0614862 21.5151218c2.4521763 1.3840162 4.3340092 3.3143433 5.6450695 5.7905521 1.3110603 2.4766379 1.9663758 5.3412296 1.9663758 8.5946332 0 3.2534037-.7162552 6.142457-2.1487656 8.6675892-1.4320812 2.5251322-3.4718421 4.4794918-6.1179953 5.863508-2.6465822 1.383587-5.7420578 2.0758097-9.2868559 2.0758097-3.1559861 0-6.2634779-.5707726-9.32290473-1.7118886-3.05899765-1.1411159-5.63262403-2.7070927-7.72045001-4.6979303l2.25777029-4.5884964c4.80736415 3.9816751 9.73574925 5.9725126 14.78558445 5.9725126 3.6422156 0 6.494791-1.0316821 8.5585845-3.0954756 2.0633643-2.0637934 3.0954756-4.8678746 3.0954756-8.4126727 0-3.4473804-1.0196659-6.2274291-3.0589977-8.3397168-2.0397609-2.1122876-4.7588699-3.1684314-8.1577562-3.1684314-4.9528468 0-8.91048936 2.0152992-11.87249858 6.0454685h-4.15161943v-30.37282541h31.10109691v4.95284678h-25.12858424v18.50075603c2.86502084-2.7680324 6.53126894-4.1520486 10.99831534-4.1520486 3.2534036 0 6.105979.6922227 8.5581553 2.0758097z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(442.786269 377.543534)"/><path d="m28.6326128 22.3734264c2.4521763 1.3840162 4.3580417 3.3263595 5.7175962 5.82703s2.0393318 5.3536751 2.0393318 8.5581554c0 3.2049094-.7162552 6.0699302-2.1487656 8.5946332-1.4320813 2.5251322-3.4109026 4.5039535-5.9360347 5.9364639-2.5247031 1.4320813-5.3897239 2.1483365-8.5946333 2.1483365-6.2639071 0-11.09530378-2.1848144-14.49419005-6.5553015-3.39931543-4.370058-5.09875857-10.5854709-5.09875857-18.6458095 0-5.82703.78921109-10.828371 2.36720413-15.004023 1.57799303-4.1760811 3.86022501-7.35652885 6.84669592-9.5417724 2.98604177-2.18524355 6.56731777-3.27743617 10.74339887-3.27743617 3.0105034 0 5.9360347.55832715 8.7765938 1.67498145 2.8405592 1.11708346 5.3292134 2.69507649 7.4655336 4.73440826l-2.2577703 4.58892566c-2.4277146-2.03976095-4.7584408-3.5447981-6.9921786-4.51596977-2.2337377-.97117167-4.5159697-1.45697208-6.8466959-1.45697208-4.4670463 0-7.9388885 1.99083755-10.41552648 5.97294185-2.47620881 3.9816751-3.71474237 9.5653758-3.71474237 16.7519603v1.0926218c1.11708345-2.7676033 2.93797669-4.9528468 5.46267975-6.5553015 2.5251321-1.6024547 5.4141855-2.4036821 8.6675891-2.4036821 3.1564153 0 5.9604964.6922227 8.4126727 2.0758097zm-1.2016264 22.8708139c2.0393317-2.1122876 3.0589976-4.9163688 3.0589976-8.4126726 0-3.4473805-1.0321113-6.2274292-3.0954756-8.3397168-2.0637934-2.1122877-4.7464245-3.1684315-8.0483224-3.1684315-3.3993154 0-6.1669186 1.0681601-8.303668 3.2049094-2.13632016 2.1363202-3.20448025 4.9043526-3.20448025 8.3032389 0 3.4473804 1.06816009 6.2394454 3.20448025 8.3761947 2.1367494 2.1363202 4.9288143 3.2049094 8.3761948 3.2049094 3.3018978 0 5.9725126-1.0561438 8.0122736-3.1684315z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(539.405045 376.685229)"/><path d="m.06008132.13775789h34.23305048v4.44301384l-24.32735691 47.41660937h-6.40938972l24.18144513-46.83382053h-27.67774898z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(678.757195 376.512457)"/><path d="m34.6622027 30.9684888c1.8693875 2.2577703 2.8040812 4.9648631 2.8040812 8.1208491 0 4.4189814-1.6749814 7.9028398-5.0253735 10.4520045-3.3508212 2.5495939-7.8663618 3.8241762-13.5474801 3.8241762-5.6815474 0-10.19708794-1.2745823-13.54748-3.8241762-3.35082122-2.5491647-5.02580268-6.0330231-5.02580268-10.4520045 0-3.155986.95872626-5.875095 2.87703707-8.157327 1.91788167-2.282232 4.55201853-3.8606542 7.90241061-4.7344083-3.10749187-.9226774-5.48671227-2.44016-7.1376612-4.5524477-1.65094892-2.1122876-2.47663796-4.6005127-2.47663796-7.4655335 0-2.7676032.72870062-5.18373073 2.18524355-7.24709502 1.45654293-2.06379345 3.50832011-3.66624817 6.15447324-4.80736415 2.64658227-1.14111599 5.66910197-1.7114594 9.06841737-1.7114594 3.3988863 0 6.421406.57034341 9.0679883 1.7114594 2.6461531 1.14111598 4.6979303 2.7435707 6.1544733 4.80736415 1.456972 2.06336429 2.1852435 4.47949182 2.1852435 7.24709502 0 2.8650208-.8377053 5.3532459-2.5131159 7.4655335-1.6749815 2.1122877-4.0177239 3.6297703-7.0286565 4.5524477 3.3993154.9226775 6.0334523 2.5126868 7.9028397 4.7708862zm-24.1084891-9.6147283c2.0633642 1.7239048 4.8434129 2.7800487 8.3397167 3.1684315 3.4958747-.3883828 6.2759234-1.4445267 8.3397168-3.1684315 2.0633643-1.7234756 3.0954756-3.9692297 3.0954756-6.7372621 0-2.8645916-1.0076496-5.12279105-3.0229488-6.77373998-2.0148701-1.65094892-4.8193804-2.47620881-8.4122436-2.47620881-3.5932922 0-6.3978026.82525989-8.4126726 2.47620881-2.01529928 1.65094893-3.0229489 3.90914838-3.0229489 6.77373998 0 2.7680324 1.0321113 5.0137865 3.0959048 6.7372621zm17.7355774 24.5822734c2.1848144-1.650949 3.2774361-4.054631 3.2774361-7.2106171 0-2.8650208-1.1531322-5.1592691-3.4598259-6.8831739-2.3062645-1.7239048-5.3777075-2.7800486-9.2134709-3.1684315-3.8361924.3883829-6.9076355 1.4445267-9.2139 3.1684315-2.30669365 1.7239048-3.4598259 4.0181531-3.4598259 6.8831739 0 3.1559861 1.09262177 5.5596681 3.27786532 7.2106171 2.18481438 1.6509489 5.31676798 2.4766379 9.39586058 2.4766379 4.0786636 0 7.2106171-.825689 9.3958607-2.4766379z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(773.608278 376.236614)"/><path d="m31.3560134 6.96900432c3.3988862 4.37005798 5.0987585 10.58547078 5.0987585 18.64580948 0 8.7890393-1.7603827 15.6232898-5.2807191 20.5031806-3.5203364 4.8803201-8.4367052 7.320051-14.7495357 7.320051-2.9620092 0-5.8630788-.5583272-8.70363793-1.6749815-2.84055913-1.1170835-5.35367504-2.6950765-7.53848944-4.7344083l2.33072618-4.5884964c2.47620882 2.0878259 4.83139668 3.6053085 7.06513445 4.5520185 2.23330864.94671 4.49150804 1.4204941 6.77374004 1.4204941 4.4670464 0 7.9268723-1.9908375 10.3790485-5.9725126 2.4521763-3.9821043 3.6782645-9.565805 3.6782645-16.7523895v-.9471392c-1.1170835 2.7195382-2.9379767 4.8678747-5.4626798 6.4462969-2.5251321 1.577993-5.4141855 2.3672041-8.6675891 2.3672041-3.1564152 0-5.9484801-.6922227-8.37619475-2.0758097-2.42771461-1.3840162-4.32156374-3.3263596-5.68111825-5.8270301s-2.03933177-5.353675-2.03933177-8.5581553c0-3.2049094.7162552-6.0699302 2.14833645-8.59463325 1.43251041-2.52513218 3.4113317-4.50395347 5.93646388-5.93646387 2.52470304-1.43208125 5.38972384-2.14833645 8.59463324-2.14833645 6.2639071 0 11.0953038 2.18481439 14.4941901 6.55530149zm-5.8270301 18.35441508c2.1367494-2.1363202 3.2049095-4.9043526 3.2049095-8.3032389 0-3.4473805-1.0681601-6.2394454-3.2049095-8.37619472-2.1363202-2.13632019-4.9283851-3.20490943-8.3757656-3.20490943-3.3018978 0-5.9729418 1.05614383-8.01227355 3.16843149-2.03933176 2.11228766-3.05899765 4.91636886-3.05899765 8.41267266 0 3.4473805 1.01966589 6.2274292 3.05899765 8.3397168 2.03933175 2.1122877 4.73440825 3.1684315 8.08480035 3.1684315 3.3993154 0 6.1669186-1.0681601 8.3032388-3.2049094z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(867.854354 375.654152)"/><path d="m330.093135.33214542v84.43190468-42.5518783h-329.66215607v42.5518783" stroke="#000" stroke-width="2.538347" transform="translate(131.785126 139.982935)"/><path d="m.10801477.42233775h329.31542823v42.21595235" stroke="#000" stroke-width="2.538347" transform="translate(461.770246 182.108695)"/><path d="m36.186655 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><path d="m132.152376 331.426017v30.871702" stroke="#000" stroke-width="2.538347"/><path d="m228.893645 346.60579v15.692843" stroke="#000" stroke-width="2.540394"/><g transform="translate(1221.45577 24.489117)"><path d="m.197608.154988h239.084215v85.099871h-239.084215z" fill="#0083c0"/><path d="m239.281823 85.2548586h-239.08421531v-85.09987082h239.08421531zm-236.54571658-82.56147761v80.02308441h234.00574658v-80.02308441z" fill="#000"/></g><g transform="translate(956.909366 124.770501)"><path d="m.184449.095195h223.163411v52.269131h-223.163411z" fill="#c9177e"/><path d="m223.347859 52.3643259h-223.16341016v-52.26913097h223.16341016zm-220.62506465-49.73066919v47.19220749h218.08488865v-47.19220749z" fill="#000"/></g><g transform="translate(1231.923745 124.770501)"><path d="m.183618.095195h222.158079v52.269131h-222.158079z" fill="#c9177e"/><path d="m222.341696 52.3643259h-222.15807809v-52.26913097h222.15807809zm-219.61932129-49.73066919v47.19220749h217.08147629v-47.19220749z" fill="#000"/></g><path d="m91.4241325.12672749v8.67595862h-91.3476086v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1252.516016 177.005152)"/><g transform="translate(1504.487683 124.770501)"><path d="m.182671.095195h221.012609v52.269131h-221.012609z" fill="#c9177e"/><path d="m221.19528 52.3643259h-221.01260884v-52.26913097h221.01260884zm-218.47425033-49.73066919v47.19220749h215.93589233v-47.19220749z" fill="#000"/></g><g transform="translate(1018.734446 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.5454361 18.6632185c.9737513 1.298422 1.4606269 2.9361183 1.4606269 4.9128281 0 2.7441845-.9294187 4.9055264-2.7882562 6.4842865-1.8590982 1.5784993-4.3818807 2.3678794-7.5683475 2.3678794-2.03616765 0-3.99097204-.3395352-5.86441318-1.0180839-1.87370191-.6785486-3.45976385-1.6376963-4.75792503-2.8769212l1.41629437-2.7882563c2.92099306 2.4195138 5.96011931 3.6292707 9.11737874 3.6292707 2.2424444 0 3.9466395-.5017401 5.1120638-1.5049595 1.1654244-1.0032194 1.7482669-2.4784499 1.7482669-4.4259525 0-3.8652762-2.4195137-5.7979144-7.2585412-5.7979144h-3.62953146v-3.0539906h2.92125384c2.33110942 0 4.11614632-.5163438 5.35537122-1.5490313 1.239225-1.0326875 1.8590983-2.5081788 1.8590983-4.4259525 0-1.71149696-.5090419-3.02452258-1.5271257-3.93907688-1.0178231-.91481507-2.4562837-1.37222261-4.315382-1.37222261-3.00965814 0-5.9895874 1.20975688-8.94030934 3.62953142l-1.37222261-2.78851699c1.26895386-1.20975688 2.82528692-2.16134189 4.66952073-2.85475502 1.84423381-.69341314 3.7695701-1.03998932 5.77600882-1.03998932 2.8325888 0 5.0971994.72288124 6.7938319 2.16864372 1.6966326 1.44576248 2.5449488 3.39326503 2.5449488 5.8422469 0 1.79990128-.4428039 3.37840058-1.32789 4.73575878-.8850862 1.3573582-2.1097076 2.3311094-3.6736032 2.9212538 1.8588374.5309474 3.2753926 1.4457625 4.2488831 2.7439237z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1028.654902 202.599599)"/><g transform="translate(1078.488158 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m22.936251 22.0604515v3.0096581h-4.7800913v6.8603307h-3.6292707v-6.8603307h-14.51708251v-2.7441844l15.18102761-21.9086215h2.9653256v21.6431478zm-19.16443702 0h10.75507502v-15.49083387z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1089.451732 203.121158)"/><g transform="translate(1138.52553 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4136394 13.9290806c1.4900951.8410145 2.6336139 2.0140014 3.4302958 3.5187001.7966819 1.5049595 1.1948924 3.2456637 1.1948924 5.2226344s-.4352412 3.7325394-1.3057238 5.2669669c-.8702217 1.5344276-2.1097075 2.7220182-3.7176749 3.5630326-1.6082282.8407537-3.489232 1.2613913-5.643272 1.2613913-1.9177737 0-3.80607928-.346837-5.66517753-1.0402501-1.85883747-.6934131-3.42273314-1.6449981-4.69142622-2.854755l1.37196183-2.7882562c2.92125384 2.4195137 5.91604755 3.6292706 8.98464192 3.6292706 2.213237 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538286-1.2540895 1.8810037-2.9580238 1.8810037-5.1120639 0-2.094843-.6196125-3.7841737-1.8588374-5.0677312-1.2394858-1.2835576-2.8917858-1.9253363-4.9571607-1.9253363-3.00965819 0-5.41456828 1.2246213-7.21446955 3.6736031h-2.52278251v-18.45642016h18.89896326v3.00965815h-15.26969262v11.24221151c1.74096506-1.6820289 3.96880576-2.5230433 6.68326132-2.5230433 1.9769707 0 3.7103731.4206376 5.2004681 1.2613912z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1148.445985 201.599599)"/><g transform="translate(957.360703 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m10.8395677 28.5428562h6.948735v3.0539907h-17.57107324v-3.0539907h6.94873503v-23.94452832l-6.46185939 4.11614628v-3.49653379l8.05522316-5.1342301h2.08023944z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(970.410431 203.121158)"/><g transform="translate(1231.099754 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m21.3648958 29.0644155v3.0539907h-20.27092509v-2.7441844l11.02080949-12.215702c1.4752306-1.6523 2.5522507-3.142395 3.2307994-4.4702851.6788094-1.3276293 1.0180838-2.6555193 1.0180838-3.98340939 0-1.74070428-.5017401-3.07589618-1.5049595-4.00531492-1.0032194-.92967951-2.4341174-1.39438888-4.2932157-1.39438888-3.0096581 0-5.98958737 1.20975688-8.94030931 3.62953142l-1.37222261-2.78851699c1.23948576-1.18028878 2.80312065-2.12431118 4.691687-2.83258875 1.88830558-.70827758 3.79147559-1.06215559 5.70951002-1.06215559 2.891525 0 5.1783019.74504751 6.8603307 2.23514253 1.6817681 1.49009502 2.5227826 3.50383562 2.5227826 6.04122179 0 1.79990128-.4057732 3.53356448-1.2173195 5.20072888-.8112856 1.6669037-2.1613419 3.5333038-4.0496475 5.5986787l-8.98464189 9.737252z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1241.784164 202.570441)"/><g transform="translate(1292.473373 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1301.574474 203.100332)"/><g fill="#fff" fill-rule="nonzero" transform="translate(974.127869 141.527307)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m60.3369055 14.1252405h3.214004v1.4134989h-8.1271311v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.9621541z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m133.890513 14.1252405h3.214004v1.4134989h-8.127131v-1.4134989h3.214004v-11.07403258l-2.988819 1.90578642v-1.61821251l3.725788-2.37370329h.962154z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m153.481607 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.429898 2.2713464-1.289696 3.0024665-.859797.726246-2.026665 1.0918061-3.500603 1.0918061-.941682 0-1.845834-.1559723-2.712455-.4679169-.866621-.3168187-1.600178-.7603649-2.200672-1.3306386l.655084-1.2916455c1.35111 1.1210508 2.75681 1.6815762 4.217101 1.6815762 1.037215 0 1.825363-.2339584 2.364442-.6970012.539079-.4630427.808619-1.1454215.808619-2.0471363 0-1.78880715-1.119101-2.68077369-3.357304-2.68077369h-1.678651v-1.41349887h1.35111c1.078158 0 1.903836-.23883257 2.477034-.71649771.573199-.47766514.859798-1.1600439.859798-2.0471363 0-.79448385-.235421-1.39887648-.706262-1.82292614-.470842-.42404966-1.136161-.63363743-1.995958-.63363743-1.392053 0-2.770458.56052542-4.135216 1.67670212l-.634612-1.28677139c.586846-.56052542 1.306756-.99919749 2.159729-1.32089033.852973-.32169285 1.743478-.48253927 2.671513-.48253927 1.310167 0 2.357619.33631525 3.142354 1.00407161.784736.66775637 1.177103 1.56947117 1.177103 2.70027027 0 .83347692-.204713 1.56459703-.61414 2.19336032-.409428.62388916-.975802 1.07718363-1.699124 1.35013514.859798.2437067 1.514881.66775636 1.965251 1.26727485z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m171.98772 10.9716758v1.3940023h-2.210908v3.1730613h-1.678651v-3.1730613h-6.714608v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.864101 0h4.974542v-7.1649771z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m186.553094 6.9700117c.689203.38993073 1.218046.93095961 1.586531 1.62796078.368484.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573s-1.613826.580022-2.610099.580022c-.887092 0-1.760537-.1559723-2.620334-.4776652-.859797-.3216928-1.583119-.7603649-2.169965-1.3208903l.634613-1.2916455c1.35111 1.1210508 2.736338 1.6815762 4.155686 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859797-2.34445848-.573198-.59464435-1.337462-.89196653-2.292793-.89196653-1.392052 0-2.50433.57027369-3.336832 1.70107279h-1.166867v-8.53460874h8.741272v1.38912821h-7.062621v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091176-1.16491804.914388 0 1.716183.19496536 2.405385.58002195z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1248.643217 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m63.8784513 14.1252405v1.4134989h-9.3758843v-1.2672749l5.0973694-5.65399549c.6823788-.76036491 1.1805153-1.45249195 1.4944095-2.06663284.3138943-.61414089.4708414-1.22828178.4708414-1.84242267 0-.80423212-.2320088-1.42324715-.6960264-1.85217094-.4640175-.4289238-1.1259249-.6433857-1.9857222-.6433857-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5731982-.54590302 1.2965197-.98457508 2.1699645-1.31114206.8734448-.32656699 1.7537134-.49228754 2.6408058-.49228754 1.3374624 0 2.3951495.34606351 3.1730613 1.03331642.7779118.6872529 1.1668677 1.62308664 1.1668677 2.79287881 0 .83347692-.1876542 1.63770904-.5629625 2.40782222-.3753083.77011319-.9996849 1.63283491-1.8731297 2.58816519l-4.1556867 4.50369987z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.432059 14.1252405v1.4134989h-9.375885v-1.2672749l5.09737-5.65399549c.682379-.76036491 1.180515-1.45249195 1.494409-2.06663284.313895-.61414089.470842-1.22828178.470842-1.84242267 0-.80423212-.232009-1.42324715-.696027-1.85217094-.464017-.4289238-1.125925-.6433857-1.985722-.6433857-1.392053 0-2.770458.56052542-4.135215 1.67670212l-.634612-1.28677139c.573198-.54590302 1.296519-.98457508 2.169964-1.31114206.873445-.32656699 1.753713-.49228754 2.640806-.49228754 1.337462 0 2.395149.34606351 3.173061 1.03331642.777912.6872529 1.166868 1.62308664 1.166868 2.79287881 0 .83347692-.187654 1.63770904-.562963 2.40782222-.375308.77011319-.999685 1.63283491-1.873129 2.58816519l-4.155687 4.50369987z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m154.976017 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021677-10.13332466h1.371582v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m169.541392 6.9700117c.689202.38993073 1.218046.93095961 1.58653 1.62796078.368485.69700117.552727 1.50123332.552727 2.41757052 0 .911463-.201302 1.7254434-.603905 2.437067-.402604.7067494-.975802 1.2575266-1.719595 1.6474573-.743792.3899307-1.613825.580022-2.610098.580022-.887093 0-1.760538-.1559723-2.620335-.4776652-.859797-.3216928-1.583119-.7603649-2.169964-1.3208903l.634612-1.2916455c1.35111 1.1210508 2.736339 1.6815762 4.155687 1.6815762 1.023568 0 1.825363-.292448 2.405385-.87247.580022-.5800219.870033-1.3696316.870033-2.363955 0-.9699527-.286599-1.74981412-.859798-2.34445848-.573198-.59464435-1.337462-.89196653-2.292792-.89196653-1.392053 0-2.50433.57027369-3.336832 1.70107279h-1.166868v-8.53460874h8.741272v1.38912821h-7.06262v5.20070104c.805207-.77986145 1.835599-1.16491804 3.091175-1.16491804.914388 0 1.716183.19496536 2.405386.58002195z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.965618 9.38758219c.525432.63363741.788148 1.39400231.788148 2.28109471 0 1.2429042-.470842 2.2226052-1.412524 2.9391029-.941683.7164977-2.210907 1.0723095-3.807674 1.0723095-1.596766 0-2.865991-.3558118-3.807673-1.0723095-.941683-.7164977-1.412524-1.6961987-1.412524-2.9391029 0-.8870924.269539-1.6523314.808619-2.29084297.539079-.6433857 1.27946-1.0869319 2.221142-1.3306386-.873444-.25832911-1.542176-.6872529-2.006193-1.28189726-.464018-.59464435-.696026-1.29164552-.696026-2.09587764 0-.77986145.204713-1.45736609.61414-2.03738804.409428-.58002195.986038-1.02844229 1.729831-1.35013513.743792-.32169285 1.593354-.48253927 2.548684-.48253927.955331 0 1.804892.16084642 2.548685.48253927.743793.32169284 1.320403.77011318 1.72983 1.35013513s.614141 1.25752659.614141 2.03738804c0 .80423212-.235421 1.50123329-.706262 2.09587764-.470841.59464436-1.129337 1.02356815-1.975487 1.28189726.955331.2583291 1.695712.70674944 2.221143 1.34038686zm-6.776021-2.7051444c.580022.48741341 1.361346.78473559 2.343971.89196653.982626-.10723094 1.763949-.40455312 2.343971-.89196653.580022-.48253927.870033-1.11130256.870033-1.89116401 0-.80423212-.283187-1.43786955-.849561-1.90578642-.566375-.46304273-1.354522-.69212703-2.364443-.69212703-1.00992 0-1.798068.2290843-2.364442.69212703-.566375.46791687-.849562 1.1015543-.849562 1.90578642 0 .77986145.290011 1.40862474.870033 1.89116401zm4.984777 6.91152211c.614141-.4630428.921211-1.1405474.921211-2.0276398 0-.8042321-.324129-1.4476178-.972389-1.9350312-.64826-.48253927-1.511469-.77986145-2.589628-.8870924-1.078158.10723095-1.941367.40455313-2.589627.8870924-.64826.4874134-.97239 1.1307991-.97239 1.9350312 0 .8870924.307071 1.564597.921211 2.0276398.614141.4630427 1.49441.6970012 2.640806.6970012 1.146397 0 2.026665-.2339585 2.640806-.6970012z"/></g><g fill="#fff" fill-rule="nonzero" transform="translate(1520.629778 141.651852)"><path d="m5.47365255 15.5387394v-13.14066544h-5.07689804v-1.43299542h11.85291919v1.43299542h-5.07689802v13.14066544z"/><path d="m21.1342453 10.3380383h-7.553933c.0136476 1.3111421.3173061 2.3005913.9109757 2.9683477.5936695.6677563 1.4568786 1.0040716 2.5896274 1.0040716 1.2009866 0 2.3064402-.4045531 3.3163608-1.2087853l.5527268 1.2087853c-.45037.4240497-1.02698.7554908-1.7298302 1.0040716-.7028501.2437067-1.4227597.3655601-2.1597288.3655601-1.6104139 0-2.8728146-.472791-3.7872021-1.418373-.9143876-.9504562-1.3715814-2.25185-1.3715814-3.9041814 0-1.04793885.2047137-1.97889846.6141409-2.79287884.4094273-.80910626.9826255-1.44274368 1.7195945-1.89116402.7369691-.45329446 1.576295-.67750463 2.5179777-.67750463 1.3647575 0 2.4360922.44842033 3.214004 1.34038686.7779118.89684067 1.1668677 2.12512245 1.1668677 3.69459363zm-6.4587151-3.27541805c-.5390792.52153234-.8836805 1.24777832-1.0338038 2.19336032h5.9981094c-.0818855-.96995267-.3650727-1.70594692-.8495616-2.21285686s-1.156632-.75549078-2.0164293-.75549078c-.8597972 0-1.5592354.25832911-2.0983147.77498732z"/><path d="m29.3842046 5.11784076-.0409427 1.51585569c-.3138943-.10723095-.675555-.16572056-1.0849823-.16572056-.996273 0-1.736654.31194458-2.2211429.93095961-.4844889.62388916-.7267334 1.37937994-.7267334 2.26647234v5.87333156h-1.6581804v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.90578642c.2593039-.69700117.675555-1.22828178 1.2487531-1.59871597.5731982-.36556006 1.2282818-.55077715 1.9652509-.55077715.3411894 0 .6550836.03899307.9416827.12185335z"/><path d="m45.9045945 9.07076348v6.46797592h-1.6581804v-6.38511564c0-.96995268-.1671828-1.67182798-.5015484-2.11050005-.3343655-.43867206-.8768567-.65313396-1.6274733-.65313396-.8734448 0-1.5558236.29244804-2.0471363.87734413-.4913127.58977022-.7369691 1.38425407-.7369691 2.39807396v5.87333156h-1.6581804v-6.38511564c0-.95533028-.1705947-1.65720558-.5117841-2.10075178s-.8870924-.66288223-1.637709-.66288223c-.8734448 0-1.5592355.29244804-2.057372.87734413-.4981365.58977022-.7472047 1.38425407-.7472047 2.39807396v5.87333156h-1.6581805v-7.40868379c0-1.06743536-.0545903-2.02763977-.1637709-2.8903615h1.576295l.1637709 1.8034296c.2865991-.65313396.7130858-1.1600439 1.2794602-1.51585569s1.2248699-.53128061 1.9754865-.53128061c.8188545 0 1.4875857.16572056 2.0061936.49228754s.90074.83347692 1.1463963 1.51585569c.3138943-.61414089.7744999-1.1015543 1.381817-1.46711435.6073171-.36068592 1.2931078-.54102888 2.057372-.54102888 2.2791451 0 3.4187176 1.3598834 3.4187176 4.07477607z"/><path d="m62.9162972 9.31447018c.45037.59951849.675555 1.35988342.675555 2.27134652 0 1.2721489-.4298986 2.2713464-1.2896959 3.0024665-.8597972.726246-2.0266649 1.0918061-3.500603 1.0918061-.9416827 0-1.8458346-.1559723-2.7124556-.4679169-.8666211-.3168187-1.6001782-.7603649-2.2006716-1.3306386l.6550837-1.2916455c1.3511099 1.1210508 2.7568102 1.6815762 4.2171007 1.6815762 1.0372158 0 1.8253632-.2339584 2.3644425-.6970012.5390792-.4630427.8086188-1.1454215.8086188-2.0471363 0-1.78880715-1.1191012-2.68077369-3.3573035-2.68077369h-1.6786518v-1.41349887h1.35111c1.0781584 0 1.9038367-.23883257 2.4770349-.71649771s.8597972-1.1600439.8597972-2.0471363c0-.79448385-.2354206-1.39887648-.706262-1.82292614-.4708413-.42404966-1.1361606-.63363743-1.9959579-.63363743-1.3920527 0-2.7704578.56052542-4.1352153 1.67670212l-.6346123-1.28677139c.5868458-.56052542 1.3067554-.99919749 2.1597288-1.32089033.8529735-.32169285 1.7434778-.48253927 2.6715129-.48253927 1.3101672 0 2.3576186.33631525 3.1423542 1.00407161.7847356.66775637 1.1771034 1.56947117 1.1771034 2.70027027 0 .83347692-.2047136 1.56459703-.6141409 2.19336032-.4094272.62388916-.9758016 1.07718363-1.6991231 1.35013514.8597972.2437067 1.5148808.66775636 1.9652508 1.26727485z"/><path d="m66.396429 5.46877841h2.1085503v2.12512245h-2.1085503zm0 7.95946089h2.1085503v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.1910661.4776651-.5117841.945582-.9621541 1.3940023l-.7779118-.5946443c.5322554-.6141409.8325021-1.199037.90074-1.7595624h-.9826254z"/><path d="m76.2226832 15.5387394 1.1463963-14.57366086h3.214004l-.962154 11.97574736h6.5098934l-.2047136 2.5979135z"/><path d="m87.6661752 15.5387394.8188545-10.37703143h3.0911758l-.8188545 10.37703143zm1.0645108-15.25116549h3.3163608l-.225185 2.9049839h-3.3163608z"/><path d="m92.6611877 14.4323109 1.0030968-2.1494931c.5731982.3948049 1.1873391.7018753 1.8424227.9114631.6550836.2144619 1.3101672.3168187 1.9652508.3168187.5731982 0 .996273-.0828603 1.2692246-.2437067.2729515-.1657206.4094272-.3850566.4094272-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.8427378-.3558118-1.5660593-.5751478-.7506166-.2047136-1.3647575-.4094273-1.8424227-.6141409-.4776651-.2047136-.8905043-.5069099-1.2385174-.91146307-.3480132-.399679-.5220198-.92121134-.5220198-1.56459704 0-.66775636.1876542-1.25752658.5629625-1.75956239.3753083-.50690994.9075638-.9017148 1.5967663-1.18928871.6892026-.28757391 1.4773501-.4289238 2.3644424-.4289238.7779118 0 1.5387642.11697922 2.2825572.34606352.743793.23395844 1.368169.54590302 1.87313.94558201l-.982626 2.06663284c-.50496-.37043419-1.037216-.64825983-1.5967662-.83835106-.5595506-.19496536-1.1054536-.28757391-1.637709-.28757391-.5595506 0-.9826255.08286028-1.2692245.2437067-.2865991.16572056-.4298987.38993073-.4298987.67750464 0 .29732218.1705947.53615474.5117841.7164977.3411894.17546883.8597973.36068592 1.5558236.55077715.7506166.21933604 1.3613456.4289238 1.8321867.63363743.470842.20471359.880269.51178409 1.228282.91146309.348013.4045531.52202.9260855.52202 1.5694711 0 1.0235682-.406016 1.8229262-1.218046 2.4029481-.812031.580022-1.9072489.87247-3.285654.87247-1.7741848 0-3.3573036-.4240496-4.7493563-1.272149z"/><path d="m107.666697 11.5078305c-.040943.5702737.075062.9943234.348013 1.2672749.272952.2729515.64826.4094272 1.125925.4094272.313894 0 .661907-.0536155 1.044039-.1657205l-.204713 2.3980739c-.464018.1900913-1.064511.2875739-1.80148.2875739-1.173692 0-2.07102-.3168187-2.691984-.945582-.620965-.6238891-.931447-1.5109815-.931447-2.6612772 0-.2290843.006823-.4094272.020471-.5312806l.327542-4.09427259h-1.965251l.184242-2.31033954h1.965251l.184242-2.43706703 3.173062-1.00407162-.266128 3.44113865h2.640806l-.184243 2.31033954h-2.640805z"/><path d="m110.962586 14.4323109 1.003097-2.1494931c.573198.3948049 1.187339.7018753 1.842423.9114631.655083.2144619 1.310167.3168187 1.965251.3168187.573198 0 .996273-.0828603 1.269224-.2437067.272952-.1657206.409427-.3850566.409427-.6580081 0-.2826998-.160359-.5117841-.481077-.6726305-.320718-.1657206-.842737-.3558118-1.566059-.5751478-.750617-.2047136-1.364757-.4094273-1.842423-.6141409-.477665-.2047136-.890504-.5069099-1.238517-.91146307-.348013-.399679-.52202-.92121134-.52202-1.56459704 0-.66775636.187654-1.25752658.562963-1.75956239.375308-.50690994.907563-.9017148 1.596766-1.18928871s1.47735-.4289238 2.364442-.4289238c.777912 0 1.538765.11697922 2.282557.34606352.743793.23395844 1.36817.54590302 1.87313.94558201l-.982625 2.06663284c-.504961-.37043419-1.037216-.64825983-1.596767-.83835106-.55955-.19496536-1.105453-.28757391-1.637709-.28757391-.55955 0-.982625.08286028-1.269224.2437067-.286599.16572056-.429899.38993073-.429899.67750464 0 .29732218.170595.53615474.511784.7164977.34119.17546883.859798.36068592 1.555824.55077715.750616.21933604 1.361345.4289238 1.832187.63363743.470841.20471359.880268.51178409 1.228282.91146309.348013.4045531.522019.9260855.522019 1.5694711 0 1.0235682-.406015 1.8229262-1.218046 2.4029481-.81203.580022-1.907248.87247-3.285653.87247-1.774185 0-3.357304-.4240496-4.749357-1.272149z"/><path d="m137.964314 10.9716758v1.3940023h-2.210907v3.1730613h-1.678652v-3.1730613h-6.714607v-1.2672749l7.021678-10.13332466h1.371581v10.00659726zm-8.8641 0h4.974541v-7.1649771z"/><path d="m142.058587 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532255-.6141409.832502-1.199037.90074-1.7595624h-.982626v-2.1105001z"/><path d="m152.488746 6.9700117c.689203.38993073 1.22487.93583374 1.607002 1.63770904.382132.70674944.573198 1.50610746.573198 2.40782226s-.201301 1.7059469-.603905 2.4126963c-.402603.7116236-.958742 1.2672749-1.668416 1.671828-.709674.399679-1.514881.6043926-2.415621.6043926-1.760537 0-3.118471-.6141409-4.073801-1.8424226-.95533-1.2282818-1.432995-2.978096-1.432995-5.24456829 0-1.63770904.221773-3.04145965.665319-4.21612596.443546-1.1746663 1.084982-2.06663284 1.924308-2.68077373s1.845835-.92121133 3.019526-.92121133c.84615 0 1.668416.15597229 2.466799.472791.798383.31194458 1.497822.75549078 2.098315 1.3306386l-.634612 1.28677139c-.682379-.57027369-1.337463-.99432335-1.965251-1.26727486-.627789-.2729515-1.269225-.40942726-1.924308-.40942726-1.255577 0-2.231379.56052542-2.927405 1.67670212-.696026 1.12105083-1.04404 2.690522-1.04404 4.7084135v.30707044c.313895-.77498731.825679-1.3891282 1.535353-1.84242267.709674-.44842033 1.521704-.6726305 2.436092-.6726305.887092 0 1.67524.19496536 2.364442.58002195zm-.337777 6.4289828c.573198-.5946443.859797-1.3793799.859797-2.363955 0-.9699527-.290011-1.74981412-.870033-2.34445848-.580022-.59464435-1.33405-.89196653-2.262086-.89196653-.95533 0-1.733242.30219631-2.333735.9017148s-.90074 1.37937991-.90074 2.33471021c0 .9699527.300247 1.7546883.90074 2.3542068.600493.5995184 1.385229.9017148 2.354207.9017148.928035 0 1.678652-.2973222 2.25185-.8919666z"/><path d="m159.070289 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832503-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m161.711095.96507854h9.621541v1.24777832l-6.837435 13.32588254h-1.80148l6.796492-13.16503611h-7.779118z"/><path d="m176.081992 13.4282393v1.4963592c0 .5751478-.095533 1.0966801-.286599 1.5743453-.191066.4776651-.511784.945582-.962154 1.3940023l-.777912-.5946443c.532256-.6141409.832502-1.199037.90074-1.7595624h-.982625v-2.1105001z"/><path d="m187.157 2.64178066c.95533 1.22828178 1.432995 2.97322177 1.432995 5.23969411 0 2.47118593-.494725 4.39159483-1.484174 5.76610063-.989449 1.3696316-2.371266 2.0568845-4.145451 2.0568845-.832502 0-1.647945-.1608464-2.446328-.472791s-1.504645-.7554908-2.118786-1.3306386l.655084-1.2916455c.696026.5897702 1.357934 1.0138199 1.985722 1.2818973.627788.2680773 1.262401.399679 1.903837.399679 1.255577 0 2.227966-.5605255 2.917169-1.6815763.689203-1.1161767 1.033804-2.68564786 1.033804-4.70841349v-.26320324c-.313894.76523904-.825679 1.36963167-1.535352 1.80830373-.709674.44842034-1.521705.6677564-2.436093.6677564-.887092 0-1.671828-.19496539-2.354206-.58489612-.682379-.38505659-1.214635-.93583374-1.596767-1.63770904-.382132-.70187531-.573198-1.50123329-.573198-2.40294809s.201302-1.70594692.603905-2.41757049c.402604-.70674944.958743-1.26727486 1.668416-1.66695385.709674-.40455313 1.514881-.60439262 2.415621-.60439262 1.760538 0 3.118471.61414089 4.073802 1.84242267zm-1.63771 5.15683383c.600494-.59951849.90074-1.3745058.90074-2.32983608 0-.96995268-.300246-1.75468826-.90074-2.35420675-.600493-.60439262-1.385228-.9017148-2.354206-.9017148-.928035 0-1.678652.29732218-2.25185.89196653-.573198.58977023-.859797 1.37937994-.859797 2.36395502 0 .96507855.286599 1.74981413.859797 2.34445848.573198.58977022 1.330638.8870924 2.272321.8870924.95533 0 1.733242-.29732218 2.333735-.9017148z"/></g><g transform="translate(1352.227084 194.213333)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m16.4442443 13.0739279c1.490095.8410144 2.6336139 2.0140013 3.4302957 3.5187.7966819 1.5049595 1.1948925 3.2456638 1.1948925 5.2226344 0 1.9769707-.4352413 3.7325394-1.3057238 5.266967-.8702218 1.5344275-2.1097075 2.7220182-3.717675 3.5630326-1.6082282.8407536-3.4892319 1.2613912-5.643272 1.2613912-1.91777365 0-3.80607922-.3468369-5.66517747-1.0402501-1.85883748-.6934131-3.42273314-1.6449981-4.69142623-2.854755l1.37196183-2.7882562c2.92125384 2.4195138 5.91604755 3.6292706 8.98464187 3.6292706 2.2132371 0 3.9466395-.6269143 5.2007289-1.8810037 1.2538287-1.2540894 1.8810038-2.9580238 1.8810038-5.1120638 0-2.0948431-.6196125-3.7841738-1.8588375-5.0677313-1.2394857-1.2835575-2.8917857-1.9253363-4.9571607-1.9253363-3.00965814 0-5.41456823 1.2246213-7.2144695 3.6736032h-2.52278251v-18.45642023h18.89896331v3.00965815h-15.26969267v11.24221148c1.74096506-1.6820289 3.96880577-2.5230433 6.68326137-2.5230433 1.9769706 0 3.7103731.4206376 5.2004681 1.2613913z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1362.630417 203.100332)"/><g transform="translate(1412.266122 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m21.062913 18.8183824c1.1359562 1.3719618 1.7039343 3.01696 1.7039343 4.9347336 0 2.6852483-1.017823 4.8022576-3.0537299 6.3512889-2.0361676 1.549292-4.7800913 2.3238076-8.2322925 2.3238076-3.45246205 0-6.19638571-.7745156-8.23229258-2.3238076-2.03616764-1.5490313-3.05399069-3.6660406-3.05399069-6.3512889 0-1.9177736.58258178-3.5700736 1.7482669-4.9568999 1.16542433-1.3868263 2.76608993-2.3459739 4.8019968-2.8769213-1.88830558-.5606763-3.33406805-1.4827932-4.33728744-2.7663507-1.00321938-1.2835575-1.50495946-2.795558-1.50495946-4.5365231 0-1.68176807.44280388-3.1499576 1.32789007-4.40378625.88508619-1.25408942 2.13187378-2.2278407 3.73984121-2.92125383 1.60822822-.69341314 3.44489942-1.03998932 5.51053519-1.03998932 2.0653749 0 3.9020461.34657618 5.5102744 1.03998932 1.6079674.69341313 2.854755 1.66716441 3.7398412 2.92125383.8853469 1.25382865 1.32789 2.72201818 1.32789 4.40378625 0 1.7409651-.5090419 3.2529656-1.5271257 4.5365231-1.017823 1.2835575-2.4414192 2.2056744-4.2710494 2.7663507 2.0656358.5606763 3.6663014 1.526865 4.8022576 2.8990876zm-14.64981941-5.8425077c1.25382864 1.0475519 2.94315933 1.6893307 5.06773131 1.9253363 2.1243111-.2360056 3.8136418-.8777844 5.0677313-1.9253363 1.2538286-1.0472911 1.8810037-2.4119511 1.8810037-4.09397999 0-1.74070429-.6123107-3.1129269-1.836932-4.11614628-1.2243605-1.00321938-2.9285556-1.50469868-5.111803-1.50469868-2.18350818 0-3.88770331.5014793-5.11206385 1.50469868-1.22462132 1.00321938-1.83693198 2.37544199-1.83693198 4.11614628 0 1.68202889.6271751 3.04668889 1.88126452 4.09397999zm10.77724131 14.9377202c1.3276293-1.0032194 1.9915743-2.4638463 1.9915743-4.38162 0-1.7409651-.7007149-3.1350932-2.1024056-4.1826451-1.40143-1.0475519-3.2678301-1.6893307-5.5986787-1.9253363-2.33110948.2360056-4.19750956.8777844-5.59893949 1.9253363-1.40169072 1.0475519-2.10240568 2.44168-2.10240568 4.1826451 0 1.9177737.66394503 3.3784006 1.9918351 4.38162 1.32762929 1.0032193 3.2307993 1.5049594 5.70951007 1.5049594 2.4784499 0 4.38162-.5017401 5.70951-1.5049594z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1421.105194 202.753717)"/><g transform="translate(1503.787344 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m23.0372759 21.726858v3.0096582h-4.7800914v6.8603307h-3.6292706v-6.8603307h-14.51708254v-2.7441845l15.18102754-21.90862143h2.9653256v21.64314773zm-19.16443705 0h10.75507505v-15.4908338z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1512.887196 203.275277)"/><g transform="translate(1565.163879 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m17.3989587 13.5954872c1.490095.8410144 2.6482175 2.0213032 3.4743675 3.5408663.82615 1.5195632 1.239225 3.2532264 1.239225 5.2004682 0 1.9475025-.4352413 3.6884676-1.3057238 5.2226344-.8702218 1.5344275-2.0726768 2.7368826-3.6071044 3.6073651-1.5341668.8702218-3.2751319 1.305463-5.2226344 1.305463-3.80634005 0-6.74219755-1.3276293-8.80757252-3.9834094-2.06563575-2.6555193-3.09832323-6.4323913-3.09832323-11.330355 0-3.5408663.47957381-6.5799926 1.43846065-9.11737874.95888684-2.53764695 2.34571311-4.47028507 4.16047882-5.79817514 1.81450493-1.32789007 3.99071125-1.99157432 6.52835818-1.99157432 1.8293694 0 3.6071044.33927435 5.333205 1.01782304 1.7261006.67880948 3.2383619 1.63769632 4.5365231 2.8769213l-1.3719618 2.78851699c-1.4752306-1.23948576-2.891525-2.15404006-4.2488832-2.74418445-1.3573581-.59014439-2.7441844-.88534697-4.1604788-.88534697-2.71445553 0-4.82416305 1.20975688-6.32912251 3.62953142-1.50469868 2.41951375-2.2573088 5.81251797-2.2573088 10.17953437v.663945c.67880947-1.6817681 1.7852976-3.0096582 3.31946439-3.9834094 1.53442756-.9737513 3.28999632-1.460627 5.26696692-1.460627 1.9180345 0 3.6219688.4206377 5.1120639 1.2613913zm-.7301831 13.8977308c1.239225-1.2835575 1.8588375-2.9874918 1.8588375-5.1120638 0-2.0948431-.6271751-3.7841737-1.8810038-5.0677313-1.2540894-1.2835575-2.8842231-1.9253363-4.8906619-1.9253363-2.06563572 0-3.7474038.6490806-5.04582577 1.9475026-1.29816118 1.2981612-1.94724178 2.98019-1.94724178 5.045565 0 2.0948431.6490806 3.7914756 1.94724178 5.0898976 1.29842197 1.2981612 2.99505449 1.9475025 5.08989757 1.9475025 2.0064388 0 3.6292706-.6417787 4.8687564-1.9253363z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1574.52451 202.753717)"/><g transform="translate(1624.915924 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37816863-46.72872807v44.19032577h37.83971293v-44.19032577z" fill="#000"/></g><path d="m.03650915.08371027h20.80213335v2.6998519l-14.78281705 28.81328473h-3.89474434l14.69415189-28.45914594h-16.81872385z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1635.972745 203.629332)"/><g transform="translate(1684.951213 194.392443)"><path d="m.035471.089728h42.916712v49.26713h-42.916712z" fill="#00a88a"/><path d="m42.9521838 49.3568579h-42.91671231v-49.26713035h42.91671231zm-40.37825665-46.72872807v44.19032577h37.83980095v-44.19032577z" fill="#000"/></g><path d="m19.0538664 4.23480103c2.065375 2.65551935 3.0983233 6.43239127 3.0983233 11.33035497 0 5.3407676-1.0697182 9.4936838-3.2088939 12.4590094-2.1391756 2.9655864-5.1266674 4.4481188-8.96273635 4.4481188-1.79990127 0-3.56277183-.3392743-5.28887245-1.017823-1.72610062-.6788095-3.25322635-1.6376963-4.58085564-2.8769213l1.41629437-2.7882562c1.50469869 1.2686931 2.9358575 2.19081 4.29321568 2.7660899 1.35709739.57528 2.72932.8631807 4.11614627.8631807 2.71445552 0 4.81686122-1.2097569 6.30695622-3.6292706 1.4900951-2.4197745 2.2351426-5.8127788 2.2351426-10.1797951v-.5755408c-.6788095 1.6525608-1.7852976 2.9580238-3.3194644 3.9171714-1.5344276.9588869-3.2899963 1.4384607-5.26696696 1.4384607-1.91803446 0-3.61466698-.4206376-5.08989756-1.2613913-1.47523058-.8410144-2.62605125-2.0213032-3.45220124-3.5408663s-1.23922498-3.2532264-1.23922498-5.2004681c0-1.94750259.43524126-3.68846765 1.30546302-5.22263444.87048253-1.53442756 2.07293758-2.73688261 3.60736514-3.60736514 1.53416679-.87022175 3.27513185-1.30546302 5.22263438-1.30546302 3.8063401 0 6.7421976 1.32762929 8.8075725 3.98340943zm-3.5408663 11.15328557c1.298422-1.2981611 1.9475026-2.98019 1.9475026-5.045565 0-2.09484305-.6490806-3.79147556-1.9475026-5.08989753-1.2981612-1.29816119-2.9947937-1.94750256-5.0896368-1.94750256-2.00643874 0-3.62953139.64177876-4.86875638 1.92533629-1.23922498 1.28355752-1.85883747 2.98749187-1.85883747 5.1120638 0 2.0948431.61961249 3.7841738 1.85883747 5.0677313 1.23922499 1.2835575 2.8769213 1.9253363 4.91282818 1.9253363 2.0656357 0 3.7474038-.6490806 5.045565-1.9475026z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1694.05523 202.753717)"/><path d="m274.413747 0v15.1195638-7.54515948h-274.07401986v7.54515948" stroke="#000" stroke-width="2.539424" transform="translate(1068.761162 109.742102)"/><path d="m0 .24858084h272.688304v7.55978192" stroke="#000" stroke-width="2.539424" transform="translate(1343.17491 117.053303)"/><path d="m90.8465476.12672749v8.60284661h-90.40348881v8.7441965" stroke="#000" stroke-width="2.539424" transform="translate(978.589682 177.005152)"/><path d="m1040.343498 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.18765416.0292448h90.06863584v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1069.248576 185.778593)"/><path d="m1100.026783 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m1314.628568 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.27782564.0292448h88.64587606v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1343.662323 185.778593)"/><path d="m1373.584633 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m90.3956902.12672749v8.67595862h-90.07887149v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1525.467524 177.005152)"/><path d="m1586.145618 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><path d="m.22421017.0292448h90.27871103v8.67108449" stroke="#000" stroke-width="2.539424" transform="translate(1615.639004 185.778593)"/><path d="m1645.921998 185.807838v8.671084" stroke="#000" stroke-width="2.539424"/><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1263.581889 37.572233)"><path d="m7.95815261 22.540308v-20.02691984h-7.73636299v-2.18343345h18.06186388v2.18343345h-7.736363v20.02691984z"/><path d="m32.5082157 6.84954575v15.69076225h-2.495645v-2.8385659c-.4572278.9772392-1.1488702 1.7313239-2.0742447 2.2615717s-2.001566.7953717-3.2285744.7953717c-1.3935212 0-2.6154113-.3326845-3.6653293-.9980533-1.0502591-.6657101-1.8613267-1.6067805-2.4332026-2.8232112-.571876-1.2164307-.857814-2.6358843-.857814-4.2580194s.2910562-3.0518251.8731686-4.2894112c.5824537-1.2372448 1.3986395-2.1991293 2.4488986-2.88531225s2.2615716-1.02944503 3.6342787-1.02944503c1.2270084 0 2.2977405.27024212 3.2128785.81106756.9151381.54082545 1.6118987 1.29968715 2.0899406 2.27726753v-2.71402246zm-3.7431262 12.24381045c.8315404-1.0502592 1.2474812-2.5423915 1.2474812-4.4763969 0-1.9340055-.4159408-3.4210195-1.2474812-4.460701-.8318817-1.04002268-2.0172619-1.55969281-3.5564818-1.55969281-1.5388787 0-2.7396136.53536601-3.602887 1.60643921-.8629322 1.0710733-1.294569 2.5632056-1.294569 4.4763969s.4265185 3.3896277 1.2788731 4.4296504c.8526958 1.0396815 2.0588901 1.5596929 3.6185829 1.5596929 1.5392199 0 2.7246001-.5251296 3.5564818-1.5753887z"/><path d="m44.8301643 14.4610241 6.4571488 8.0792839h-3.0258928l-4.9598983-6.176329-4.8974559 6.176329h-3.0883351l6.5195911-8.0792839-6.1452784-7.61147835h3.0572845l4.5541938 5.77096575 4.5545351-5.77096575h3.0879939z"/><path d="m56.3720959 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.422625-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8990615.99805327 1.1232791.66571006 1.9913295 1.61189868 2.6048337 2.83890711.6135042 1.2270084.9202563 2.6618166.9202563 4.3047658s-.3067521 3.0777574-.9202563 4.3047658-1.4815546 2.173197-2.6048337 2.8389071c-1.1229379.6653688-2.422625.9980533-3.8990615.9980533-1.4767776 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478225-2.532155 1.2478225-4.5077886 0-1.9131914-.4261773-3.3950872-1.2788731-4.4453463-.8526957-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526957 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2631771 4.5077886.8424594 1.0291038 2.0435354 1.543997 3.6032282 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m85.1023814 12.6829538v9.8573542h-2.5270367v-9.7324695c0-1.4559636-.2910562-2.5215774-.8731687-3.19752386-.5824536-.67594651-1.4975917-1.01374915-2.7454142-1.01374915-1.4556223 0-2.6201884.44699138-3.4936983 1.34131535-.8735098.89432396-1.3102648 2.10051826-1.3102648 3.61858286v8.9838443h-2.5266955v-11.2925036c0-1.62179388-.0832564-3.08799385-.249428-4.39825865h2.4018109l.2497692 2.80751531c.4783832-1.01886737 1.1956167-1.80400261 2.152383-2.3550645.956425-.55106189 2.0483124-.82676344 3.2753208-.82676344 3.7642815 0 5.6464223 2.0691265 5.6464223 6.20772068z"/><path d="m92.4640906 21.7606322c-1.1229379-.6657101-1.9913295-1.6118987-2.6048337-2.8389071s-.9202563-2.6618166-.9202563-4.3047658.3067521-3.0777574.9202563-4.3047658c.6135042-1.22700843 1.4818958-2.17319705 2.6048337-2.83890711 1.1229379-.66536885 2.4229662-.99805327 3.8994026-.99805327 1.4764365 0 2.7761236.33268442 3.8994028.99805327 1.122938.66571006 1.990988 1.61189868 2.604492 2.83890711.613505 1.2270084.920257 2.6618166.920257 4.3047658s-.306752 3.0777574-.920257 4.3047658c-.613504 1.2270084-1.481554 2.173197-2.604492 2.8389071-1.1232792.6653688-2.4229663.9980533-3.8994028.9980533-1.4764364 0-2.7764647-.3326845-3.8994026-.9980533zm7.4865938-2.6358843c.8318816-1.029445 1.2478226-2.532155 1.2478226-4.5077886 0-1.9131914-.426177-3.3950872-1.2788732-4.4453463-.8526958-1.04991795-2.0380759-1.57504751-3.5561406-1.57504751-1.5388787 0-2.7348365.52512956-3.5875323 1.57504751-.8526958 1.0502591-1.278873 2.5321549-1.278873 4.4453463 0 1.9756336.421059 3.4783436 1.2635183 4.5077886.8421182 1.0291038 2.0431942 1.543997 3.602887 1.543997 1.5596929 0 2.7553095-.5148932 3.5871912-1.543997z"/><path d="m130.334156 12.6829538v9.8573542h-2.526696v-9.7324695c0-1.4767777-.254546-2.5478509-.764321-3.21321974-.509434-.66536885-1.336197-.99805327-2.479949-.99805327-1.330738 0-2.370761.44699138-3.119386 1.34131535-.748625.89432396-1.122938 2.11075466-1.122938 3.64963346v8.9527937h-2.526695v-9.7324695c0-1.4559636-.260006-2.5215774-.780017-3.19752386-.520012-.67594651-1.351552-1.01374915-2.495645-1.01374915-1.330738 0-2.375879.44699138-3.135082 1.34131535-.758861.89432396-1.138292 2.11075466-1.138292 3.64963346v8.9527937h-2.527037v-11.2925036c0-1.62179388-.082915-3.08799385-.249428-4.39825865h2.402152l.249428 2.74507301c.436755-.99805327 1.086428-1.76749263 1.949701-2.30831808.862933-.54082544 1.866445-.81106756 3.010197-.81106756 1.247823 0 2.26669.24942801 3.056944.74862526.790253.49919724 1.372707 1.26863659 1.747019 2.30831807.478383-.93561096 1.180262-1.679118 2.105637-2.23017989.925374-.55106189 1.970515-.82676344 3.135081-.82676344 3.472884 0 5.209327 2.0691265 5.209327 6.20772068z"/><path d="m148.926608 6.84954575-7.330999 17.12591165c-.76944 1.7883067-1.736784 3.0985715-2.90135 3.9304532s-2.599374 1.4037577-4.304766 1.715628l-.530247-1.9653972c1.476436-.3326844 2.594256-.7745576 3.353459-1.3256195.758861-.5510619 1.388061-1.3986394 1.887259-2.5423914l.62374-1.4037577-6.644475-15.53482705h2.65158l5.30316 12.94568925 5.364238-12.94568925z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1242.021555 73.436333)"><path d="m.1061178 18.7869453 1.3955685-17.74521654h3.91271003l-1.17104917 14.58010814h7.92539604l-.2490868 3.1651084z"/><path d="m14.0379178 18.7869453.9970296-12.63586623h3.763258l-.9970297 12.63586623zm1.2959338-18.56754419h4.0375946l-.2739955 3.53907983h-4.0375946z"/><path d="m20.1190478 17.4411941 1.2212078-2.6167762c.6981254.4817953 1.445727.8513309 2.243146 1.1089481.7977602.2576171 1.5951792.3862551 2.3925981.3862551.6977843 0 1.2130186-.0996347 1.5453618-.2989042.3323432-.1996106.4985148-.4654169.4985148-.7977601 0-.3487216-.1951748-.6230583-.5858658-.8223277-.3903497-.1996106-1.0260328-.4319779-1.906367-.6977842-.9141144-.2494281-1.661716-.4985149-2.243146-.7479429-.5817713-.2490868-1.0843807-.6189636-1.5078282-1.108948-.4237888-.4903257-.6356832-1.1256676-.6356832-1.9067083 0-.8141385.2286139-1.52864228.6855005-2.14317012.4568867-.61486905 1.1048535-1.09666434 1.9439007-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472123 0 1.8736104.14126293 2.7791945.42378878.9052428.28252585 1.6654694.66468641 2.2803385 1.1464817l-1.1962991 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9439007-1.02193831-.6814059-.23236727-1.3460923-.34872152-1.9940592-.34872152-.6810648 0-1.1962991.09963472-1.5450206.29890416-.3490627.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2074586.65615608.6230582.87214498.4152584.215989 1.046847.4405083 1.8940833.6728756.9137732.2661475 1.6572803.5234235 2.2305211.7728515.5732409.2490868 1.0717557.6189636 1.4955445 1.1089481.4237887.4903256.6353419 1.1256676.6353419 1.9067082 0 1.2461165-.494079 2.222332-1.4829195 2.9283054-.9884992.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598896 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m38.3876878 13.8772056c-.0498173.6977843.0914456 1.2130186.4237888 1.5453618.3323432.332002.7892298.4981736 1.3706598.4981736.3821606 0 .8059494-.0661957 1.2710251-.1992694l-.2490868 2.9160216c-.5650517.2327085-1.2959338.3490627-2.1933287.3490627-1.4286663 0-2.5212361-.3821605-3.2773681-1.1464817-.7557907-.7643211-1.1338567-1.8442659-1.1338567-3.2401757 0-.2825258.0081891-.4985148.0249087-.6479668l.3988801-4.98446573h-2.3925982l.2241782-2.8163869h2.3925981l.2241781-2.96583898 3.8632339-1.22120774-.3241541 4.18704672h3.215267l-.2245193 2.8163869h-3.2149258z"/><path d="m42.4003738 17.4411941 1.2212077-2.6167762c.6977843.4817953 1.4457271.8513309 2.2431461 1.1089481.7974189.2576171 1.5951791.3862551 2.3925981.3862551.6977842 0 1.2130186-.0996347 1.5453618-.2989042.332002-.1996106.4981736-.4654169.4981736-.7977601 0-.3487216-.1951749-.6230583-.5855246-.8223277-.3903497-.1996106-1.0260329-.4319779-1.9067083-.6977842-.9137732-.2494281-1.6613748-.4985149-2.243146-.7479429-.58143-.2490868-1.0840394-.6189636-1.5078282-1.108948-.4234475-.4903257-.6353419-1.1256676-.6353419-1.9067083 0-.8141385.2282727-1.52864228.6851593-2.14317012.4572278-.61486905 1.1051947-1.09666434 1.9442419-1.44572707.8390472-.34872152 1.7985432-.5234235 2.878488-.5234235.9472122 0 1.8732692.14126293 2.7788532.42378878.9055841.28252585 1.6658107.66468641 2.2806797 1.1464817l-1.196299 2.51714153c-.6148691-.44869746-1.262836-.78922982-1.9442419-1.02193831-.6810648-.23236727-1.3457512-.34872152-1.9937181-.34872152-.6814059 0-1.196299.09963472-1.5453618.29890416-.3487215.19961066-.5234235.47360613-.5234235.82266887 0 .36544108.2077999.65615608.6233995.87214498.4152584.215989 1.0465057.4405083 1.8940833.6728756.9137732.2661475 1.6572802.5234235 2.2305211.7728515.5732408.2490868 1.0717556.6189636 1.4955444 1.1089481.4234476.4903256.635342 1.1256676.635342 1.9067082 0 1.2461165-.4944203 2.222332-1.4829195 2.9283054-.9884993.7063146-2.3219667 1.0594719-4.000061 1.0594719-2.1598897 0-4.087412-.5152343-5.7822259-1.5453618z"/><path d="m67.62263 18.7869453v-16.0005853h-6.1811059v-1.74463124h14.430656v1.74463124h-6.181106v16.0005853z"/><path d="m86.688689 12.4567284h-9.1967623c.0167195 1.594838.3865964 2.7996674 1.1092893 3.6138059s1.7736345 1.2212077 3.1528247 1.2212077c1.4621054 0 2.8078565-.4903256 4.0372534-1.4706357l.6732168 1.4706357c-.5483322.5148932-1.2505522.9219624-2.1059777 1.2212078-.8557667.2989041-1.7323475.4486974-2.6294012.4486974-1.9606202 0-3.4977928-.5776766-4.6108355-1.7323475-1.1133839-1.1546708-1.6699052-2.737225-1.6699052-4.7476626 0-1.2795555.2490868-2.4134122.7476016-3.40225268.4985148-.98849926 1.1962991-1.75691497 2.093694-2.30524714.8970537-.54833217 1.918992-.82232765 3.0654737-.82232765 1.6613748 0 2.965839.54389638 3.9130512 1.63237157.9468711 1.08813397 1.4204772 2.587773 1.4204772 4.4985758zm-7.8632949-3.98777725c-.656156.63124737-1.0758502 1.52011191-1.2584001 2.66659365h7.3023377c-.0996347-1.17957958-.4446028-2.07697448-1.034222-2.69150233-.5899604-.61486905-1.4081934-.92230358-2.4550404-.92230358s-1.8981779.31562368-2.5546752.94721226z"/><path d="m96.7326876 6.10126171-.0498173 1.84426595c-.3821606-.13307377-.8226689-.19926944-1.3208425-.19926944-1.2130186 0-2.114508.37772478-2.7041272 1.13385676-.5899604.75613198-.88477 1.67399982-.88477 2.75394462v7.1528857h-2.0189679v-9.02206036c0-1.29593379-.0665369-2.46732417-.1992694-3.51417115h1.918992l.1992694 2.31787208c.3159649-.84723633.8226689-1.49554443 1.5204531-1.94390067.6977843-.44869745 1.4955445-.67287557 2.3925981-.67287557.4152584 0 .797419.04981736 1.1464817.14945208z"/><path d="m116.845594 10.9113666v7.8755787h-2.018627v-7.7759439c0-1.17957958-.203705-2.03534628-.610775-2.56695893-.407069-.53161264-1.067661-.79776018-1.981434-.79776018-1.063225 0-1.894083.35725189-2.492233 1.07175566-.598149.71450378-.897395 1.68662475-.897395 2.91602165v7.1528857h-2.018626v-7.7759439c0-1.16320127-.2078-2.01453218-.623059-2.55467519-.415258-.53980181-1.079944-.81004392-1.993718-.81004392-1.063566 0-1.898519.35725189-2.504857 1.07175566-.606339.71450378-.909679 1.68662475-.909679 2.91602165v7.1528857h-2.018968v-9.02206036c0-1.29593379-.0661956-2.46732417-.1992694-3.51417115h1.9189924l.19961 2.19332868c.348722-.79776018.868051-1.41228802 1.557646-1.84426595s1.491108-.64796689 2.404882-.64796689c.997029 0 1.811168.19926944 2.442415.59814953.631589.39853888 1.096664 1.01340793 1.39591 1.84426595.38216-.74794282.942776-1.34165656 1.682189-1.78216486.739412-.44016708 1.574365-.66025062 2.504858-.66025062 2.774758 0 4.162138 1.65318567 4.162138 4.95955697z"/><path d="m119.911067 17.3415594.672876-1.4955444c.681406.5316126 1.371001.9137732 2.068785 1.1464817s1.478825.3490627 2.342781.3490627c.946871 0 1.665469-.162077 2.155795-.4862311.489984-.3238128.735318-.7933244.735318-1.4078522 0-.4985148-.166172-.8973949-.498515-1.1962991-.332343-.2992453-.880675-.5319538-1.644996-.6981254l-2.118603-.4981736c-1.046506-.2327085-1.85655-.6483081-2.429791-1.2464577-.573241-.5981495-.859861-1.3123121-.859861-2.14317008 0-1.09666435.440167-1.98962346 1.320843-2.67921855.880675-.6895951 2.043876-1.03422204 3.489262-1.03422204.880675 0 1.711533.14092171 2.492233.42344756.781041.28252584 1.437197.68959509 1.96915 1.22120774l-.673216 1.47063576c-1.17958-.9803101-2.442416-1.47063576-3.788167-1.47063576-.897054 0-1.591085.17026618-2.081069.51113976-.489984.34053236-.735318.81823307-.735318 1.43310213 0 .51489308.153888.92196238.461323 1.22120778.307093.2989041.801513.5316126 1.482919.6977842l2.118261.5234235c1.163202.2658063 2.027158.6769702 2.592209 1.2334915.564711.5568625.847237 1.28365.847237 2.1807037 0 1.0802861-.440168 1.9442419-1.320843 2.5922088s-2.076974.9721209-3.588897.9721209c-2.110414 0-3.779978-.540143-5.009716-1.6200878z"/><path d="m146.77832 17.0672227h3.91271v1.7197226h-9.894546v-1.7197226h3.913051v-13.48310252l-3.638715 2.31753087v-1.96880935l4.53611-2.89111294h1.17139z"/><path d="m156.722343 16.2199864v1.8193573c0 .6977842-.116013 1.3375619-.348722 1.918992-.232708.5817712-.623058 1.1464817-1.17139 1.6948138l-.947212-.7226929c.647967-.7476016 1.013749-1.4621054 1.096664-2.1435113h-1.196299v-2.5669589z"/><path d="m171.801648 17.0672227v1.7197226h-11.415341v-1.5450206l6.204991-6.8788902c.832564-.93049277 1.436515-1.76953995 1.818675-2.51714156.382161-.74794282.573241-1.49554443.573241-2.24314604 0-.9803101-.279796-1.73200629-.846213-2.25542978-.563004-.5234235-1.371683-.78513524-2.4158-.78513524-1.696179 0-3.374274.68106472-5.03599 2.04353539l-.77251-1.56992926c.697784-.66468642 1.57846-1.19629906 2.641685-1.59517916 1.063567-.39888009 2.136346-.59814953 3.214585-.59814953 1.627594 0 2.917386.41935298 3.862551 1.25874137.948577.83904718 1.422866 1.97290393 1.422866 3.40191149 0 1.01340793-.228614 1.98962345-.685842 2.92830535-.457228.93868189-1.218137 1.98962347-2.279315 3.15282467l-5.061239 5.4829805z"/><path d="m177.435104 16.2199864v1.8193573c0 .6977842-.119425 1.3375619-.351451 1.918992-.232026.5817712-.621011 1.1464817-1.170367 1.6948138l-.948577-.7226929c.648308-.7476016 1.01682-1.4621054 1.098712-2.1435113h-1.197664v-2.5669589z"/><path d="m191.339607 11.2102708c.549356.7312233.822328 1.6535269.822328 2.7665695 0 1.5453618-.522059 2.762475-1.569588 3.6513395-1.04753.8888646-2.466983 1.3334674-4.261773 1.3334674-1.146482 0-2.245193-.1910802-3.302959-.5732408-1.054354-.3821606-1.948337-.9223036-2.678536-1.6200878l.798442-1.5702705c1.644656 1.3624706 3.354142 2.0438766 5.131871 2.0438766 1.265907 0 2.22472-.2825259 2.879853-.8475776.658544-.5647104.98611-1.3955685.98611-2.4922328 0-2.1766092-1.364859-3.2650844-4.087753-3.2650844h-2.043876v-1.71938129h1.644655c1.313677 0 2.316848-.29105622 3.016339-.87248623.696078-.58143001 1.047529-1.41228803 1.047529-2.49223284 0-.96359058-.290033-1.70300303-.859861-2.21823737-.573241-.51489312-1.385332-.77251029-2.432862-.77251029-1.692425 0-3.371202.68106472-5.032918 2.04353539l-.771145-1.56992926c.713139-.68140594 1.590061-1.21711317 2.627354-1.6078041 1.037293-.39034973 2.122356-.58552459 3.251777-.58552459 1.596885 0 2.873028.40706925 3.82843 1.22120775.955401.81413849 1.433102 1.91080284 1.433102 3.28999303 0 1.01340793-.252499 1.90227247-.750673 2.6665936-.498174.76432114-1.187427 1.31265331-2.067762 1.64499652 1.04753.29890416 1.845972.81413848 2.391916 1.54502058z"/></g><g transform="translate(1238.737766 301.42884)"><path d="m.162355.124952h196.432387v68.608179h-196.432387z" fill="#0083c0"/><path d="m196.594742 68.7331309h-196.43238687v-68.60817855h196.43238687zm-193.8939261-66.06958614v63.53099374h191.3558681v-63.53099374z" fill="#000"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1249.006069 345.842567)"><path d="m.56874621 14.4291604 1.02879531-13.08192845h2.88430112l-.8634532 10.74723665h5.84208763l-.18371345 2.3346918z"/><path d="m10.8383279 14.4291604.7348538-9.31580278h2.7740731l-.7348538 9.31580278zm.95531-13.68665188h2.9761578l-.2020848 2.6102619h-2.9761578z"/><path d="m15.320936 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329648-1.07166178.618502-.25260599 1.3257988-.38273635 2.1218904-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m28.7871317 10.8084745c-.0367426.5128667.0673616.895603.3123129 1.1405543s.5817593.3674269 1.010424.3674269c.2816939 0 .5940068-.0459284.9369385-.1454398l-.1837134 2.1509783c-.4164171.168404-.9553099.252606-1.6166783.252606-1.0532905 0-1.8585677-.2832249-2.4158319-.84202-.5572641-.5664498-.8358962-1.3625414-.8358962-2.3882748 0-.2066776.0061238-.3674269.0183714-.4822478l.2939415-3.67426897h-1.7636491l.1653421-2.07443101h1.7636491l.1653421-2.18159719 2.8475584-.90325778-.2388274 3.08485497h2.3699034l-.1653421 2.07443101h-2.3699034z"/><path d="m31.7449182 13.4340458.9001959-1.9289912c.5143977.3597722 1.065538.6276877 1.6534211.8190558.587883.1913682 1.175766.2832249 1.7636491.2832249.5143976 0 .8940721-.0688925 1.1390233-.2143323.2449513-.1530946.3674269-.3444627.3674269-.589414 0-.2602607-.1439088-.4592836-.4317266-.6047234-.2878177-.1530946-.756287-.3214986-1.4054078-.5205215-.673616-.1837134-1.2247564-.3674269-1.6534211-.5511403-.4286647-.18371346-.7991535-.4516289-1.1114663-.81140107-.3123129-.36742689-.4684693-.83436524-.4684693-1.40846976 0-.59706871.168404-1.12524487.505212-1.57687376.3368079-.45928362.8144629-.81140106 1.4329649-1.07166178.6185019-.25260599 1.3257987-.38273635 2.1218903-.38273635.6981111 0 1.3809127.10716618 2.0484049.31384381s1.2278182.48990253 1.6809781.84201997l-.8818246 1.86009865c-.4531598-.33680798-.9308148-.58175925-1.4329649-.75781797-.5021501-.16840399-.9920526-.25260599-1.4697076-.25260599-.5021501 0-.8818245.06889254-1.1390233.21433236-.2571989.15309454-.3857983.35211744-.3857983.61237816 0 .26791544.1530946.4822478.4592836.64299706.3061891.15309454.7715965.32149853 1.3962222.48990253.673616.1990229 1.2216945.39039107 1.6442354.57410452s.7899678.45162889 1.1022807.81905582c.3123128.3597721.4684693.8267105.4684693 1.400815 0 .9185672-.364365 1.6381116-1.093095 2.158633-.7287301.5205214-1.711597.7807822-2.9486009.7807822-1.5921832 0-3.0129005-.3750817-4.262152-1.1405544z"/><path d="m52.3208244 13.1584757h2.8843011v1.2706847h-7.2934239v-1.2706847h2.8843011v-9.93583564l-2.6822163 1.70700411v-1.4467434l3.3435848-2.13566882h.8634532z"/><path d="m59.6509909 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592836.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083392-1.5768737h-.8818246v-1.8907176z"/><path d="m70.7656545 13.1584757v1.2706847h-8.4140759v-1.1405544l4.5744648-5.06742923c.6123782-.68892542 1.0594142-1.30895831 1.3411082-1.86009865.2816939-.55114034.4225409-1.10228069.4225409-1.65342103 0-.71954434-.2082085-1.27068468-.6246257-1.66107575-.4164171-.38273635-1.010424-.57410453-1.7820204-.57410453-1.2492515 0-2.4862554.49755726-3.7110117 1.50032649l-.5695117-1.15586377c.5143977-.48990253 1.1635185-.8802936 1.9473626-1.17117323.783844-.29853435 1.5738118-.44397416 2.3699035-.44397416 1.2002611 0 2.1494473.30618907 2.8475584.92622196.6981111.62003288 1.0471666 1.45439813 1.0471666 2.51075045 0 .74250851-.168404 1.46205285-.5052119 2.15863301-.336808.68892542-.897134 1.46205285-1.6809781 2.31938227l-3.729383 4.04169587z"/><path d="m74.9175784 12.5384428v1.3395772c0 .5128667-.0857329.9874598-.2571988 1.4161245s-.4592837.84202-.8634532 1.2477205l-.6981111-.5358309c.4776549-.5511403.7471013-1.0716618.8083391-1.5768737h-.8818245v-1.8907176z"/><path d="m85.1687888 8.84120966c.4041695.54348561.6062543 1.22475634.6062543 2.04381214 0 1.1405543-.3857982 2.0361573-1.1573947 2.6868091-.7715965.6583065-1.8187631.9874598-3.1414999.9874598-.8450819 0-1.6564829-.1454398-2.4342032-.42101-.7777203-.2832249-1.4360268-.6812707-1.9749196-1.1941374l.5878831-1.1635185c1.2125087 1.010424 2.4740077 1.5079812 3.784497 1.5079812.9308148 0 1.6381116-.2066776 2.1218903-.6200329.4837787-.4210099.7256681-1.0333881.7256681-1.8371344 0-1.60749269-1.0043002-2.41123903-3.0129005-2.41123903h-1.5064503v-1.26302995h1.2125088c.9675574 0 1.708535-.21433235 2.2229327-.64299706.5143976-.42866471.7715965-1.04104287.7715965-1.83713448 0-.71188961-.2112705-1.25537522-.6338114-1.63811157-.422541-.38273635-1.0196097-.5664498-1.7912062-.5664498-1.2492514 0-2.4862553.49755726-3.7110116 1.50032649l-.5695117-1.15586377c.5266452-.49755726 1.1727042-.89560306 1.9381769-1.18648268.7654727-.2832249 1.5646262-.42866471 2.3974605-.42866471 1.175766 0 2.1157665.29853435 2.8200014.90325778.7042349.5970687 1.0563523 1.40846976 1.0563523 2.41889372 0 .75016325-.1837134 1.40846977-.5511403 1.96726484-.3674269.56644979-.8757008.97215032-1.5248216 1.21710159.7715964.21433235 1.3594795.5970687 1.7636491 1.13289959z"/><path d="m90.1841659 12.5384428v1.3395772c0 .5128667-.085733.9874598-.2571988 1.4161245-.1714659.4286647-.4592837.84202-.8634533 1.2477205l-.6981111-.5358309c.477655-.5511403.7471014-1.0716618.8083392-1.5768737h-.8818245v-1.8907176z"/><path d="m101.776484 10.3338814v1.2477205h-1.9841048v2.8475585h-1.5064503v-2.8475585h-6.0258011v-1.1405543l6.3013713-9.09381565h1.2308801v8.98664945zm-7.9547919 0h4.4642368v-6.42997064z"/><path d="m105.450753 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257198 1.4161245-.171466.4286647-.459284.84202-.863454 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m114.847696 6.74381447c.618502.34446271 1.093095.83436524 1.423779 1.45439812.330685.62768761.496027 1.34723195.496027 2.17394251 0 .8190557-.180652 1.5462548-.541955 2.1815971-.361303.6353424-.875701 1.1328996-1.543193 1.4773623-.667492.3521175-1.448274.5281762-2.342346.5281762-.796092 0-1.579936-.1454398-2.351532-.4363194-.771597-.2832249-1.420718-.6812707-1.947363-1.178828l.569512-1.1635185c1.212508 1.010424 2.455636 1.5079812 3.729383 1.5079812.918567 0 1.638111-.2602607 2.158633-.7807821.520521-.5205215.780782-1.2247563.780782-2.1203594 0-.87263887-.257199-1.56921902-.771597-2.10504991-.514397-.52817616-1.200261-.79609161-2.05759-.79609161-1.249252 0-2.247428.50521198-2.994529 1.52329067h-1.047167v-7.6623817h7.844564v1.2477205h-6.338114v4.66938345c.722606-.69658015 1.647297-1.04869759 2.774073-1.04869759.820587 0 1.540131.17605872 2.158633.52817616z"/><path d="m120.717341 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m130.077541 6.74381447c.618502.34446271 1.099219.83436524 1.442151 1.46970758.342931.62768761.514397 1.34723194.514397 2.15863305 0 .8037463-.180651 1.5309453-.541954 2.1662877-.361304.6353423-.860392 1.1328996-1.497265 1.4926717-.636873.3674269-1.35948.5434857-2.167819.5434857-1.579935 0-2.798568-.5511404-3.655897-1.6534211-.85733-1.1022806-1.285994-2.6714997-1.285994-4.70000233 0-1.46970758.199022-2.73273753.597068-3.78908985.398046-1.0486976.973681-1.85244393 1.726907-2.40358427.753225-.55114034 1.656483-.82671051 2.709773-.82671051.759349 0 1.497265.13778508 2.213747.42100998s1.34417.6812707 1.883063 1.19413741l-.569512 1.15586377c-.612378-.51286671-1.200261-.88794833-1.763649-1.13289959s-1.139023-.3674269-1.726906-.3674269c-1.126776 0-2.002477.49755726-2.627103 1.50032649-.624625 1.01042396-.936938 2.41889373-.936938 4.22540929v.27557017c.281694-.69658015.740977-1.24772049 1.377851-1.65342102.636873-.39804581 1.365603-.60472343 2.18619-.60472343.796091 0 1.503388.17605872 2.12189.52817616zm-.303127 5.76400943c.514397-.5281762.771596-1.2400658.771596-2.1203594 0-.87263887-.26026-1.56921902-.780782-2.10504991-.520521-.52817616-1.197199-.79609161-2.030033-.79609161-.85733 0-1.555441.26791545-2.094334.80374634-.538893.54348561-.808339 1.24006577-.808339 2.09739518 0 .8726389.269446 1.5768738.808339 2.1127047.538893.5358308 1.243128.811401 2.112705.811401.832834 0 1.50645-.2679154 2.020848-.8037463z"/><path d="m135.983928 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m138.353832 1.34723195h8.634532v1.12524486l-6.136029 11.95668359h-1.616679l6.099287-11.81124377h-6.981111z"/><path d="m151.250516 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245s-.459284.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747101-1.0716618.808339-1.5768737h-.881825v-1.8907176z"/><path d="m161.915081 8.9101022c.471532.5664498.707297 1.2477205.707297 2.0438121 0 1.1175901-.422541 1.9978837-1.267623 2.6408808-.845081.6429971-1.984105.9644956-3.41707.9644956s-2.571988-.3214985-3.41707-.9644956-1.267623-1.5232907-1.267623-2.6408808c0-.7960916.24189-1.4773623.725669-2.05146683.483778-.58175925 1.148209-.97980505 1.99329-1.1941374-.783844-.23729654-1.383974-.62003289-1.800391-1.14820905-.416418-.53583089-.624626-1.1635185-.624626-1.88306284 0-.70423488.183713-1.30895831.55114-1.82947974.367427-.52052144.884887-.92622197 1.552379-1.21710159.667492-.2832249 1.429903-.42866471 2.287232-.42866471.85733 0 1.619741.14543981 2.287233.42866471.667492.29087962 1.184951.69658015 1.552378 1.21710159.367427.52052143.551141 1.12524486.551141 1.82947974 0 .71954434-.211271 1.34723195-.633812 1.88306284-.422541.52817616-1.013486.91091251-1.772834 1.14820905.857329.2296418 1.521759.62768761 1.99329 1.20179213zm-6.080915-2.42654845c.520522.43631944 1.221695.70423488 2.103519.7960916.881825-.09185672 1.582998-.35977216 2.103519-.7960916.520522-.43631944.780782-1.00276923.780782-1.69934939 0-.71954434-.254137-1.29364886-.76241-1.70700412-.508274-.42100998-1.215571-.62768761-2.121891-.62768761-.906319 0-1.613616.20667763-2.12189.62768761-.508274.41335526-.762411.98745978-.762411 1.70700412 0 .69658016.260261 1.26302995.780782 1.69934939zm4.473423 6.20032885c.55114-.4133553.82671-1.0257334.82671-1.821825 0-.7195444-.290879-1.30130361-.872639-1.72996832-.581759-.43631943-1.356417-.70423488-2.323975-.80374633-.967557.09951145-1.742216.3674269-2.323975.80374633-.581759.42866471-.872639 1.01042392-.872639 1.72996832 0 .7960916.27557 1.4084697.826711 1.821825.55114.4133553 1.341108.6276876 2.369903.6276876 1.028796 0 1.818763-.2143323 2.369904-.6276876z"/><path d="m166.517103 12.5384428v1.3395772c0 .5128667-.085733.9874598-.257199 1.4161245-.171465.4286647-.459283.84202-.863453 1.2477205l-.698111-.5358309c.477655-.5511403.747102-1.0716618.808339-1.5768737h-.881824v-1.8907176z"/><path d="m176.456001 2.85521316c.857329 1.10228069 1.285994 2.67149972 1.285994 4.70000237 0 2.21987082-.443974 3.94218437-1.331923 5.17459547-.887948 1.232411-2.128014 1.8447892-3.720197 1.8447892-.747101 0-1.478893-.1377851-2.195376-.42101-.716482-.2832249-1.350293-.6812707-1.901434-1.1941374l.587883-1.1558638c.624626.5281762 1.218633.9109125 1.782021 1.148209.563388.2372966 1.132899.3597722 1.708535.3597722 1.126776 0 1.999414-.505212 2.617916-1.5079812s.927753-2.411239.927753-4.22540929v-.23729654c-.281694.6812707-.740977 1.22475632-1.377851 1.62280212-.636873.3980458-1.365603.5970687-2.18619.5970687-.796091 0-1.500326-.17605872-2.112704-.52052143-.612378-.35211744-1.090033-.84201997-1.432965-1.46970758-.342932-.63534234-.514398-1.35488667-.514398-2.15863301 0-.81140106.180652-1.53094539.541955-2.17394246.361303-.63534234.860391-1.13289959 1.497265-1.49267176.636873-.35977217 1.359479-.54348561 2.167818-.54348561 1.579936 0 2.798568.55114034 3.655898 1.65342102zm-1.469708 4.63110982c.538893-.54348561.808339-1.24006577.808339-2.09739519 0-.86498415-.269446-1.56921903-.808339-2.11270464-.538893-.53583089-1.243127-.80374634-2.112704-.80374634-.832835 0-1.506451.26026072-2.020848.79609161-.514398.53583089-.771597 1.24006577-.771597 2.12035937 0 .87263888.257199 1.56921903.771597 2.10504992.514397.53583089 1.194137.79609161 2.039219.79609161.857329 0 1.55544-.26791545 2.094333-.80374634z"/></g><g fill="#f2f2f2" fill-rule="nonzero" transform="translate(1307.966463 315.478416)"><path d="m15.7309762 20.418335h-2.3788531l-2.4066219-6.4812177c-.2915715-.8025158-.6979203-1.3403033-1.21719525-1.6133623-.51927495-.2739846-1.2532946-.4100513-2.20205898-.4100513h-4.86785547v8.5046313h-2.21501771v-19.47142187h7.74006606c2.09653785 0 3.70527205.46466314 4.82620245 1.39491504 1.121856.92932627 1.6818584 2.26962951 1.6818584 4.01998408 0 1.2764352-.332299 2.34738191-.9978225 3.21284015-.6655235.8663839-1.6272466 1.4819237-2.8851693 1.8466194.5655561.0907112 1.0487317.332299 1.4495268.7247635.4007951.3915388.7386478.9524668 1.0117068 1.6818584zm-7.73914047-10.3651351c2.98976477 0 4.48464727-1.22089777 4.48464727-3.66454456 0-1.20331091-.3646958-2.10116598-1.0940874-2.6935652-.7284659-.59239922-1.85957813-.88859883-3.39055987-.88859883h-5.33344423v7.24670859z"/><path d="m18.2745903 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536655 1.7503546 1.0024506.3461833 2.1696621.5192749 3.5007091.5192749 1.5680067 0 2.7759458-.3054558 3.6228915-.9154419.8478714-.6109117 1.2718071-1.4726674 1.2718071-2.5843416 0-.6571929-.2045629-1.1903522-.6146142-1.6004035-.410977-.4100513-.9487644-.7340197-1.6142879-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923132-1.0672442-.9663513-.3822826-1.7503546-.93395442-2.3520101-1.65408972-.6016554-.72013531-.9024831-1.66427156-.9024831-2.83055753 0-1.11259978.2915714-2.09190974.8747144-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.166286.41930758 2.1511497 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117394-.78400334-1.8364376-1.35881571-2.7759457-1.72351148-.9385825-.36377015-1.9641737-.54611803-3.0767735-.54611803-1.5133948 0-2.6981933.3230427-3.5553209.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966031.92099566 3.4460973 1.28569143 1.6772303.40079512 2.994393.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693-.5831429.8293589-1.41713 1.4726675-2.501961 1.9280744-1.0848311.4554069-2.3566382.6840359-3.8154213.6840359-3.0443766 0-5.4695109-.8210283-7.2744773-2.4621592z"/><path d="m35.3125473 18.1755486.8478714-1.7225859c.9663512.8201027 1.9502893 1.4041713 2.9536654 1.7503546 1.0024506.3461833 2.1696622.5192749 3.5007092.5192749 1.5680067 0 2.7750201-.3054558 3.6228915-.9154419.8478714-.6109117 1.271807-1.4726674 1.271807-2.5843416 0-.6571929-.2045628-1.1903522-.6155398-1.6004035-.4100513-.4100513-.9478387-.7340197-1.6133622-.9709794-.6655235-.2369596-1.5541223-.4831756-2.6657965-.7377221-1.495808-.3285964-2.725962-.684036-3.6923133-1.0672442-.9663512-.3822826-1.7503545-.93395442-2.35201-1.65408972-.6016555-.72013531-.9024832-1.66427156-.9024832-2.83055753 0-1.11259978.2915715-2.09190974.8747145-2.93978113.5840686-.84787138 1.4087994-1.50876676 2.475118-1.98268614 1.0672442-.474845 2.3112826-.71180469 3.7330407-.71180469 1.3495595 0 2.6074822.2101166 3.7746938.62942417 1.1662859.41930758 2.1511496 1.03021927 2.9536655 1.83180947l-.8756401 1.72351148c-.9117395-.78400334-1.8364376-1.35881571-2.7759458-1.72351148-.9385825-.36377015-1.9641736-.54611803-3.0767734-.54611803-1.5133949 0-2.6981933.3230427-3.555321.97005372-.856202.64793665-1.2847658 1.53653548-1.2847658 2.66672212 0 .9848637.373952 1.72258585 1.1209304 2.21501771.747904.49243185 1.8966032.92099566 3.4460974 1.28569143 1.6772303.40079512 2.9943929.77011902 3.9514879 1.10797162.957095.3369271 1.7549827.8469458 2.3927375 1.5309818.6386804.684036.9580206 1.5911473.9580206 2.7213339 0 1.0940873-.2924971 2.0558104-.8756401 2.8851693s-1.41713 1.4726675-2.5019611 1.9280744-2.3566381.6840359-3.8154212.6840359c-3.0443766 0-5.469511-.8210283-7.2744773-2.4621592z"/></g><g transform="translate(1132.952069 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.6732656 32.2046798v3.383959h-22.46109685v-3.0406798l12.21155275-13.5355472c1.6346218-1.8308227 2.8280084-3.4819151 3.5798709-4.953277.7521514-1.4710729 1.1280827-2.9424349 1.1280827-4.4137968 0-1.92877865-.5559506-3.40823133-1.6675628-4.43806909-1.1116122-1.03012673-2.6971116-1.54504561-4.7570761-1.54504561-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048438-3.08980225c1.37340598-1.30781306 3.10598377-2.35383234 5.19860024-3.13863575 2.09232752-.78480342 4.2011255-1.17691617 6.32639393-1.17691617 3.2039397 0 5.7377914.82554616 7.6015551 2.47663847 1.8634746 1.65109231 2.7953564 3.88240747 2.7953564 6.69394548 0 1.99437155-.4496149 3.91534845-1.3488447 5.76264155-.8989409 1.8470042-2.394864 3.9150595-4.4871916 6.2035878l-9.95538731 10.7893133z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1144.791113 397.615433)"/><g transform="translate(1191.307406 387.954528)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m21.6572224 20.6796856c1.0789602 1.4387099 1.6184403 3.2533511 1.6184403 5.4436346 0 3.0406798-1.0298378 5.4355438-3.0895133 7.184881-2.0599645 1.7490483-4.855321 2.6237169-8.3860695 2.6237169-2.25616532 0-4.42217651-.3762202-6.49803356-1.1280827-2.076146-.7518625-3.83357397-1.8146412-5.27199496-3.1877582l1.56931788-3.0895133c3.2365917 2.6809301 6.60408028 4.0213951 10.10246574 4.0213951 2.4847292 0 4.3730541-.5559506 5.6643967-1.6675628s1.9371583-2.746234 1.9371583-4.9041544c0-4.2829-2.68093-6.4243499-8.0427902-6.4243499h-4.02168406v-3.3839591h3.23688066c2.5829741 0 4.5608752-.5721321 5.9339922-1.7163963 1.3731171-1.1442642 2.0599645-2.779175 2.0599645-4.90415445 0-1.89641562-.5640413-3.35130707-1.692124-4.36467437-1.1277937-1.01365625-2.7216728-1.52048438-4.7816373-1.52048438-3.33483658 0-6.63673225 1.34046504-9.90626489 4.02168407l-1.52048437-3.08980225c1.40605796-1.34046504 3.13054499-2.39486403 5.17403901-3.16319698 2.04349402-.76833294 4.17685323-1.15235494 6.40007765-1.15235494 3.1386357 0 5.6479262.80098493 7.5278713 2.40295479 1.8799452 1.60196986 2.8199177 3.75989029 2.8199177 6.47347235 0 1.99437156-.4906466 3.74341986-1.4713619 5.24743376s-2.3376508 2.5829741-4.0705175 3.2368806c2.0596755.5883136 3.6292823 1.6019699 4.7079536 3.0403909z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1203.470522 396.880376)"/><g transform="translate(1249.976943 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m25.5263379 24.074336v3.3348366h-5.2965562v7.601555h-4.0213951v-7.601555h-16.08558047v-3.0406798l16.82126147-24.27573805h3.2857141v23.98158125zm-21.23505825 0h11.91710695v-17.16454069z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1260.680298 397.799392)"/><g transform="translate(1072.3219 388.127483)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.0150941-52.05176699v49.51333329h42.4764253v-49.51333329z" fill="#000"/></g><path d="m12.0107286 31.6267686h7.6995109v3.383959h-19.46953948v-3.383959h7.69951097v-26.53161447l-7.16003086 4.56087523v-3.87431672l8.92554959-5.68895789h2.30499888z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1086.781678 397.799392)"/><g transform="translate(1310.293872 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m18.2209624 14.4865002c1.6510923.9318818 2.9181626 2.2316041 3.8009219 3.8988779.8827594 1.6675628 1.3239946 3.5963414 1.3239946 5.7869138 0 2.1905725-.4822669 4.1358216-1.4468007 5.8360363-.9642448 1.7002148-2.3376508 3.0161186-4.119351 3.9480004-1.7819892.9315929-3.866226 1.3976783-6.2529993 1.3976783-2.12497947 0-4.21730699-.384311-6.27727148-1.1526439-2.05967553-.768333-3.79254227-1.822732-5.19831128-3.163197l1.52019542-3.0895133c3.23688066 2.6809301 6.55524679 4.0213951 9.95538734 4.0213951 2.4523662 0 4.3730541-.6946492 5.7626416-2.0842367 1.3892985-1.3895875 2.0842368-3.2776234 2.0842368-5.6643967 0-2.3211804-.6865586-4.1930347-2.0596756-5.6152742-1.373406-1.4222395-3.2042286-2.1333592-5.492757-2.1333592-3.33483662 0-5.99958518 1.3569355-7.99395675 4.0705175h-2.79535649v-20.45054375h20.94090144v3.3348366h-16.91950633v12.45687605c1.9290676-1.8637637 4.39761531-2.7956455 7.40535413-2.7956455 2.1905725 0 4.1112603.4660854 5.7623527 1.3976783z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1322.999783 398.270213)"/><g transform="translate(1374.317793 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m19.2788288 15.0644114c1.6510923.9318818 2.9343442 2.2396948 3.8497555 3.9234391.9154114 1.6837443 1.373117 3.6047212 1.373117 5.7623526 0 2.1579205-.4822669 4.0869881-1.4468007 5.7869139-.9642448 1.7002148-2.2966191 3.032589-3.9968339 3.9971228-1.6999258.9642449-3.6289934 1.4465118-5.7869138 1.4465118-4.21759597 0-7.47065814-1.471073-9.75918651-4.4137968-2.28881733-2.9424349-3.43308151-7.1273789-3.43308151-12.554543 0-3.9234392.53138935-7.2909278 1.5938791-10.10246581 1.06248975-2.81182696 2.59915564-4.95327693 4.60999768-6.42463886 2.01055308-1.47136192 4.42188754-2.20675393 7.23371454-2.20675393 2.0270235 0 3.9968339.37593124 5.909431 1.12779372 1.9125972.75215143 3.5882507 1.81464118 5.0266717 3.1877582l-1.5201954 3.08980225c-1.6346219-1.37340597-3.2039398-2.38677327-4.7079537-3.0406798s-3.0406798-.98100427-4.6099976-.98100427c-3.0077389 0-5.34538973 1.34046504-7.01295251 4.02168407-1.66727383 2.68093003-2.5011997 6.44053143-2.5011997 11.27938193v.735681c.75215144-1.8634747 1.97819006-3.3348366 3.67811586-4.4137969 1.70021477-1.0789602 3.64546385-1.6184403 5.83603635-1.6184403 2.1252684 0 4.0133043.4660854 5.6643966 1.3976783zm-.8090757 15.3993109c1.3731171-1.4222395 2.0596756-3.3102754 2.0596756-5.6643967 0-2.3211804-.6949383-4.1930347-2.0842368-5.6152742-1.3895875-1.4222395-3.195849-2.1333592-5.4190734-2.1333592-2.2888173 0-4.15229196.7192105-5.5910019 2.1579204-1.43842099 1.438421-2.15763148 3.3021846-2.15763148 5.590713 0 2.3211803.71921049 4.2011255 2.15763148 5.6398354 1.43870994 1.438421 3.3186551 2.1579205 5.6398354 2.1579205 2.2232244 0 4.0213952-.7111198 5.3948011-2.1333592z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1384.69083 397.697106)"/><g transform="translate(1436.988825 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01528916-52.05176699v49.51333329h42.47662036v-49.51333329z" fill="#000"/></g><path d="m.04045378.09275475h23.04969942v2.99155735l-16.38002621 31.9264155h-4.31555192l16.28178133-31.5340138h-18.63590262z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1447.938813 398.275017)"/><g transform="translate(1499.78573 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m23.338655 20.8516142c1.2586906 1.5201954 1.8880359 3.3429273 1.8880359 5.4679068 0 2.9753759-1.1277937 5.3211174-3.3836701 7.0375137-2.2561653 1.7166852-5.2965562 2.5748834-9.1217504 2.5748834-3.82548323 0-6.86587408-.8581982-9.12175046-2.5748834-2.25616535-1.7163963-3.38395906-4.0621378-3.38395906-7.0375137 0-2.1249795.64552681-3.9558022 1.93715836-5.4924681 1.29134258-1.5366659 3.06495207-2.5994446 5.32082845-3.1877582-2.09232751-.6212545-3.69429737-1.6430015-4.80590957-3.065241s-1.66756278-3.0976041-1.66756278-5.02667165c0-1.86347468.49064661-3.49029472 1.47136193-4.87959325.98071531-1.38958749 2.36221204-2.46854771 4.14391229-3.23688066 1.78198919-.76833294 3.81710354-1.15235494 6.10592084-1.15235494 2.2885284 0 4.3236427.384022 6.1056319 1.15235494 1.7817002.76833295 3.1631969 1.84729317 4.1439122 3.23688066.9810043 1.38929853 1.471362 3.01611857 1.471362 4.87959325 0 1.92906755-.5640414 3.60443215-1.692124 5.02667165-1.1277937 1.4222395-2.7052024 2.4439865-4.7325149 3.065241 2.2888173.6212546 4.0624268 1.6918351 5.3211174 3.2123195zm-16.23265883-6.4737613c1.38929853 1.1607346 3.26115293 1.8718543 5.61527423 2.1333592 2.3538323-.2615049 4.2256867-.9726246 5.6152742-2.1333592 1.3892985-1.1604457 2.0842368-2.6725504 2.0842368-4.53631405 0-1.92877864-.6784678-3.44926302-2.0354033-4.56087522-1.3566466-1.1116122-3.2449714-1.66727383-5.6641077-1.66727383-2.4194253 0-4.30775013.55566163-5.66439668 1.66727383-1.35693551 1.1116122-2.03540327 2.63209658-2.03540327 4.56087522 0 1.86376365.69493823 3.37586835 2.08452572 4.53631405zm11.94166813 16.5516658c1.471073-1.1116122 2.206754-2.7300525 2.206754-4.855032 0-1.9290676-.7764237-3.4738243-2.3295601-4.6345589-1.5528474-1.1607347-3.6209026-1.8718544-6.2035878-2.1333592-2.5829741.2615048-4.65102939.9726245-6.20387679 2.1333592-1.55313637 1.1607346-2.32956007 2.7054913-2.32956007 4.6345589 0 2.1249795.73568096 3.7434198 2.20704289 4.855032 1.47107297 1.1116122 3.57987096 1.6675628 6.32639397 1.6675628 2.746234 0 4.855032-.5559506 6.3263939-1.6675628z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1509.579895 397.697106)"/><g transform="translate(1565.056846 388.430153)"><path d="m.039304.099422h47.553665v54.590201h-47.553665z" fill="#00a88a"/><path d="m47.5929694 54.6896229h-47.55366538v-54.59020073h47.55366538zm-45.01519163-52.05176699v49.51333329h42.47652283v-49.51333329z" fill="#000"/></g><path d="m21.1125411 4.69235002c2.2885283 2.9424349 3.4330815 7.12737888 3.4330815 12.55454298 0 5.9178108-1.1852959 10.5194287-3.5555987 13.8051429-2.3703028 3.2860031-5.6805782 4.9287157-9.9311151 4.9287157-1.99437156 0-3.94771143-.3759313-5.86030856-1.1277937-1.91259713-.7521515-3.60472114-1.8146412-5.07579411-3.1877582l1.56931788-3.0895133c1.66727382 1.405769 3.25306216 2.427516 4.75707607 3.064952 1.50372496.6374361 3.02420934.9564431 4.56087522.9564431 3.0077389 0 5.3372989-1.3404651 6.9883912-4.0213951 1.6510924-2.6812191 2.4766385-6.4408204 2.4766385-11.2796709v-.637725c-.7521514 1.8311116-1.97819 3.2776234-3.6781158 4.3404021-1.7002148 1.0624897-3.6454639 1.5938791-5.8360363 1.5938791-2.1252685 0-4.00521365-.4660854-5.63983549-1.3976783-1.63462184-.9318818-2.90978291-2.2396949-3.82519426-3.9234391-.91541134-1.6837443-1.37311702-3.6047212-1.37311702-5.7623527 0-2.1579204.4822669-4.086988 1.44651175-5.78691381.9645338-1.70021476 2.29690808-3.03258905 3.99712284-3.99712285 1.69992581-.96424484 3.62899341-1.44651174 5.78691388-1.44651174 4.2175959 0 7.4706581 1.47107297 9.7591865 4.41379682zm-3.9234392 12.35834218c1.4387099-1.438421 2.1579204-3.3021847 2.1579204-5.590713 0-2.32118037-.7192105-4.20112552-2.1579204-5.63983546-1.438421-1.43842099-3.3183661-2.15792044-5.6395465-2.15792044-2.22322439 0-4.02168405.71111974-5.39480107 2.13335921-1.37311703 1.42223948-2.05967554 3.31027538-2.05967554 5.66439669 0 2.3211803.68655851 4.1930347 2.05967554 5.6152742 1.37311702 1.4222395 3.1877582 2.1333592 5.44363457 2.1333592 2.2888173 0 4.152292-.7192105 5.590713-2.1579204z" fill="#f2f2f2" fill-rule="nonzero" transform="translate(1575.139966 397.697106)"/><g stroke="#000"><path d="m1096.073546 379.827207v8.703347" stroke-width="2.540471"/><path d="m1334.698583 379.827107h-238.625356" stroke-width="2.536666"/><path d="m1157.047962 379.827207v8.703347" stroke-width="2.540471"/><path d="m1214.724654 379.827207v8.703347" stroke-width="2.540471"/><path d="m1273.792589 379.827207v8.703347" stroke-width="2.540471"/><path d="m.25679382.11881745v8.70067791h253.66824618v8.70607874" stroke-width="2.537062" transform="translate(1333.854479 371.007868)"/><path d="m1522.192353 379.827363v8.706079" stroke-width="2.538373"/><path d="m1460.272258 379.827363v8.706079" stroke-width="2.538373"/><path d="m1398.172318 379.827363v8.706079" stroke-width="2.538373"/><path d="m461.035492 332.200017v30.871702" stroke-width="2.538347"/><path d="m555.359389 347.854087v15.218407" stroke-width="2.537588"/><path d="m695.541211 347.854373v14.187222" stroke-width="2.538524"/><path d="m790.885848 362.040642v-30.871702" stroke-width="2.538347"/><path d="m887.942518 362.041595v-14.187222" stroke-width="2.538524"/><path d="m.019213 15.299472.406607-15.172668" stroke-width="2.539569" transform="matrix(-1 0 0 1 367.859321 347.727644)"/></g><g transform="translate(728.528993 23.597628)"><path d="m.027562.06972h33.346975v38.281514h-33.346975z" fill="#00a88a"/><path d="m33.3745364 38.3512337h-33.34697449v-38.28151366h33.34697449zm-30.80847438-35.74309116v33.20466866h28.26976908v-33.20466866z" fill="#000"/></g><g fill="#000" transform="translate(771.880716 31.029736)"><path d="m12.5751769 7.68008917v1.60645421h-12.54602874v-1.60645421zm0 5.15096053v1.6066044h-12.54602874v-1.6066044z"/><path d="m26.1286201 17.4720676c-1.3345049-.7649138-2.3587471-1.8486543-3.0727268-3.2512217-.7141299-1.4025673-1.0711197-3.0473348-1.0711197-4.93430252 0-1.86998963.3569898-3.50634324 1.0711197-4.90876034.7139797-1.40256734 1.7382219-2.48210096 3.0727268-3.23860086 1.3345049-.75649991 2.8942319-1.13467473 4.6793313-1.13467473 1.2239222 0 2.3757252.19126601 3.4552588.57364779 1.0795337.38253202 1.9762152.91380981 2.6901948 1.59383335l-1.0709695 2.39706047c-.8159982-.6630455-1.6277894-1.14338913-2.4352235-1.44088065-.8075843-.29749152-1.6703097-.44623728-2.5883264-.44623728-1.7509931 0-3.1068332.56959109-4.06722 1.70862301-.960537 1.13888168-1.4408806 2.77102834-1.4408806 4.89598924 0 2.14193892.4761367 3.78670642 1.4281095 4.93430252.9519729 1.1474458 2.31202 1.7212439 4.0799911 1.7212439.9180167 0 1.7807421-.1487458 2.5883264-.4462373.8074341-.2974915 1.6192253-.7778352 2.4352235-1.4407304l1.0709695 2.3969102c-.7139796.6800236-1.6106611 1.2113013-2.6901948 1.5938334-1.0795336.382532-2.2313366.573798-3.4552588.573798-1.7850994 0-3.3448264-.382532-4.6793313-1.1475961z"/><path d="m41.938792 17.7781233c-.9944932-.5440489-1.7595572-1.3217338-2.295042-2.333205-.5354847-1.0116214-.8032271-2.1973805-.8032271-3.5574276 0-1.3598968.2677424-2.54565597.8032271-3.55727739.5354848-1.01147117 1.3005488-1.78915607 2.295042-2.33320496.9944931-.54404888 2.1462961-.8159982 3.4552588-.8159982 1.2919846 0 2.4310166.27194932 3.4169455.8159982.9860792.54404889 1.7467861 1.32173379 2.2822708 2.33320496.535635 1.01162142.8033774 2.19738059.8033774 3.55727739 0 1.3600471-.2677424 2.5458062-.8033774 3.5574276-.5354847 1.0114712-1.2961916 1.7891561-2.2822708 2.333205-.9859289.5440489-2.1249609.8159982-3.4169455.8159982-1.3089627 0-2.4607657-.2719493-3.4552588-.8159982zm5.9160245-2.7412792c.5694408-.7055657.8543115-1.7552.8543115-3.1493534 0-1.3768749-.2890776-2.42665936-.8670826-3.14920316s-1.3940032-1.08374057-2.4479946-1.08374057c-1.0709695 0-1.8955318.36119677-2.4735368 1.08374057s-.8670826 1.77232826-.8670826 3.14920316c0 1.3941534.2848706 2.4437877.8543115 3.1493534.5695911.7055658 1.3897962 1.0581984 2.4607657 1.0581984 1.0880978 0 1.9167168-.3526326 2.4863079-1.0581984z"/><path d="m66.6356966 10.4850736v7.9050108h-3.1875165v-7.7520581c0-1.0200353-.1954729-1.7637641-.5864189-2.23118638-.3910962-.46757253-.9946433-.7013588-1.8106415-.7013588-.968951 0-1.7509931.31026262-2.3459761.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2038868-3.64652485h2.9834793l.2295793 2.116547c.4418801-.78204211 1.0412203-1.38543905 1.7977202-1.81049133s1.6108115-.63750329 2.5627843-.63750329c3.0769338 0 4.6154758 1.76797107 4.6154758 5.30406345z"/><path d="m74.0818492 7.90951823v5.76307187c0 1.5129998.7054155 2.2694997 2.1163968 2.2694997.3910962 0 .8161484-.0680625 1.2751568-.2040371v2.5246212c-.5610269.2038869-1.2410505.3059054-2.0400706.3059054-1.4620657 0-2.5841195-.407924-3.3660114-1.2239222-.7820421-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.4735368v-2.39706046h2.4735368v-3.13643206l3.1875164-1.07111972v4.20755178h3.4169456v2.39706046z"/><path d="m90.9629905 12.11707h-8.8741119c.0680624 1.3770252.4122812 2.3927033 1.0328064 3.0473349.6205252.6544813 1.542749.981722 2.7666711.981722 1.4111315 0 2.7200942-.4590084 3.9270384-1.3770251l.9180167 2.1930233c-.6119611.4929645-1.364254.8882676-2.2567286 1.1857591-.8924745.2974915-1.7977202.4462373-2.715737.4462373-2.1081331 0-3.7655214-.594983-4.9726158-1.7849491-1.2069441-1.1901163-1.8104913-2.8221128-1.8104913-4.8961395 0-1.3089627.2635354-2.47353681.790456-3.49357213.5270708-1.01988507 1.2665927-1.81469827 2.2185655-2.38413911.9519729-.56959109 2.0315065-.85431151 3.2386009-.85431151 1.7679711 0 3.1661812.57379804 4.1947807 1.72124387 1.0284492 1.14759607 1.5427489 2.72430113 1.5427489 4.73026538zm-7.7392869-3.88872499c-.535635.50137838-.8798538 1.22812913-1.0328065 2.18025229h5.9925009c-.1020185-.96910121-.3951528-1.70005891-.8797034-2.1930234-.4845506-.49311473-1.151803-.73952185-2.0017574-.73952185-.8501045 0-1.5427489.25076432-2.0782336.75229296z"/><path d="m105.651108 10.4850736v7.9050108h-3.187516v-7.7520581c0-1.0200353-.195473-1.7637641-.586569-2.23118638-.390946-.46757253-.994493-.7013588-1.810491-.7013588-.9689514 0-1.7509935.31026262-2.3459765.93078786-.594983.62052525-.8924746 1.44073042-.8924746 2.46076572v7.2930497h-3.1621245v-9.23110178c0-1.35989684-.0679122-2.57540513-.2040371-3.64652485h2.9836296l.2294291 2.116547c.4420303-.78204211 1.0412203-1.38543905 1.7977202-1.81049133.7566501-.42505228 1.6108118-.63750329 2.5627838-.63750329 3.077084 0 4.615626 1.76797107 4.615626 5.30406345z"/><path d="m113.097111 7.90951823v5.76307187c0 1.5129998.705566 2.2694997 2.116547 2.2694997.391096 0 .815998-.0680625 1.275006-.2040371v2.5246212c-.561026.2038869-1.24105.3059054-2.03992.3059054-1.462066 0-2.584119-.407924-3.366162-1.2239222-.781891-.8159982-1.172988-1.9891365-1.172988-3.5191143v-5.91602457h-2.473536v-2.39706046h2.473536v-3.13643206l3.187517-1.07111972v4.20755178h3.417096v2.39706046z"/><path d="m125.923803.23393651h7.879619c1.95488 0 3.476444.47177949 4.564542 1.41533845 1.087947.94340871 1.631996 2.2311864 1.631996 3.86318281s-.548256 2.9241313-1.644767 3.87610416c-1.096512.95197287-2.613869 1.42795927-4.551771 1.42795927h-4.590084v7.5735632h-3.289535zm7.497087 8.03257155c1.139032 0 2.001758-.23378627 2.588176-.70120855.58657-.46757253.879854-1.14323888.879854-2.02729954 0-.90103871-.289078-1.5852692-.867083-2.05269149-.578004-.46757253-1.444937-.70135879-2.600947-.70135879h-4.207552v5.48255837z"/><path d="m154.509583 5.51245777v12.87762663h-3.136582v-2.0654626c-.390946.7139797-.951973 1.2707996-1.683081 1.6703097-.730958.3995101-1.563934.59919-2.498929.59919-1.122054 0-2.116547-.2719493-2.983479-.8159982-.867083-.5440489-1.538542-1.3175268-2.014528-2.3205841-.476137-1.002907-.71413-2.1674811-.71413-3.4934219 0-1.326091.24235-2.50328596.72675-3.53188543.484551-1.02844922 1.160368-1.82746937 2.0273-2.39691021.867083-.56959109 1.853012-.85431151 2.958087-.85431151.934995 0 1.767971.19967991 2.498929.59918999.731108.39951008 1.292135.95633006 1.683081 1.67030971v-1.93805208zm-4.003514 9.48607303c.578005-.7309577.866932-1.7594069.866932-3.0854979 0-1.3600471-.288927-2.40547436-.866932-3.13643206-.578005-.73110795-1.402568-1.09651167-2.473537-1.09651167-1.053992 0-1.874347.37817482-2.460766 1.13467473-.586569.7564999-.879854 1.8062844-.879854 3.1493534 0 1.3259408.293285 2.3459761.879854 3.0599557.586419.7139797 1.415188 1.0709695 2.486158 1.0709695 1.053991 0 1.87014-.3654037 2.448145-1.0965117z"/><path d="m170.421623 5.51245777v12.46970263c0 2.0059643-.552462 3.5275283-1.657388 4.5645416-1.105076 1.0370134-2.728658 1.5555201-4.870597 1.5555201-1.988987 0-3.73998-.4164881-5.25313-1.2496147l.510093-2.4224524c1.563934.8159982 3.119454 1.2239222 4.66656 1.2239222 2.295042 0 3.442488-1.1388817 3.442488-3.4169455v-2.5500132c-.390946.6970016-.960537 1.2622355-1.708473 1.6957017-.748086.4336164-1.589626.6502744-2.524621.6502744-1.121904 0-2.120754-.2677424-2.99625-.8032271-.875497-.5354848-1.55552-1.2919847-2.039921-2.2694997-.48455-.9775151-.72675-2.095362-.72675-3.3532403 0-1.2580286.2422-2.37587548.72675-3.35339054.484401-.97751507 1.164424-1.73401497 2.039921-2.26949971.875496-.53548473 1.874346-.8032271 2.99625-.8032271.952123 0 1.797871.19967991 2.537392.59918999.739522.39951008 1.304756.95633006 1.695702 1.67030971v-1.93805208zm-4.06722 8.97613053c.603548-.6970016.905246-1.6575386.905246-2.8814608 0-1.2240724-.297491-2.18460946-.892474-2.88161106s-1.42811-1.04542727-2.499079-1.04542727c-1.053992 0-1.882761.34842567-2.486308 1.04542727-.603397.6970016-.905246 1.65753866-.905246 2.88161106 0 1.2239222.301849 2.1844592.905246 2.8814608.603547.6970016 1.432316 1.0455775 2.486308 1.0455775 1.053991 0 1.88276-.3485759 2.486307-1.0455775z"/><path d="m185.135284 12.11707h-8.874112c.068062 1.3770252.412281 2.3927033 1.032806 3.0473349.620525.6544813 1.542749.981722 2.766821.981722 1.410982 0 2.719944-.4590084 3.927039-1.3770251l.918016 2.1930233c-.612111.4929645-1.364254.8882676-2.256878 1.1857591-.892475.2974915-1.797721.4462373-2.715737.4462373-2.107983 0-3.765522-.594983-4.972466-1.7849491-1.207094-1.1901163-1.810491-2.8221128-1.810491-4.8961395 0-1.3089627.263385-2.47353681.790456-3.49357213.52692-1.01988507 1.266442-1.81469827 2.218565-2.38413911.951973-.56959109 2.031507-.85431151 3.238451-.85431151 1.767971 0 3.166331.57379804 4.194781 1.72124387 1.028599 1.14759607 1.542749 2.72430113 1.542749 4.73026538zm-7.739287-3.88872499c-.535485.50137838-.879704 1.22812913-1.032807 2.18025229h5.992651c-.102018-.96910121-.395303-1.70005891-.879853-2.1930234-.484401-.49311473-1.151653-.73952185-2.001758-.73952185-.849954 0-1.542749.25076432-2.078233.75229296z"/></g><path d="m367.838539 347.854154h94.040308" stroke="#000" stroke-width="2.538462"/><path d="m461.878846 347.854154h93.484616" stroke="#000" stroke-width="2.538462"/><path d="m.33230769 1.70030769 96.35538461-1.24846154 96.0461537 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(695.209615 346.153846)"/><path d="m.05446154.45184615h95.96584616l96.7416923 1.24846154" stroke="#000" stroke-width="2.538462" transform="translate(36.132692 346.153846)"/></g></svg>
--- /dev/null
- You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See [details](/templates/pagination/#list-paginator-pages).
+---
+title: Frequently asked questions
+linkTitle: FAQs
+description: These questions are frequently asked by new users.
+categories: [troubleshooting]
+keywords: [faq]
+menu:
+ docs:
+ parent: troubleshooting
+ weight: 70
+weight: 70
+# Use level 6 headings for each question.
+---
+
+Hugo’s [forum] is an active community of users and developers who answer questions, share knowledge, and provide examples. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
+
+These are just a few of the questions most frequently asked by new users.
+
+###### An error message indicates that a feature is not available. Why?
+
+Hugo is available in two editions: standard and extended. With the extended edition you can (a) encode to the WebP format when processing images, and (b) transpile Sass to CSS using the embedded LibSass transpiler. The extended edition is not required to use the Dart Sass transpiler.
+
+When you attempt to perform either of the operations above with the standard edition, Hugo throws this error:
+
+```go-html-template
+Error: this feature is not available in your current Hugo version
+```
+
+To resolve, uninstall the standard edition, then install the extended edition. See the [installation] section for details.
+
+###### Why do I see "Page Not Found" when visiting the home page?
+
+In the content/_index.md file:
+
+ - Is `draft` set to `true`?
+ - Is the `date` in the future?
+ - Is the `publishDate` in the future?
+ - Is the `expiryDate` in the past?
+
+If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
+
+###### Why is a given page not published?
+
+In the content/section/page.md file, or in the content/section/page/index.md file:
+
+ - Is `draft` set to `true`?
+ - Is the `date` in the future?
+ - Is the `publishDate` in the future?
+ - Is the `expiryDate` in the past?
+
+If the answer to any of these questions is yes, either change the field values, or use one of these command line flags: `--buildDrafts`, `--buildFuture`, or `--buildExpired`.
+
+###### Why can't I see any of a page's descendants?
+
+You may have an index.md file instead of an _index.md file. See [details](/content-management/page-bundles/).
+
+###### What is the difference between an index.md file and an _index.md file?
+
+A directory with an index.md file is a [leaf bundle]. A directory with an _index.md file is a [branch bundle]. See [details](/content-management/page-bundles/).
+
+[branch bundle]: /getting-started/glossary/#branch-bundle
+[leaf bundle]: /getting-started/glossary/#leaf-bundle
+
+###### Why is my partial template not rendered as expected? {#foo}
+
+You may have neglected to pass the required [context] when calling the partial. For example:
+
+```go-html-template
+{{/* incorrect */}}
+{{ partial "_internal/pagination.html" }}
+
+{{/* correct */}}
+{{ partial "_internal/pagination.html" . }}
+```
+
+###### In a template, what's the difference between `:=` and `=` when assigning values to variables?
+
+Use `:=` to initialize a variable, and use `=` to assign a value to a variable that has been previously initialized. See [details](https://pkg.go.dev/text/template#hdr-Variables).
+
+###### When I paginate a list page, why is the page collection not filtered as specified?
+
++You are probably invoking the [`Paginate`] or [`Paginator`] method more than once on the same page. See [details](/templates/pagination/).
+
+###### Why are there two ways to call a shortcode?
+
+Use the `{{%/* shortcode */%}}` notation if the shortcode template, or the content between the opening and closing shortcode tags, contains Markdown. Otherwise use the\
+`{{</* shortcode */>}}` notation. See [details](/content-management/shortcodes/).
+
+###### Can I use environment variables to control configuration?
+
+Yes. See [details](/getting-started/configuration/#configure-with-environment-variables).
+
+###### Why am I seeing inconsistent output from one build to the next?
+
+The most common causes are page collisions (publishing two pages to the same path) and the effects of concurrency. Use the `--printPathWarnings` command line flag to check for page collisions, and create a topic on the [forum] if you suspect concurrency problems.
+
+###### Why isn't Hugo's development server detecting file changes?
+
+In its default configuration, Hugo's file watcher may not be able detect file changes when:
+
+- Running Hugo within Windows Subsystem for Linux (WSL/WSL2) with project files on a Windows partition
+- Running Hugo locally with project files on a removable drive
+- Running Hugo locally with project files on a storage server accessed via the NFS, SMB, or CIFS protocols
+
+In these cases, instead of monitoring native file system events, use the `--poll` command line flag. For example, to poll the project files every 700 milliseconds, use `--poll 700ms`.
+
+###### Why is my page Scratch or Store missing a value?
+
+The [`Scratch`] and [`Store`] methods on a `Page` object allow you to create a [scratch pad] on the given page to store and manipulate data. Values are often set within a shortcode, a partial template called by a shortcode, or by a Markdown render hook. In all three cases, the scratch pad values are not determinate until Hugo renders the page content.
+
+[scratch pad]: /getting-started/glossary/#scratch-pad
+
+If you need to access a scratch pad value from a parent template, and the parent template has not yet rendered the page content, you can trigger content rendering by assigning the returned value to a [noop] variable:
+
+[noop]: /getting-started/glossary/#noop
+
+```go-html-template
+{{ $noop := .Content }}
+{{ .Store.Get "mykey" }}
+```
+
+You can trigger content rendering with other methods as well. See next FAQ.
+
+[`Scratch`]: /methods/page/scratch
+[`Store`]: /methods/page/store
+
+###### Which page methods trigger content rendering?
+
+The following methods on a `Page` object trigger content rendering: `Content`, `FuzzyWordCount`, `Len`, `Plain`, `PlainWords`, `ReadingTime`, `Summary`, `Truncated`, and `WordCount`.
+
+{{% note %}}
+For other questions please visit the [forum]. A quick search of over 20,000 topics will often answer your question. Please be sure to read about [requesting help] before asking your first question.
+
+[forum]: https://discourse.gohugo.io
+[requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
+{{% /note %}}
+
+[`Paginate`]: /methods/page/paginate/
+[`Paginator`]: /methods/page/paginator/
+[context]: /getting-started/glossary/#context
+[forum]: https://discourse.gohugo.io
+[installation]: /installation/
+[requesting help]: https://discourse.gohugo.io/t/requesting-help/9132
--- /dev/null
- require github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52 // indirect
+module github.com/gohugoio/hugoDocs
+
+go 1.16
+
++require github.com/gohugoio/gohugoioTheme v0.0.0-20240728210410-d42c342ce472 // indirect
--- /dev/null
+github.com/gohugoio/gohugoioTheme v0.0.0-20240426212330-f38e99e0d88d h1:EaFz80Aqh3Ej20VmUSNe3K+F0NbT8UueXLP/VqkK9Dw=
+github.com/gohugoio/gohugoioTheme v0.0.0-20240426212330-f38e99e0d88d/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
+github.com/gohugoio/gohugoioTheme v0.0.0-20240508091825-b23e8e2d2419 h1:cQ/44eDHK0tVImTtSx/9sWWZv+RynH/oB4R7ASbQNAE=
+github.com/gohugoio/gohugoioTheme v0.0.0-20240508091825-b23e8e2d2419/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
+github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52 h1:dPJxUU4SevIZ7OS1DIVOrJ7p8I/QM00pXGRfAtKgQmU=
+github.com/gohugoio/gohugoioTheme v0.0.0-20240619093131-b595d5fb8c52/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240622143740-53a4bdb8c0fb h1:gOIE1eFXILxCio/QOm3oLYcYmsis2CD099dXbXpjprA=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240622143740-53a4bdb8c0fb/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240623150114-cc7096eab3fd h1:I8X7c0oBRWXy83BL2ODSk7v0xPXDnp2hcFWpCcN+Kyc=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240623150114-cc7096eab3fd/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240728210410-d42c342ce472 h1:AYZUibKKFRBp2VCQpDHW+JmQKvCvyhX7z7/SOLUSCcw=
++github.com/gohugoio/gohugoioTheme v0.0.0-20240728210410-d42c342ce472/go.mod h1:GOYeAPQJ/ok8z7oz1cjfcSlsFpXrmx6VkzQ5RpnyhZM=
--- /dev/null
- HUGO_VERSION = "0.127.0"
+[build]
+ publish = "public"
+ command = "hugo --gc --minify"
+
+ [build.environment]
++ HUGO_VERSION = "0.131.0"
+
+[context.production.environment]
+ HUGO_ENV = "production"
+ HUGO_ENABLEGITINFO = "true"
+
+[context.split1]
+ command = "hugo --gc --minify --enableGitInfo"
+
+ [context.split1.environment]
+ HUGO_ENV = "production"
+
+[context.deploy-preview]
+ command = "hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL"
+
+[context.branch-deploy]
+ command = "hugo --gc --minify -b $DEPLOY_PRIME_URL"
+
+[context.next.environment]
+ HUGO_ENABLEGITINFO = "true"
+
+[[redirects]]
+ from = "/npmjs/*"
+ to = "/npmjs/"
+ status = 200