From abf56bd0c23f62a59efc3ccd241995aaf466bd01 Mon Sep 17 00:00:00 2001 From: duggavo <> Date: Sun, 11 Jun 2023 15:04:25 +0200 Subject: [PATCH] Initial commit --- archetypes/default.md | 6 + config.toml | 10 + content/_index.md | 9 + content/docs/links.md | 34 + content/docs/mining.md | 25 + content/docs/node.md | 20 + content/docs/technical-specs.md | 32 + layouts/partials/docs/inject/head.html | 1 + ...s_e129fe35b8d0a70789c8a08429469073.content | 1 + ...scss_e129fe35b8d0a70789c8a08429469073.json | 1 + static/favicon.ico | Bin 0 -> 178369 bytes themes/hugo-book/.github/workflows/main.yml | 24 + themes/hugo-book/.gitignore | 4 + themes/hugo-book/LICENSE | 20 + themes/hugo-book/README.md | 358 +++++ themes/hugo-book/archetypes/docs.md | 10 + themes/hugo-book/archetypes/posts.md | 6 + themes/hugo-book/assets/_custom.scss | 3 + themes/hugo-book/assets/_defaults.scss | 66 + themes/hugo-book/assets/_fonts.scss | 39 + themes/hugo-book/assets/_main.scss | 364 +++++ themes/hugo-book/assets/_markdown.scss | 196 +++ themes/hugo-book/assets/_print.scss | 17 + themes/hugo-book/assets/_shortcodes.scss | 104 ++ themes/hugo-book/assets/_utils.scss | 92 ++ themes/hugo-book/assets/_variables.scss | 3 + themes/hugo-book/assets/book.scss | 15 + themes/hugo-book/assets/clipboard.js | 24 + themes/hugo-book/assets/manifest.json | 15 + themes/hugo-book/assets/menu-reset.js | 7 + themes/hugo-book/assets/mermaid.json | 6 + themes/hugo-book/assets/normalize.css | 349 +++++ .../hugo-book/assets/plugins/_numbered.scss | 36 + .../hugo-book/assets/plugins/_scrollbars.scss | 26 + themes/hugo-book/assets/search-data.json | 15 + themes/hugo-book/assets/search.js | 104 ++ themes/hugo-book/assets/sw-register.js | 7 + themes/hugo-book/assets/sw.js | 55 + themes/hugo-book/assets/themes/_auto.scss | 9 + themes/hugo-book/assets/themes/_dark.scss | 3 + themes/hugo-book/assets/themes/_light.scss | 3 + .../hugo-book/exampleSite/assets/_custom.scss | 4 + .../exampleSite/assets/_variables.scss | 1 + themes/hugo-book/exampleSite/config.toml | 118 ++ themes/hugo-book/exampleSite/config.yaml | 114 ++ .../exampleSite/content.bn/_index.md | 79 + .../exampleSite/content.en/_index.md | 41 + .../content.en/docs/example/_index.md | 71 + .../example/collapsed/3rd-level/4th-level.md | 12 + .../example/collapsed/3rd-level/_index.md | 26 + .../docs/example/collapsed/_index.md | 4 + .../content.en/docs/example/hidden.md | 52 + .../docs/example/table-of-contents/_index.md | 85 ++ .../example/table-of-contents/with-toc.md | 64 + .../example/table-of-contents/without-toc.md | 59 + .../content.en/docs/shortcodes/_index.md | 3 + .../content.en/docs/shortcodes/buttons.md | 13 + .../content.en/docs/shortcodes/columns.md | 45 + .../content.en/docs/shortcodes/details.md | 22 + .../content.en/docs/shortcodes/expand.md | 35 + .../content.en/docs/shortcodes/hints.md | 32 + .../content.en/docs/shortcodes/katex.md | 28 + .../content.en/docs/shortcodes/mermaid.md | 41 + .../docs/shortcodes/section/_index.md | 15 + .../docs/shortcodes/section/first-page.md | 6 + .../docs/shortcodes/section/second-page.md | 6 + .../content.en/docs/shortcodes/tabs.md | 50 + .../exampleSite/content.en/menu/index.md | 22 + .../exampleSite/content.en/posts/_index.md | 7 + .../content.en/posts/creating-a-new-theme.md | 1150 +++++++++++++++ .../content.en/posts/goisforlovers.md | 344 +++++ .../content.en/posts/hugoisforlovers.md | 89 ++ .../content.en/posts/migrate-from-jekyll.md | 156 ++ .../exampleSite/content.ru/_index.md | 79 + .../exampleSite/content.zh/_index.md | 79 + ...s_50fc8c04e12a2f59027287995557ceff.content | 1 + ...scss_50fc8c04e12a2f59027287995557ceff.json | 1 + themes/hugo-book/go.mod | 3 + themes/hugo-book/i18n/am.yaml | 14 + themes/hugo-book/i18n/bn.yaml | 14 + themes/hugo-book/i18n/cn.yaml | 21 + themes/hugo-book/i18n/cs.yaml | 14 + themes/hugo-book/i18n/de.yaml | 14 + themes/hugo-book/i18n/en.yaml | 14 + themes/hugo-book/i18n/es.yaml | 14 + themes/hugo-book/i18n/fa.yaml | 20 + themes/hugo-book/i18n/fr.yaml | 14 + themes/hugo-book/i18n/it.yaml | 14 + themes/hugo-book/i18n/ja.yaml | 20 + themes/hugo-book/i18n/jp.yaml | 21 + themes/hugo-book/i18n/ko.yaml | 20 + themes/hugo-book/i18n/nb.yaml | 14 + themes/hugo-book/i18n/pt.yaml | 14 + themes/hugo-book/i18n/ru.yaml | 14 + themes/hugo-book/i18n/sv.yaml | 14 + themes/hugo-book/i18n/tr.yaml | 14 + themes/hugo-book/i18n/uk.yaml | 14 + themes/hugo-book/i18n/zh-TW.yaml | 20 + themes/hugo-book/i18n/zh.yaml | 20 + themes/hugo-book/images/screenshot.png | Bin 0 -> 189080 bytes themes/hugo-book/images/tn.png | Bin 0 -> 195683 bytes themes/hugo-book/layouts/404.html | 34 + .../_default/_markup/render-heading.html | 4 + .../_default/_markup/render-image.html | 19 + .../layouts/_default/_markup/render-link.html | 28 + themes/hugo-book/layouts/_default/baseof.html | 83 ++ themes/hugo-book/layouts/_default/list.html | 1 + themes/hugo-book/layouts/_default/single.html | 1 + .../layouts/partials/docs/brand.html | 8 + .../layouts/partials/docs/comments.html | 2 + .../hugo-book/layouts/partials/docs/date.html | 6 + .../layouts/partials/docs/footer.html | 28 + .../layouts/partials/docs/header.html | 13 + .../partials/docs/html-head-title.html | 1 + .../layouts/partials/docs/html-head.html | 55 + .../layouts/partials/docs/inject/body.html | 0 .../partials/docs/inject/content-after.html | 0 .../partials/docs/inject/content-before.html | 0 .../layouts/partials/docs/inject/footer.html | 0 .../layouts/partials/docs/inject/head.html | 0 .../partials/docs/inject/menu-after.html | 0 .../partials/docs/inject/menu-before.html | 0 .../partials/docs/inject/toc-after.html | 0 .../partials/docs/inject/toc-before.html | 0 .../layouts/partials/docs/languages.html | 33 + .../layouts/partials/docs/menu-bundle.html | 5 + .../layouts/partials/docs/menu-filetree.html | 49 + .../layouts/partials/docs/menu-hugo.html | 28 + .../hugo-book/layouts/partials/docs/menu.html | 25 + .../layouts/partials/docs/post-meta.html | 23 + .../layouts/partials/docs/search.html | 7 + .../layouts/partials/docs/taxonomy.html | 19 + .../layouts/partials/docs/title.html | 17 + .../hugo-book/layouts/partials/docs/toc.html | 3 + themes/hugo-book/layouts/posts/list.html | 22 + themes/hugo-book/layouts/posts/single.html | 13 + .../hugo-book/layouts/shortcodes/button.html | 12 + .../hugo-book/layouts/shortcodes/columns.html | 7 + .../hugo-book/layouts/shortcodes/details.html | 7 + .../hugo-book/layouts/shortcodes/expand.html | 13 + themes/hugo-book/layouts/shortcodes/hint.html | 3 + .../hugo-book/layouts/shortcodes/katex.html | 13 + .../hugo-book/layouts/shortcodes/mermaid.html | 12 + .../hugo-book/layouts/shortcodes/section.html | 10 + themes/hugo-book/layouts/shortcodes/tab.html | 12 + themes/hugo-book/layouts/shortcodes/tabs.html | 15 + themes/hugo-book/layouts/taxonomy/list.html | 13 + .../hugo-book/layouts/taxonomy/taxonomy.html | 22 + themes/hugo-book/static/favicon.png | Bin 0 -> 109 bytes themes/hugo-book/static/favicon.svg | 1 + themes/hugo-book/static/flexsearch.min.js | 42 + .../fonts/roboto-mono-v13-latin-regular.woff | Bin 0 -> 15160 bytes .../fonts/roboto-mono-v13-latin-regular.woff2 | Bin 0 -> 12312 bytes .../static/fonts/roboto-v27-latin-700.woff | Bin 0 -> 20396 bytes .../static/fonts/roboto-v27-latin-700.woff2 | Bin 0 -> 15828 bytes .../fonts/roboto-v27-latin-regular.woff | Bin 0 -> 20332 bytes .../fonts/roboto-v27-latin-regular.woff2 | Bin 0 -> 15688 bytes .../hugo-book/static/katex/auto-render.min.js | 1 + .../static/katex/fonts/KaTeX_AMS-Regular.ttf | Bin 0 -> 70972 bytes .../static/katex/fonts/KaTeX_AMS-Regular.woff | Bin 0 -> 38868 bytes .../katex/fonts/KaTeX_AMS-Regular.woff2 | Bin 0 -> 32944 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.ttf | Bin 0 -> 19316 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff | Bin 0 -> 11696 bytes .../katex/fonts/KaTeX_Caligraphic-Bold.woff2 | Bin 0 -> 10448 bytes .../katex/fonts/KaTeX_Caligraphic-Regular.ttf | Bin 0 -> 18684 bytes .../fonts/KaTeX_Caligraphic-Regular.woff | Bin 0 -> 11460 bytes .../fonts/KaTeX_Caligraphic-Regular.woff2 | Bin 0 -> 10240 bytes .../static/katex/fonts/KaTeX_Fraktur-Bold.ttf | Bin 0 -> 35660 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff | Bin 0 -> 22632 bytes .../katex/fonts/KaTeX_Fraktur-Bold.woff2 | Bin 0 -> 20360 bytes .../katex/fonts/KaTeX_Fraktur-Regular.ttf | Bin 0 -> 34352 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff | Bin 0 -> 22088 bytes .../katex/fonts/KaTeX_Fraktur-Regular.woff2 | Bin 0 -> 19784 bytes .../static/katex/fonts/KaTeX_Main-Bold.ttf | Bin 0 -> 60784 bytes .../static/katex/fonts/KaTeX_Main-Bold.woff | Bin 0 -> 35464 bytes .../static/katex/fonts/KaTeX_Main-Bold.woff2 | Bin 0 -> 30244 bytes .../katex/fonts/KaTeX_Main-BoldItalic.ttf | Bin 0 -> 44496 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff | Bin 0 -> 25352 bytes .../katex/fonts/KaTeX_Main-BoldItalic.woff2 | Bin 0 -> 21944 bytes .../static/katex/fonts/KaTeX_Main-Italic.ttf | Bin 0 -> 47640 bytes .../static/katex/fonts/KaTeX_Main-Italic.woff | Bin 0 -> 26228 bytes .../katex/fonts/KaTeX_Main-Italic.woff2 | Bin 0 -> 22748 bytes .../static/katex/fonts/KaTeX_Main-Regular.ttf | Bin 0 -> 69520 bytes .../katex/fonts/KaTeX_Main-Regular.woff | Bin 0 -> 38112 bytes .../katex/fonts/KaTeX_Main-Regular.woff2 | Bin 0 -> 32464 bytes .../katex/fonts/KaTeX_Math-BoldItalic.ttf | Bin 0 -> 39308 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff | Bin 0 -> 22324 bytes .../katex/fonts/KaTeX_Math-BoldItalic.woff2 | Bin 0 -> 19720 bytes .../static/katex/fonts/KaTeX_Math-Italic.ttf | Bin 0 -> 40992 bytes .../static/katex/fonts/KaTeX_Math-Italic.woff | Bin 0 -> 22844 bytes .../katex/fonts/KaTeX_Math-Italic.woff2 | Bin 0 -> 20096 bytes .../katex/fonts/KaTeX_SansSerif-Bold.ttf | Bin 0 -> 33688 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff | Bin 0 -> 18516 bytes .../katex/fonts/KaTeX_SansSerif-Bold.woff2 | Bin 0 -> 15732 bytes .../katex/fonts/KaTeX_SansSerif-Italic.ttf | Bin 0 -> 30960 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff | Bin 0 -> 17572 bytes .../katex/fonts/KaTeX_SansSerif-Italic.woff2 | Bin 0 -> 15024 bytes .../katex/fonts/KaTeX_SansSerif-Regular.ttf | Bin 0 -> 29812 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff | Bin 0 -> 16228 bytes .../katex/fonts/KaTeX_SansSerif-Regular.woff2 | Bin 0 -> 13708 bytes .../katex/fonts/KaTeX_Script-Regular.ttf | Bin 0 -> 24620 bytes .../katex/fonts/KaTeX_Script-Regular.woff | Bin 0 -> 13428 bytes .../katex/fonts/KaTeX_Script-Regular.woff2 | Bin 0 -> 12064 bytes .../katex/fonts/KaTeX_Size1-Regular.ttf | Bin 0 -> 12916 bytes .../katex/fonts/KaTeX_Size1-Regular.woff | Bin 0 -> 6696 bytes .../katex/fonts/KaTeX_Size1-Regular.woff2 | Bin 0 -> 5592 bytes .../katex/fonts/KaTeX_Size2-Regular.ttf | Bin 0 -> 12172 bytes .../katex/fonts/KaTeX_Size2-Regular.woff | Bin 0 -> 6436 bytes .../katex/fonts/KaTeX_Size2-Regular.woff2 | Bin 0 -> 5392 bytes .../katex/fonts/KaTeX_Size3-Regular.ttf | Bin 0 -> 8120 bytes .../katex/fonts/KaTeX_Size3-Regular.woff | Bin 0 -> 4568 bytes .../katex/fonts/KaTeX_Size3-Regular.woff2 | Bin 0 -> 3728 bytes .../katex/fonts/KaTeX_Size4-Regular.ttf | Bin 0 -> 11016 bytes .../katex/fonts/KaTeX_Size4-Regular.woff | Bin 0 -> 6184 bytes .../katex/fonts/KaTeX_Size4-Regular.woff2 | Bin 0 -> 5028 bytes .../katex/fonts/KaTeX_Typewriter-Regular.ttf | Bin 0 -> 35924 bytes .../katex/fonts/KaTeX_Typewriter-Regular.woff | Bin 0 -> 20260 bytes .../fonts/KaTeX_Typewriter-Regular.woff2 | Bin 0 -> 17272 bytes themes/hugo-book/static/katex/katex.min.css | 1 + themes/hugo-book/static/katex/katex.min.js | 1 + themes/hugo-book/static/mermaid.min.js | 1280 +++++++++++++++++ themes/hugo-book/static/svg/calendar.svg | 1 + themes/hugo-book/static/svg/edit.svg | 1 + themes/hugo-book/static/svg/menu.svg | 1 + themes/hugo-book/static/svg/toc.svg | 1 + themes/hugo-book/static/svg/translate.svg | 1 + themes/hugo-book/theme.toml | 16 + 227 files changed, 7427 insertions(+) create mode 100644 archetypes/default.md create mode 100644 config.toml create mode 100644 content/_index.md create mode 100644 content/docs/links.md create mode 100644 content/docs/mining.md create mode 100644 content/docs/node.md create mode 100644 content/docs/technical-specs.md create mode 100644 layouts/partials/docs/inject/head.html create mode 100644 resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.content create mode 100644 resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.json create mode 100644 static/favicon.ico create mode 100644 themes/hugo-book/.github/workflows/main.yml create mode 100644 themes/hugo-book/.gitignore create mode 100644 themes/hugo-book/LICENSE create mode 100644 themes/hugo-book/README.md create mode 100644 themes/hugo-book/archetypes/docs.md create mode 100644 themes/hugo-book/archetypes/posts.md create mode 100644 themes/hugo-book/assets/_custom.scss create mode 100644 themes/hugo-book/assets/_defaults.scss create mode 100644 themes/hugo-book/assets/_fonts.scss create mode 100644 themes/hugo-book/assets/_main.scss create mode 100644 themes/hugo-book/assets/_markdown.scss create mode 100644 themes/hugo-book/assets/_print.scss create mode 100644 themes/hugo-book/assets/_shortcodes.scss create mode 100644 themes/hugo-book/assets/_utils.scss create mode 100644 themes/hugo-book/assets/_variables.scss create mode 100644 themes/hugo-book/assets/book.scss create mode 100644 themes/hugo-book/assets/clipboard.js create mode 100644 themes/hugo-book/assets/manifest.json create mode 100644 themes/hugo-book/assets/menu-reset.js create mode 100644 themes/hugo-book/assets/mermaid.json create mode 100644 themes/hugo-book/assets/normalize.css create mode 100644 themes/hugo-book/assets/plugins/_numbered.scss create mode 100644 themes/hugo-book/assets/plugins/_scrollbars.scss create mode 100644 themes/hugo-book/assets/search-data.json create mode 100644 themes/hugo-book/assets/search.js create mode 100644 themes/hugo-book/assets/sw-register.js create mode 100644 themes/hugo-book/assets/sw.js create mode 100644 themes/hugo-book/assets/themes/_auto.scss create mode 100644 themes/hugo-book/assets/themes/_dark.scss create mode 100644 themes/hugo-book/assets/themes/_light.scss create mode 100644 themes/hugo-book/exampleSite/assets/_custom.scss create mode 100644 themes/hugo-book/exampleSite/assets/_variables.scss create mode 100644 themes/hugo-book/exampleSite/config.toml create mode 100644 themes/hugo-book/exampleSite/config.yaml create mode 100644 themes/hugo-book/exampleSite/content.bn/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/collapsed/3rd-level/4th-level.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/collapsed/3rd-level/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/collapsed/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/hidden.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/table-of-contents/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/table-of-contents/with-toc.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/example/table-of-contents/without-toc.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/buttons.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/columns.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/details.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/expand.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/hints.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/katex.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/mermaid.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/section/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/section/first-page.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/section/second-page.md create mode 100644 themes/hugo-book/exampleSite/content.en/docs/shortcodes/tabs.md create mode 100644 themes/hugo-book/exampleSite/content.en/menu/index.md create mode 100644 themes/hugo-book/exampleSite/content.en/posts/_index.md create mode 100644 themes/hugo-book/exampleSite/content.en/posts/creating-a-new-theme.md create mode 100644 themes/hugo-book/exampleSite/content.en/posts/goisforlovers.md create mode 100644 themes/hugo-book/exampleSite/content.en/posts/hugoisforlovers.md create mode 100644 themes/hugo-book/exampleSite/content.en/posts/migrate-from-jekyll.md create mode 100644 themes/hugo-book/exampleSite/content.ru/_index.md create mode 100644 themes/hugo-book/exampleSite/content.zh/_index.md create mode 100644 themes/hugo-book/exampleSite/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.content create mode 100644 themes/hugo-book/exampleSite/resources/_gen/assets/scss/book.scss_50fc8c04e12a2f59027287995557ceff.json create mode 100644 themes/hugo-book/go.mod create mode 100644 themes/hugo-book/i18n/am.yaml create mode 100644 themes/hugo-book/i18n/bn.yaml create mode 100644 themes/hugo-book/i18n/cn.yaml create mode 100644 themes/hugo-book/i18n/cs.yaml create mode 100644 themes/hugo-book/i18n/de.yaml create mode 100644 themes/hugo-book/i18n/en.yaml create mode 100644 themes/hugo-book/i18n/es.yaml create mode 100644 themes/hugo-book/i18n/fa.yaml create mode 100644 themes/hugo-book/i18n/fr.yaml create mode 100644 themes/hugo-book/i18n/it.yaml create mode 100644 themes/hugo-book/i18n/ja.yaml create mode 100644 themes/hugo-book/i18n/jp.yaml create mode 100644 themes/hugo-book/i18n/ko.yaml create mode 100644 themes/hugo-book/i18n/nb.yaml create mode 100644 themes/hugo-book/i18n/pt.yaml create mode 100644 themes/hugo-book/i18n/ru.yaml create mode 100644 themes/hugo-book/i18n/sv.yaml create mode 100644 themes/hugo-book/i18n/tr.yaml create mode 100644 themes/hugo-book/i18n/uk.yaml create mode 100644 themes/hugo-book/i18n/zh-TW.yaml create mode 100644 themes/hugo-book/i18n/zh.yaml create mode 100644 themes/hugo-book/images/screenshot.png create mode 100644 themes/hugo-book/images/tn.png create mode 100644 themes/hugo-book/layouts/404.html create mode 100644 themes/hugo-book/layouts/_default/_markup/render-heading.html create mode 100644 themes/hugo-book/layouts/_default/_markup/render-image.html create mode 100644 themes/hugo-book/layouts/_default/_markup/render-link.html create mode 100644 themes/hugo-book/layouts/_default/baseof.html create mode 100644 themes/hugo-book/layouts/_default/list.html create mode 100644 themes/hugo-book/layouts/_default/single.html create mode 100644 themes/hugo-book/layouts/partials/docs/brand.html create mode 100644 themes/hugo-book/layouts/partials/docs/comments.html create mode 100644 themes/hugo-book/layouts/partials/docs/date.html create mode 100644 themes/hugo-book/layouts/partials/docs/footer.html create mode 100644 themes/hugo-book/layouts/partials/docs/header.html create mode 100644 themes/hugo-book/layouts/partials/docs/html-head-title.html create mode 100644 themes/hugo-book/layouts/partials/docs/html-head.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/body.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/content-after.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/content-before.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/footer.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/head.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/menu-after.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/menu-before.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/toc-after.html create mode 100644 themes/hugo-book/layouts/partials/docs/inject/toc-before.html create mode 100644 themes/hugo-book/layouts/partials/docs/languages.html create mode 100644 themes/hugo-book/layouts/partials/docs/menu-bundle.html create mode 100644 themes/hugo-book/layouts/partials/docs/menu-filetree.html create mode 100644 themes/hugo-book/layouts/partials/docs/menu-hugo.html create mode 100644 themes/hugo-book/layouts/partials/docs/menu.html create mode 100644 themes/hugo-book/layouts/partials/docs/post-meta.html create mode 100644 themes/hugo-book/layouts/partials/docs/search.html create mode 100644 themes/hugo-book/layouts/partials/docs/taxonomy.html create mode 100644 themes/hugo-book/layouts/partials/docs/title.html create mode 100644 themes/hugo-book/layouts/partials/docs/toc.html create mode 100644 themes/hugo-book/layouts/posts/list.html create mode 100644 themes/hugo-book/layouts/posts/single.html create mode 100644 themes/hugo-book/layouts/shortcodes/button.html create mode 100644 themes/hugo-book/layouts/shortcodes/columns.html create mode 100644 themes/hugo-book/layouts/shortcodes/details.html create mode 100644 themes/hugo-book/layouts/shortcodes/expand.html create mode 100644 themes/hugo-book/layouts/shortcodes/hint.html create mode 100644 themes/hugo-book/layouts/shortcodes/katex.html create mode 100644 themes/hugo-book/layouts/shortcodes/mermaid.html create mode 100644 themes/hugo-book/layouts/shortcodes/section.html create mode 100644 themes/hugo-book/layouts/shortcodes/tab.html create mode 100644 themes/hugo-book/layouts/shortcodes/tabs.html create mode 100644 themes/hugo-book/layouts/taxonomy/list.html create mode 100644 themes/hugo-book/layouts/taxonomy/taxonomy.html create mode 100644 themes/hugo-book/static/favicon.png create mode 100644 themes/hugo-book/static/favicon.svg create mode 100644 themes/hugo-book/static/flexsearch.min.js create mode 100644 themes/hugo-book/static/fonts/roboto-mono-v13-latin-regular.woff create mode 100644 themes/hugo-book/static/fonts/roboto-mono-v13-latin-regular.woff2 create mode 100644 themes/hugo-book/static/fonts/roboto-v27-latin-700.woff create mode 100644 themes/hugo-book/static/fonts/roboto-v27-latin-700.woff2 create mode 100644 themes/hugo-book/static/fonts/roboto-v27-latin-regular.woff create mode 100644 themes/hugo-book/static/fonts/roboto-v27-latin-regular.woff2 create mode 100644 themes/hugo-book/static/katex/auto-render.min.js create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_AMS-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_AMS-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_AMS-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Bold.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Bold.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Caligraphic-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Bold.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Bold.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Bold.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Fraktur-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Bold.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Bold.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Bold.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-BoldItalic.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-BoldItalic.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-BoldItalic.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Italic.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Italic.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Italic.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Main-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-BoldItalic.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-BoldItalic.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-BoldItalic.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-Italic.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-Italic.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Math-Italic.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Bold.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Bold.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Bold.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Italic.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Italic.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Italic.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_SansSerif-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Script-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Script-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Script-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size1-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size1-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size1-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size2-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size2-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size2-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size3-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size3-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size3-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size4-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size4-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Size4-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Typewriter-Regular.ttf create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Typewriter-Regular.woff create mode 100644 themes/hugo-book/static/katex/fonts/KaTeX_Typewriter-Regular.woff2 create mode 100644 themes/hugo-book/static/katex/katex.min.css create mode 100644 themes/hugo-book/static/katex/katex.min.js create mode 100644 themes/hugo-book/static/mermaid.min.js create mode 100644 themes/hugo-book/static/svg/calendar.svg create mode 100644 themes/hugo-book/static/svg/edit.svg create mode 100644 themes/hugo-book/static/svg/menu.svg create mode 100644 themes/hugo-book/static/svg/toc.svg create mode 100644 themes/hugo-book/static/svg/translate.svg create mode 100644 themes/hugo-book/theme.toml diff --git a/archetypes/default.md b/archetypes/default.md new file mode 100644 index 0000000..00e77bd --- /dev/null +++ b/archetypes/default.md @@ -0,0 +1,6 @@ +--- +title: "{{ replace .Name "-" " " | title }}" +date: {{ .Date }} +draft: true +--- + diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..71ebe53 --- /dev/null +++ b/config.toml @@ -0,0 +1,10 @@ +baseURL = 'http://wownerodocs.org/' +languageCode = 'en-us' +title = 'WowneroDocs' +theme = 'hugo-book' + +[markup.goldmark.renderer] + unsafe = true + +[params] + BookTheme = 'auto' \ No newline at end of file diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..bf37830 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,9 @@ +--- +title: Introduction +type: docs +--- + +# WowneroDocs + +WowneroDocs attempts to organize basic knowledge on Wownero in one place. +Check out the [links and info](/docs/links/). \ No newline at end of file diff --git a/content/docs/links.md b/content/docs/links.md new file mode 100644 index 0000000..5ad902c --- /dev/null +++ b/content/docs/links.md @@ -0,0 +1,34 @@ +--- +title: "Links" +--- + +# Wownero Links +This page holds a list of useful wownero links and services accepting WOW. + +## Official sites +- [wownero.org](https://wownero.org/) - the official Wownero website +- [git.wownero.com](https://git.wownero.com/) - WOW source code is here +- [forum.wownero.com](https://forum.wownero.com/) - Wownero forum. You can ask questions and get answers here + +## Community sites +- [#wownero at oftc.net](https://webchat.oftc.net/?channels=wownero) - Wownero IRC chat +- [Wownero Matrix room](https://matrix.to/#/#wownero:matrix.org) - Bridged with IRC +- [wownero discord](https://discord.gg/ykZyAzJhDK) - Partially bridged with IRC +- [reddit](https://www.reddit.com/r/Wownero/) - a wownero forum which spies on you +- [Telegram](https://t.me/wownero) - Not bridged with IRC, you should use IRC, Matrix or Discord instead +- [Slime.cash](https://slime.cash) - A cool Wownero introduction site + +## Exchanges +- [TradeOgre](https://tradeogre.com/exchange/BTC-WOW) - the OG exchange +- [AltQuick](https://altquick.com/market/Wownero) - low volume +- [MajesticBank](https://majesticbank.sc/) - swap wownero for XMR, BTC, or LTC + +## Wallets +- [WowLet](https://wowlet.app) - GUI wallet for Linux, Windows and MacOS +- [Wownero CLI](https://git.wownero.com/wownero/wownero/releases) - official command-line wallet +- [Stack Wallet](https://stackwallet.com/) - Android and iOS mobile wallet +- [Elite Wallet](https://elitewallet.sc/) - Android and iOS mobile wallet + +## Tutorials +- [How to solo mine](/docs/mining) +- [How to run a node](/docs/node) diff --git a/content/docs/mining.md b/content/docs/mining.md new file mode 100644 index 0000000..49b6f44 --- /dev/null +++ b/content/docs/mining.md @@ -0,0 +1,25 @@ +--- +title: "Mining" +--- + +# How to solo mine Wownero +Wownero is solo-mining only since Junkie Jeff Hardfork (4th july 2021). + +## With one-click miner +To solo mine you can use SuchMiner, a high-performance Wownero miner. + +### Step 1 +[Download SuchMiner](https://github.com/duggavo/SuchMiner/releases) and unzip the downloaded folder. +If you wish you can also verify the hash and signature, or build by yourself. + +### Step 2 +For security reasons it is strongly recommeneded to create a new wallet for mining. +You can use [Wowlet](https://wowlet.app/) or [Wownero Wallet CLI](https://git.wownero.com/wownero/releases). + +### Step 3 +Run SuchMiner and enter your wallet address and private spend key when prompted. +In WowLet you can see them with *wallet*>*keys*. + +## Wen block? +[CryptUnit](https://www.cryptunit.com/coin/WOW) is a great solo mining calculator. +Please keep in mind that solo mining is a lottery - it might take you more or less time to find a block, depending on your luck. \ No newline at end of file diff --git a/content/docs/node.md b/content/docs/node.md new file mode 100644 index 0000000..bb6ccb0 --- /dev/null +++ b/content/docs/node.md @@ -0,0 +1,20 @@ +--- +title: "Running a node" +--- + +# How to run a Wownero node +Running a Wownero node is very simple. + +## Requirements +You need ~10 GB of free disk space to run a Wownero node. +SSD is not necessary but syncing will be much faster compared to hard disk. + +### Step 1 +Download and extract the latest wownero CLI from [https://git.wownero.com/wownero/wownero/releases](WowGit) + +### Step 2 +Double-click or run wownerod. +If you are on Linux, you might have to allow execution of the daemon: +`chmod +x ./wownerod` + +Wait for sync, and that's it! You're now running a Wownero node. \ No newline at end of file diff --git a/content/docs/technical-specs.md b/content/docs/technical-specs.md new file mode 100644 index 0000000..add333b --- /dev/null +++ b/content/docs/technical-specs.md @@ -0,0 +1,32 @@ +--- +title: "Techical specs" +--- + +# Wownero Technical Specs + +## Live +Wownero blockchain is live since April 1st 2018. + +## Distribution +Wownero had no premine, ICO, instamine, or presale of any kind. + +## Block reward +184 million coins mined over ~50 years, with a smooth emission curve. No tail emission. + +## Proof of Work +- Cryptonight v1 since height 1 +- Cryptonight v2 since height 53666 +- Cryptonight WOW since height 81769 +- RandomWOW since height 114969 + +## Block time +5 minutes. + +## Privacy +Wownero uses ring rignatures, stealth addresses and RingCT. +- Bulletproofs for better scaling +- Ring size of 22 + +## Solo mining +Wownero is solo-mining only since Junkie Jeff Hardfork (4th july 2021). +See [mining](/docs/mining) for solo mining instructions. \ No newline at end of file diff --git a/layouts/partials/docs/inject/head.html b/layouts/partials/docs/inject/head.html new file mode 100644 index 0000000..a046509 --- /dev/null +++ b/layouts/partials/docs/inject/head.html @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.content b/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.content new file mode 100644 index 0000000..9d73d7c --- /dev/null +++ b/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.content @@ -0,0 +1 @@ +@charset "UTF-8";:root{--gray-100:#f8f9fa;--gray-200:#e9ecef;--gray-500:#adb5bd;--color-link:#0055bb;--color-visited-link:#8440f1;--body-background:white;--body-font-color:black;--icon-filter:none;--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}@media(prefers-color-scheme:dark){:root{--gray-100:rgba(255, 255, 255, 0.1);--gray-200:rgba(255, 255, 255, 0.2);--gray-500:rgba(255, 255, 255, 0.5);--color-link:#84b2ff;--color-visited-link:#b88dff;--body-background:#343a40;--body-font-color:#e9ecef;--icon-filter:brightness(0) invert(1);--hint-color-info:#6bf;--hint-color-warning:#fd6;--hint-color-danger:#f66}}/*!normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css*/html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}.flex{display:flex}.flex-auto{flex:auto}.flex-even{flex:1 1}.flex-wrap{flex-wrap:wrap}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.align-center{align-items:center}.mx-auto{margin:0 auto}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.hidden{display:none}input.toggle{height:0;width:0;overflow:hidden;opacity:0;position:absolute}.clearfix::after{content:"";display:table;clear:both}html{font-size:16px;scroll-behavior:smooth;touch-action:manipulation}body{min-width:20rem;color:var(--body-font-color);background:var(--body-background);letter-spacing:.33px;font-weight:400;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;box-sizing:border-box}body *{box-sizing:inherit}h1,h2,h3,h4,h5{font-weight:400}a{text-decoration:none;color:var(--color-link)}img{vertical-align:baseline}:focus{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}aside nav ul{padding:0;margin:0;list-style:none}aside nav ul li{margin:1em 0;position:relative}aside nav ul a{display:block}aside nav ul a:hover{opacity:.5}aside nav ul ul{padding-inline-start:1rem}ul.pagination{display:flex;justify-content:center;list-style-type:none;padding-inline-start:0}ul.pagination .page-item a{padding:1rem}.container{max-width:80rem;margin:0 auto}.book-icon{filter:var(--icon-filter)}.book-brand{margin-top:0;margin-bottom:1rem}.book-brand img{height:1.5em;width:1.5em;margin-inline-end:.5rem}.book-menu{flex:0 0 16rem;font-size:.875rem}.book-menu .book-menu-content{width:16rem;padding:1rem;background:var(--body-background);position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-menu a,.book-menu label{color:inherit;cursor:pointer;word-wrap:break-word}.book-menu a.active{color:var(--color-link)}.book-menu input.toggle+label+ul{display:none}.book-menu input.toggle:checked+label+ul{display:block}.book-menu input.toggle+label::after{content:"▸"}.book-menu input.toggle:checked+label::after{content:"▾"}body[dir=rtl] .book-menu input.toggle+label::after{content:"◂"}body[dir=rtl] .book-menu input.toggle:checked+label::after{content:"▾"}.book-section-flat{margin:2rem 0}.book-section-flat>a,.book-section-flat>span,.book-section-flat>label{font-weight:bolder}.book-section-flat>ul{padding-inline-start:0}.book-page{min-width:20rem;flex-grow:1;padding:1rem}.book-post{margin-bottom:3rem}.book-header{display:none;margin-bottom:1rem}.book-header label{line-height:0}.book-header img.book-icon{height:1.5em;width:1.5em}.book-search{position:relative;margin:1rem 0;border-bottom:1px solid transparent}.book-search input{width:100%;padding:.5rem;border:0;border-radius:.25rem;background:var(--gray-100);color:var(--body-font-color)}.book-search input:required+.book-search-spinner{display:block}.book-search .book-search-spinner{position:absolute;top:0;margin:.5rem;margin-inline-start:calc(100% - 1.5rem);width:1rem;height:1rem;border:1px solid transparent;border-top-color:var(--body-font-color);border-radius:50%;animation:spin 1s ease infinite}@keyframes spin{100%{transform:rotate(360deg)}}.book-search small{opacity:.5}.book-toc{flex:0 0 16rem;font-size:.75rem}.book-toc .book-toc-content{width:16rem;padding:1rem;position:fixed;top:0;bottom:0;overflow-x:hidden;overflow-y:auto}.book-toc img{height:1em;width:1em}.book-toc nav>ul>li:first-child{margin-top:0}.book-footer{padding-top:1rem;font-size:.875rem}.book-footer img{height:1em;width:1em;margin-inline-end:.5rem}.book-comments{margin-top:1rem}.book-languages{margin-block-end:2rem}.book-languages .book-icon{height:1em;width:1em;margin-inline-end:.5em}.book-languages ul{padding-inline-start:1.5em}.book-menu-content,.book-toc-content,.book-page,.book-header aside,.markdown{transition:.2s ease-in-out;transition-property:transform,margin,opacity,visibility;will-change:transform,margin,opacity}@media screen and (max-width:56rem){#menu-control,#toc-control{display:inline}.book-menu{visibility:hidden;margin-inline-start:-16rem;font-size:16px;z-index:1}.book-toc{display:none}.book-header{display:block}#menu-control:focus~main label[for=menu-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#menu-control:checked~main .book-menu{visibility:initial}#menu-control:checked~main .book-menu .book-menu-content{transform:translateX(16rem);box-shadow:0 0 .5rem rgba(0,0,0,.1)}#menu-control:checked~main .book-page{opacity:.25}#menu-control:checked~main .book-menu-overlay{display:block;position:absolute;top:0;bottom:0;left:0;right:0}#toc-control:focus~main label[for=toc-control]{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}#toc-control:checked~main .book-header aside{display:block}body[dir=rtl] #menu-control:checked~main .book-menu .book-menu-content{transform:translateX(-16rem)}}@media screen and (min-width:80rem){.book-page,.book-menu .book-menu-content,.book-toc .book-toc-content{padding:2rem 1rem}}@font-face{font-family:roboto;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-regular.woff2)format("woff2"),url(fonts/roboto-v27-latin-regular.woff)format("woff")}@font-face{font-family:roboto;font-style:normal;font-weight:700;font-display:swap;src:local(""),url(fonts/roboto-v27-latin-700.woff2)format("woff2"),url(fonts/roboto-v27-latin-700.woff)format("woff")}@font-face{font-family:roboto mono;font-style:normal;font-weight:400;font-display:swap;src:local(""),url(fonts/roboto-mono-v13-latin-regular.woff2)format("woff2"),url(fonts/roboto-mono-v13-latin-regular.woff)format("woff")}body{font-family:roboto,sans-serif}code{font-family:roboto mono,monospace}@media print{.book-menu,.book-footer,.book-toc{display:none}.book-header,.book-header aside{display:block}main{display:block!important}}.markdown{line-height:1.6}.markdown>:first-child{margin-top:0}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-weight:400;line-height:1;margin-top:1.5em;margin-bottom:1rem}.markdown h1 a.anchor,.markdown h2 a.anchor,.markdown h3 a.anchor,.markdown h4 a.anchor,.markdown h5 a.anchor,.markdown h6 a.anchor{opacity:0;font-size:.75em;vertical-align:middle;text-decoration:none}.markdown h1:hover a.anchor,.markdown h1 a.anchor:focus,.markdown h2:hover a.anchor,.markdown h2 a.anchor:focus,.markdown h3:hover a.anchor,.markdown h3 a.anchor:focus,.markdown h4:hover a.anchor,.markdown h4 a.anchor:focus,.markdown h5:hover a.anchor,.markdown h5 a.anchor:focus,.markdown h6:hover a.anchor,.markdown h6 a.anchor:focus{opacity:initial}.markdown h4,.markdown h5,.markdown h6{font-weight:bolder}.markdown h5{font-size:.875em}.markdown h6{font-size:.75em}.markdown b,.markdown optgroup,.markdown strong{font-weight:bolder}.markdown a{text-decoration:none}.markdown a:hover{text-decoration:underline}.markdown a:visited{color:var(--color-visited-link)}.markdown img{max-width:100%;height:auto}.markdown code{padding:0 .25rem;background:var(--gray-200);border-radius:.25rem;font-size:.875em}.markdown pre{padding:1rem;background:var(--gray-100);border-radius:.25rem;overflow-x:auto}.markdown pre code{padding:0;background:0 0}.markdown p{word-wrap:break-word}.markdown blockquote{margin:1rem 0;padding:.5rem 1rem .5rem .75rem;border-inline-start:.25rem solid var(--gray-200);border-radius:.25rem}.markdown blockquote :first-child{margin-top:0}.markdown blockquote :last-child{margin-bottom:0}.markdown table{overflow:auto;display:block;border-spacing:0;border-collapse:collapse;margin-top:1rem;margin-bottom:1rem}.markdown table tr th,.markdown table tr td{padding:.5rem 1rem;border:1px solid var(--gray-200)}.markdown table tr:nth-child(2n){background:var(--gray-100)}.markdown hr{height:1px;border:none;background:var(--gray-200)}.markdown ul,.markdown ol{padding-inline-start:2rem}.markdown dl dt{font-weight:bolder;margin-top:1rem}.markdown dl dd{margin-inline-start:0;margin-bottom:1rem}.markdown .highlight table tr td:nth-child(1) pre{margin:0;padding-inline-end:0}.markdown .highlight table tr td:nth-child(2) pre{margin:0;padding-inline-start:0}.markdown details{padding:1rem;border:1px solid var(--gray-200);border-radius:.25rem}.markdown details summary{line-height:1;padding:1rem;margin:-1rem;cursor:pointer}.markdown details[open] summary{margin-bottom:0}.markdown figure{margin:1rem 0}.markdown figure figcaption p{margin-top:0}.markdown-inner>:first-child{margin-top:0}.markdown-inner>:last-child{margin-bottom:0}.markdown .book-expand{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden}.markdown .book-expand .book-expand-head{background:var(--gray-100);padding:.5rem 1rem;cursor:pointer}.markdown .book-expand .book-expand-content{display:none;padding:1rem}.markdown .book-expand input[type=checkbox]:checked+.book-expand-content{display:block}.markdown .book-tabs{margin-top:1rem;margin-bottom:1rem;border:1px solid var(--gray-200);border-radius:.25rem;overflow:hidden;display:flex;flex-wrap:wrap}.markdown .book-tabs label{display:inline-block;padding:.5rem 1rem;border-bottom:1px transparent;cursor:pointer}.markdown .book-tabs .book-tabs-content{order:999;width:100%;border-top:1px solid var(--gray-100);padding:1rem;display:none}.markdown .book-tabs input[type=radio]:checked+label{border-bottom:1px solid var(--color-link)}.markdown .book-tabs input[type=radio]:checked+label+.book-tabs-content{display:block}.markdown .book-tabs input[type=radio]:focus+label{outline-style:auto;outline-color:currentColor;outline-color:-webkit-focus-ring-color}.markdown .book-columns{margin-left:-1rem;margin-right:-1rem}.markdown .book-columns>div{margin:1rem 0;min-width:10rem;padding:0 1rem}.markdown a.book-btn{display:inline-block;font-size:.875rem;color:var(--color-link);line-height:2rem;padding:0 1rem;border:1px solid var(--color-link);border-radius:.25rem;cursor:pointer}.markdown a.book-btn:hover{text-decoration:none}.markdown .book-hint.info{border-color:#6bf;background-color:rgba(102,187,255,.1)}.markdown .book-hint.warning{border-color:#fd6;background-color:rgba(255,221,102,.1)}.markdown .book-hint.danger{border-color:#f66;background-color:rgba(255,102,102,.1)} \ No newline at end of file diff --git a/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.json b/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.json new file mode 100644 index 0000000..97a99f1 --- /dev/null +++ b/resources/_gen/assets/scss/book.scss_e129fe35b8d0a70789c8a08429469073.json @@ -0,0 +1 @@ +{"Target":"book.min.a82d7e77ceb134d151c4d7e381eeb30623fbd5a524d58c584d8716ecec0205bd.css","MediaType":"text/css","Data":{"Integrity":"sha256-qC1+d86xNNFRxNfjge6zBiP71aUk1YxYTYcW7OwCBb0="}} \ No newline at end of file diff --git a/static/favicon.ico b/static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..b73af22f1dbcb0353d01455811fbf092d31f2dd5 GIT binary patch literal 178369 zcmeF42fSQGy~h`V6h-m9$3tuno+1K4K@bEfHy~`-^(8Ugqbp7D>Dz^ zo_BnEa1Ha82NgDtNBlJucXhL}e$ROH^Jd1=KQ?CiMS@>taIrDG;~QbJu=R8mciczJ zbx$5*%=4ER^Y{VAjPEgK+{YYn|M<7uH^LCs;>c(Q=aYxJw8n2{jJ_GsXhfp}-Sckz z=8mo>zpwYuk?}imM>FI3-xxFLE5=OykxMg<4=sF~JVJE*&KTlk^0;i;DaQ1E)4nrv z9x~>cpBeMe`WX#MoBL-@H}>1aFDUFj#!Nfa(s0?spEOgZ|JoS+n#canm}k#(={)xf z#oIveabuo4Tk<~`^V=_tWSV}2z)fAliN zxmR#c2D<0nuMTiw2umE|PF&4wbM;nc#{XVp%v)|XW*NbfcPZZ8Mc^IZ2t!!n5O>1r z<}KsaG-n*MuQAK%n@u;0o8uB4gdr?(vbZ(xf9|M2{fa9%as%=qRHj9E{zeE%OEaL+rw5ypm9oG=f9YrO0ko`mnR+cq#$Zt5}f z0PcCmH^TUIiQnG~KOyQ%Wy$;zX53tkk=&w%^8_3ade z*-Sv#0^eae@i#rMuecW}pFbxbW*(F6K6RM$MffA`dB-=x5Z1;?q*1^!}{>oySKv)T^7e0*{{c$`X$Uz@$x;F20k*A)%sZ) zOQW9&!^Efj!jz-rZ+DVhPm~`Z*sDow7W6$UXuTn@528hi-t77t#8l%LSbjR@?qRZh2v)V{L?J{=M-l%rE@Yq zeztteZL+L!Up(|5o-|oV^e4FBY)x{mZsgn^n!7X?Z{l9pf z;!981giTNOd5_B6d$v~^V~m;c2Uk9k&I`X6j(-?)-{nx)@cWdr|rg2L=98A1QoTwHKa zMm}?feV%XepC$aia^J0d_K>X!|5fq<%m3Y&VJfS}eolEwJih!V-S6n$@$E|4%^czH zRoO~h=%d_*W^ls;^@A60aQ*~cqUSl1KltDNH&-rv@&aRS-bS#kG2Bxw@a;Yz2g<>f;?}1 zm2iN|+7mu@O>;7~HePk0hvh?Z5bobf#&4GlEI!Ic(VUl)N{?^9k*pq)jPiKG0WN%t zaO1x>RT=c`XxclcQSYVnKRRHef= zg&{0-XSk07SBTr+XKCyWe>ZPt%mIfR^Woncv#jz@o>qpFcYGtvpEq|hf$k9ZkKS{U zE#^Ibelxz-N9U>&J@2AS` z4=cX|-1AP~n$}Oo)`rwZsfN_)3!LDl9=57rn1FVmy=VZoaD{Ts?uY1isNg`s)q;u2 z!?OkR1?1=1diR*%8UbO}77(XkYb_*Q2(S1{3N{v;qcnQuSLfkpsq@eldUz8D-1Cla zgi+YX73bV6E;w?$Wi%{VTQU!mg@3PpPZ6%?z>EK;JxE)Q^5&HX;_PiPL(JJ$)+fBbv>7DL?GHm8w-8aGz zmiBK@f4DWnnbQ!aAEo_iJx?TU+NLvAhEwMuP3mvsR-@0XM)4= zxO^u#EpC@aPD7ABIJPXFHYD}afar!*ZGXoOFcV&&4f=m8o&wej0XHum@hWQ&Z+;stUAFf8^XrP|)vg(|qAzb8(PYTcje&QVTHsxs9+KX9z_=Boj?QP5( zvs9-#%jvWw8c18VLOqYT=>7rWLZ{dyb$x3`&ObQ6Cg1Y#M&kQlt_}+A)amHMng5#L zb=CPV5bf*d@=MD>X;Z(UecPB&AT&*x0M{-bnTfe_t_$A}1Ka{O~QF&;3J$-P}hIn0zezVvf0EL_XnWO1l;)K0IKJ?=_&eyJUJhMT4^=&0&lfA~V~O;^jV)7d zjNe4*P;Rba=BrQDyf#(wj}_mtyEy&cFB!AX;l^w%KY!!qYH!P?UYjO9?o^&q8v*|^ zFw=I1UgYd^?;P4g&umUcKk7rO-}?(Ae` z^JJL5!jaBeR~mEqa0lGy^<{m_)0h2CJK5p#c(EJO%GyB_ZT?fAEu=I1BU3e)xXqKUA?IZAOuT;L`R(o&k<|Jw3L?E!PR^0t+&=PUg6 z_*?xAg&iGtBv#AEgQQ0)gb3q)2s?7yVyW^mo$`CSpHH5+xmyv zE#@Nmjg^!SI!c4mUTL($O&Ut?)GW=g9%k!bqRpHnJ9)?7Iz)rg2G@zg32vo(o8Wzd zFl~QNy_-B~Y3R2cGQLUs0cUfxk*MSP^lUXeeAd0Ke?u#}z~3(M&o*VDbcut$!IAMz z+70z@-wudqfW}+V74~w3%9f#5XsqOpj1J+q_TlZ?KkJt;ge4AfGkqiT2EKjT{Fb%9 zMEi5#_{S%V`MK&LdmLxXC*&*Xk9qe^8bcA#zq65i8s7**SmG$IZ+{i^ooau1S|T}+ zFQEGz;p$a?!8~Mnk9^zTHgf$F^ilj>_q^j<7N%Em$lug)!+N$)rt(*Da{I{cT|L$L z%WKqMF;QvF#*YBp^G;!X`x~F?eM^ojmFTOr+A1&BYAcMb)rJ70=q~8e1@5s~I;2V3 z^iwcaw5K5Nr&vu7eY{p#`a?OtksMdhGy3?R;8MZ;0{RMH6W|ws*9F+jzXX>F4iXTD zxD9wotCLqE4QyvE!J&e`3Z50bA@KCNa$GiG%X5CiZ!Ro6juCucfL#>qQP2Hm0UQbV znBJWscv9f#5`DIAr}`cA(k8O~ILbe?iEKZP-tjFAm&aer_K$)S+zn~=g^>iFmG$lz z!4!d`TfRhfRZAmn0qW_D`Oj4U2IG13y93|8G%;q$_~vBQGXdJmyrYdpe-(Wm{sITMEFVD{ zS(>C>@RwD3P}q=P`hyP>%o5~wLR*G58W(b;ZNXd>+IsXaAV=Co-p=!1z2h5sgZ`tZ zzVCQ>W46NuPUec_c14;lZD@d&oVFAX;dkA`Gx6pKY`Twb?`)XV==Xqb#+mZ|H_>Lp zx^%1W;Zb>={y5rlw0*pdaZg%-JwXGsRO&(BbN+OX-g3D!KFfGC*IenIJ`4J6puzgb zR%lLz$@~%hD^o_f_A6=7r$ygLzyq{EQ%+;3gYdoXhY6g$OHR-}cQRPzM^vw(y=d_& zZH4O$fJe zBRt@KWVq`yB31gWChkz+0otI^@(|I^JAALT3Hpxc^W>VPIx}rk+U7Qoc2f492jR5i z7qUxuV2%hEG%%hK*y*vJ{^*yo?m+u zT919nQnX*bt5LD_?!!v^t*PaP$nImeA{;CDL0 z1GLMh;yb}T^%$2HX)Wc#~B6aL84BYLT~LO*qI>cBQ#`nkDg zTqD_hBZEf>SUKHe|94|4C$(w4AzZIGd68~NKX|M?+`tzX zKEORj_rC4%EVfL)F@3<;haI1we9HI=<&RIGFC9L(Y~MRRq7@z#hB^Xs&$y_AkZ+lf z#ud|#yqQymzHR@sXw32*?FZj(dV_GxV?mer{Hz}}N&n0-PA=r_*I%&7y1x6KCOkm9 z_(Zo{@IPgw(=+pFxMKPXausd8qA{}}+DpF8XJtn|;(Fmq(IFq|WzTOY|CwWzX68c~ z*Q7s{i@HnJe_e=c@rd^EJ<5lFvO(>*0CiIPO=&Uyz|}xM`d9s$F%T}suL3<^qWH8| zt*tYT#5MJ}oX4Dw2Kwa-=$9BLy0A6+-nkezp!^Bau=jqvkTCH3#CKg>aQHb|d`r=f zyeW6M@JB(ubZu?ncz8p#DgN#3%#U?h*}%UbrvD+y|4%&{U)WN4QDp=3ttjibmrY*Sw7}RzZHE zj+WV2sr<)Fr)Tcw=I>sywc`Q*#yA)kve4Xd^XRs!f86EX&3!_As$B!Wn&WFe{u_s5 zyyRD9KhQ$?g`b)`+1X*1hv!-uBO}#sUVB=3O8N28&qexA$RGO8Qu#1Mv@tK|cak@B zQSMX!<$Cqe;C_Z*J9aWi?q+k?{8Xi54NuY`VUKa8uR zU&>xvUz5(PZbUo3vHc_eoc_BVJ^v#gc%E!;oalU1GG;u9IVg|q?B1QLZ-nuE_yzi} zcig7vhacuYQ)WV=oewLU6J6NPbJ!ANzw~ubcI9&`Gum6CKjVS9@8pYdO7juvnY_#W z8DDn&x}J8%V{-bXe_tk8`o%wKdO&u)`#9e+XPhhlGW#e0-bXmfY5Y1DWr}_G5xviV zXX=AoglmvL^k+OUrg7>B#T8xH;VEA==D+nWq`j2>6Vqwq)46QfQ?JM2KPdxjnLPbM z8^q>2%5&Q2Iou>$c+h>Xq(9@~KUJ0;|4n0lB>0apjkK51PhM$ATeMJj;9|Z+CVONI z?UccG{??NRIUTu><^P+~4-fYk^VVA&*zriOpWruTKjo>4Hq{@V{9c~Fef@!P09Sw8 zRNoI(JLO2h5oy4N$RGHOLjDctvUZg5P)2(we~m5Jx-q!R(uF2y3)+&t{#LI)ize&4 z$Ujw}{HXbi=4|-{WSG;N;-TW5mA`O+i+LQCX^I|8oAW!^&KLo-(+05Z7wRITrGu{? zYs{B^EI6qgc2z#x{Fmu9K&|q_S|MSJ*%)U7d;}Kd`*oOXsRy z0&S8taF!q*@5uX4{%C~FE&>hNST(fY zDtNc2-;eY8=j?Zwer^9PJpX+6blKlkyAtgy{>9ii_<`J?7F}C}v{v*%e_i2h|2g>` z9+1U=*it5U)(-@}5?a1dMmv0j-*i7jz?gv@zd#1)(dGy8bT{&KhL<#~%_vQ!4?x4= zf~5pGouTagefVAXjM>10)dMz2p2ja(-zqtEgb(NzE_@_@W;A(KX(?TRw4ohZDrqm_ z0X^&`$nyifmGWWOdBHl`zUU*Pn{~F}!oTAqBYVeYn#$eN?tepGvwQONKLl1Tlq3KA zm@(%l&7DqhYj2mjGs_>8rCvAC=z(|HH^RREk1j4az!j8Dq;ZR&kXQBW$!qDC@Dbo! zDIX|5jOK;dH259X?zwudo$jnX>obKN{0+KDTx%>Z!E+?_4;ZLg6oEOCen-QWUe zhMVz;+(+u(($NypQ6L{T`fZp$fX=nf#_C>crj6Dyo4;=2)@9w;*;<<_w?y^Z2myVN<=^Mpzh)4Z;a7Bb@6=u27V8KFTg)5jHj2d#33&I;6nv*eI_KK z-}g~D9om-f!)8tl^Jo4gV6F^vW<0&jrQsdzRl;;^{)`!`i9^a7W|Za$>32Syj;z(@ z@!M0YX)cjw6V+;(SEQLmwOTK~%ha?MO4pG3?4NP9;Ldpu z@7p50pMk@4v->6VyQbhM!9NAB2&(y$|Fr#0{fIp%=CKy(6y3g0h%p)FdN3}LVFU%Eq|# z&CfRrI4A0ExdvqK5HnpR?541F|p=b0L zg5L4Xe#X7%#)~2mRK07p=@q!JjcM z>o53bK7h@y>(zNF#0~LO-NRER6XxSEj?P?)Fkdl8gEi&WPa@MIK4@-R28xr*O!wGP zQSVBJId^uxgtvA5viA&Q;FM!lhmAUk>1+L2xWLJrD%R(+jxx^|N}DluyGE^12GHJe zUWj;KPS0lu>U0Xf_Q12{Rj%_HP6u|+9?@6`AI9y(eI^I|26OlPJR@jfE&{Y!-&jlw ze*iDJUd!@A7)JN_(zyc1Q^tEZ{*Di4j!H=$?4B$n2j;dgZ_>{#K?cyq+}212@BlBB z{DSUIbH#`t|6&W9i1Uua$!JHH>I~1S-Wbg1f*yEc zJT~VQ8wj6uzlLCMXC(0jlQ5N$Y<%7q>8*Rs!Z=PvS(x!5>D~<7+E6?BO@KJZQX=UFjk0}3{o6MSV z+kP7e8Nj>r&b&R+rhSm}sQMW70bd7w<$hPUwDR$Mtz}Nmc#UPSrru8u`DgC6w|nML z`t}%MEdQiMkXM!N&qdeAGF{Zu>Z~2W`#O^MPaW^1&3x^ge|;z4`#FVtCv3z&eM~7E zI5Ov5wnTm0=O;VQeD|zg6Y4+XpLCdC#Xcf-&k@m)DMV)sGZupzxd z+z?Mo_u`%YlIMQu{fhM0xjrkUMZWiQCE2Tka-R9B zA+4eP`*iHD>Z8ozw&hP0Cyd|ny>O84*b6b$HjecVUT9-psrQBO0#AVq82h9@(c1uh zm6ku^(oV&mx!9-0mT}qlFr3#vbkW|Ue6ZJi*AB9C&HEz*#YK+n#p-<;c0F^n=$q@3 zO7Rbk_zAzp0$%7-f;UgUeoqs?Kem6TzAM%l4u7)k!W6 zb)E4&il_JXyO)uE!SDGu(!X6_q`DaM?wRlFFYKbEZPtJ@PXpeE)%6E1eDG6;iw=FG zo!LzPgk$X{{*Q~cN-#f`wBZ@v8Jl=rV0mKQBjqaBjH?=CmeU;akNtc8kri#!a4qYs z+vJ0{akP_8C1i9{-ujDq{n(bJQ8K0u)|7vxLmi3rMO@4=r>`c+1Mm#*=X-kiHti=a zJT{kFGZ2RL`p^0I`9wUBmM=fSNV}w@eOi}?;!*B~<+oiIaDaHvY!Dh-<)5(BPyI!m zDd3-U;XR)}Ks%N`XfFC$qIFGmIwf21l<{xp$A}lZZa{g+Uv|#7%96ak654{ovo?ah zaDUl#1=2OVTbx`kB9r|6Z$8rNO$iS+~2?k$a*Ynad!>Kl4QIP+!&c zpUUVJPj=nGIM0#F)d`Zzmm?V{9P0?EulkGpN#ATg^Uk5}V zRkXHmvUq1K(#n`QxW3${JxTk{+no&)=qttlxDUCx4Vzr(=KI?@FR~NXE%^1j@P~i3 zeV3w-dPP!3D!-whIX@Td?B=uH*dtjejh6YB+$i_)<6H@zUJ_rft*dm{zYv?_qCcss zE?dU`O+9XI3iHyKM{Vs^GN3Qlua^NodquLI$mWqpc;hbS!rOio#UU>9aNhSPhx4YM z_W7soJZ=p=S@A0{IgCo=}(|rIMAW(FBN{fkDSWHWO(@B zT4AOspf38{?Hbv>@-KhSd@JTV{#ZW9%1(UQ^=f(-UySdNSM7XrrTJsEVe+*Z!d1q< zJ^Mm@hPuh`Q~ZCrfq!QM;@{R6o^q7Uy1l_y6w+v_fB3&!px^%(W6Tftk{dykno=SztC4uR@pr(N@UwI|CtP!8+p{X zG#7B~Oa|0#RVSri(b6Q|`F7;D6LZu<{^kE^-}*AGnf|R$AMYg1cw@Bw75`T+|3X>e zE4FN~mD~o};y;tY+io%D5Vb>?3&$EHd=oO}o_7ZyRI)B6=3nI^^*OFe{)N~2w5cwv z-N*3b;;F9F$>N_nfaS~97yszO($-*oTD}(}wi&`|u5X3VzWztqbW@MZtGVsMy9e>X ze&OFf%$R%CMu%_U-gS)KuQ1er%pv}`M8twYZSx~7wcZ1TCoISr8 z@8{*uqJ^9&cOxXEI=o z(eB5)dDC`|u6WGt#PjWcEBJ4jM)ART5q6UC@7q6{>iIeQPO_n%;_Hh}2(A6M=UO$h zf6q_$yM%s$QojASnE$UzC$F|fmk-6hueN-x>)*G3=>xbUlZmbKuqKVZZQ3`j0DY{i zO=dmlO+6L)-}BS%Z^*yWpq!@9y%pMQ81cgTyQn_n`#)qSG@Bf1TdjDru7T}Ya|BioZ74T=*N;lN~lm5S5 zzI}Mf5}e@nKC@Mt-~nE|eP_RM|7W59o4WT2-*D^r*^{$XVDC@XRV{OS3whe}*5WTX z!A%;i(nC1*B7hg$4y)JY@0J|G{%>sHNG~I7?6Pf*`7f0%4d<|^PH)#yRQilz-0=%O07z*Rx#G@@neXXPZtkb;4_@sAe<~+lQ z_etWpF!q_418}gy*gheA2K(ghbn3##|Bj-WG9vJM@Wh&&T<75&nBaY3{tNP>-2K?^ z7Lt4*yI=PbM{}h6zlul7xn}(Hy)gd?-+AeF#{BPfgIosUeO1wT$@UHYewuh1R>r%x zgYdiVnKPEp^+lGyRC_qwr={)kE6%5#d=~HTRX-{F%tU%;{@Zs#-aNnYZx}}R%L$k} znAe@W3P@QIWQwrrIA2Rtt*P145C=k21vRx_I47xLoyYvnhL zr+Z}3UvJ~vo4hYYA=vtJyv zt#W;~e+~JfKeEVpWMinB_a)#-a}h z+x*N~u1w1NHq{=>+m7%S0;1qC_q>}7#%{CjQfRiyqH z&fj3~8Tbs0V9>6a4OMi{~pXEQ-5 z&-&JH?&NKC84W1#D~IDY7|`Slo|n-f+WZbN>@UDh4q1vWxOQ}~`w%FijaIW~(-3fl zUj7R~um0&;W~}|OXV!4H#3=XtCfM1*FA~wI*V9;nNpHRUN{?QzUeB4{*(YMS;50$LPsEOT=<X1`u$lNA3t0exZ{2}q+sR()oq!x2-o>D~Vd_7nVB@VuZI?|uCa?wbV%2tFVf zG;&JOqIcN-af0yz%9e7zRqtRvSYiIe>Ust~Tn9U6jIdR>Tv`(phP0t!fypVAw%)y8 z@B;z)C(Vm^^n5d4o^{^L&0>xw^Uj&y&RlPRd*)*Djd?cqyaL6^<5$ZI8b%7BX+Y(a zNN*Xv+eL7t!5xB-7E2?vk{{U5V&)iU11Xs>w}^F0%*|!) zFLPB{FJVFVytDhSzbJcB*wlr6F%OD0KBQS8C)yIw+;JI2IN4uu55bdyqHN@AnODr& z9q{PaapZi>*ZiYr+&p3CqTyqhhsPXA@{8R!NVb4IaL+sD!!TzW{#mPR&zOEz7=Q7z^@#ubO!S@6&3hL=AFJarvm1hqPKflq_PkvyY zEaw2RPQuRP56Z2)e9G|HeB$q;aLkEjp8)o5M^@pU8l=a5`uHikUd7`GX?3*21HAN0 zMq&I6-{JbDPFt4^HnXngFdgOciI)k#tcQbE))T;&wSDvo-64*4?unbpjQy!t6U92B z*srm+%Fe4=Cz&2Rz)PQHq`0|kb&owF^9I?B-^8su^>c!e3;Bw32U$bXl|4zkJS8h+ zj(%8c!+JNrb`mK!~FMqD3yzsSCe&GCv zwU;7IF^wI2CN1VXvu{ASJ`O*{o(*;me4~uu34c`Jx0yeR!sGLw64ZG?HrvPt-w{Yg zbiDjG`Gzkz`|npC3e#%mKJz!!DJdVq3tCIo5mL?+%C#!_M6y{`&ym+9yi1@5ciT1{+l`SVcluw7|Cw)B(2mT^LlnlK7nkIBlYrny;!zOx%~Vk zb*sg0sK->)Hx`_Hqyy`dq_M(r)Stv-4D{9IZQ9U=0@)zHqYH6mtL$OJ zx>J8qZrL@M`UVZtPEnda5?vp0&xQDnbi{OZ?pd_ZH-Ikfxo@N`8qpthRDZFy51tY} zVPq%^FQecceJAt}IGT~a@^M&>a~@gYJTRrt{utCZx^kANr={7iXvJ=xK3=rEB46;^ zjE77{l&#^OU7Y(&oggY}Cy95)xNJT{KK?%Y{h@yA`V{ZfLw&uAbXkv4kUR1@-)ROJ zu`a-_2SAr0u5R8V8`YJuV}Cw0`+5}87oGNeQ?=E&;E8&Fffq;Pk1|=rviV=Ve>lgf zH1YN9SLQGFl(7Cd-`fvqa#5zTzKXn=&`(jX{gGS7GkrmM+2KgA z`@-bBWNA>Q(PzY-8TNW3^VQ-Z2s>Z*^k;|mv%H?^OLyUvF8KbcJ;s(&lQgpNwA0kgz<1N83gd&pH3D&;RX#j2MH- z#~F~bJ%csNtE?MiFS?{HMDp>z$`Yx10Bd18Ubj}7$ep@OSVs=iE|ZV7q21Kxf5B2{ z?G9dfAIJw;Y!t|c@u~bfGNy0BU-avw_7bvjBKgpcW}lz%VxLd;g-OacNH?UR^j_)F zZ!qKcN4&4&efork#e9s9V{ccT4!D&<4oCLOC|<*iu9i9OMZ_`IItU*V)LHmr*w z4ZDtg3-P?VYYTb_RmlhX==1RPA$SeWG4%8x6J)cKpx)LJUF@~yFYGwl-^s^!ze+1C zzpQ-VP49Cbp>o1sc0bwe8+28~nUD?o4eP+jopsXGL9E`D9&KfRRmw;B@fV?u+w!OA zqmc=+86}`hbL|zC$@zXGqG8I&2H#cWrA$7Vj40#dGRE$M`h^x{B>eWw;5$6$`jx!d zZzyl$WNEb{AM#1K#}VTvwAF(8G%`Up%%jL{0X;D$$3?#`^@Yf{w=N$qbJfe(^FFMj zu%FIjyEc)LWW&BE>=ETJTW|QCvrTI^0qyO|$L<%QHUSs?j){K8%OxAyt(Irxz`ito zT!8!;?VC}Q4e=`MCqE;QGJ`tq&x&Z8Heqp`d$-F_kuSP~k zJMw{U_T2LAZg`%wdxI@7r_r8Ig^a9kK1h0==O{vNi8fqOMkVrLt|#Y?ab~HV%Z-fI zQ5)$eb@`JDI$*3luxl%G_IKcHTYu&4mi3%G!O5DK^Cd$&KUwLuB_G9SjLo0X3(twY z1nFDOeKYc*pTb|174YQkEBRX@AI`)Yxxd>7$ez82j*-zvT%A4~lPT<#CVY&2u#c9% z;&v~xVV*JbtVx5ku!pwfBYLpua9<<(MIv9q+(ze{Gy9?a?Jrw)Y2I&AF7OLf$mf{- z+?;Xt3;M~|vhd=K@{qQ)-v^WQ>|S~Y%a-=3m%F^j?%Chh)=!D6G*6NI?3xDIH)-@) zKGIcKhCOpygM8}kQKf5nl^^vN_4i8I_&DeL7_MzY9B77iyU)bEZeO9}_E!3mx6N<* z<@{mxqVgBx>3Q2xFR?LnYU{R=4RJYxnzhx;*#~!-d~7{K;VbEvp2BtlXJth8Q;Z+k z0(Id^{H@AIe6aT59e*?C=mXq*bt@yqr*0nZ)s@TY1!rT}8ey5^{sYBbK{)){k4pJm zDcW0+&(%IftzGJ{>lft^n3A;E`3Om{UDoye}4KWgml+S@_&hTTT#C4 z$S0E#XJ8(v_K)4`2pI_nb&>jkQx>W2wxwLOOEuTzA z?3MJjW8694b{&vpge`G@r|LPZ3#-~gsbBI@I@EoA8`)&EF(*Gcr5M&cW?$lmVCm3_P+CF|w4QGq)a+1E?)tINk_)X=5 zy(ehq9qoO_cqlWu@Og!C8JAaRUyKyw?Nj<1{h1ZiDd|6$excx3C7^F%8=x)uWOlUV zKaJV>WMgjKKp>lE?JVzNe-p}v`zracrylL%D!T1hx$+g)E8~>kK3T{szJ0o*SNjehobbbC;Tz<0db`xt!!za_`5xatww(AW_OA|CJ?L!L??vBN%kWE;&EM{a ze45EG`X0&$pF+EhvD}vF&3J=X+VYeQ=r#l2ze*qUA;Ej+(+Jxaz#nGzGitxAeG&0h zW)JPYM?R!s+h6cS+I^v!I2ql69DM&g@+pk(_%QSvj92+Y`t8D_A98yHz(c!yw;CSY z>_b3W?b1hhc(Z*Y$hHVC=s6tUDUJ^+EPY$_A+T>N`@6OaKiJ=xZGYB1*?1X}25GfR zAK~E*9`k;@x{O#86pjyKL;DHpZ83%2@5szw;xqdKU9=r9AN$)E+OjzCD856WT#v_> zkxyZM0(G?;wsiX&*!BMd#p^(&bFbqK9&O#dE~B#f3CO50zlHYU_YRSdZLvO5(CI+& z*~fI?>AUJ9fXB#wj@L7?un^4wD$I`}?pXEFE;M^|wJIyw4tx8+TO^;!lFQIgHj#Xg z+0lYrrug?WcXNGP?bO`{tu4v#u%|eFIZ<|v^0MJKyn^=)^D`Mk`NqgaBcGA4_8Jw8 z3)O9bb<+RiHV3V3G|OM2y+?Isc!}~A>oIoovf(#% z1>cz~{R=@MpIxW<7elXDNM$71taYW^Yd4Xv&J(Z8dj3dU6gOoI(k#rzxSzg+!RkKO9W=9FAY z?9NMoN5<6ILo?5dUUr%M_(qs_DeO9zx-l|ja?Ph5&L(>iGH-BKL0&J`y_J#YryIXM zjp+CNdj5fcF_Bz8;XOV9ewf2^o5lgD8!$JHGa?TCp35V&8v*hQ?@rvy?R|Zn#(^1M zC9ai;@PxRd`$>8pDS)Pe&G0->S1N72qyOkQ!Fa(Nf+Qa{KV_N(L3@x{n>BY{k2+@6XPO`9Wj=~cpLc-e?DJOWe=%u z#33#?zy;2Y1f(%&>?M{<{G6gSd-qoTlK+^qe~f^6>GVlW6;RHEGUJ|ie8bNYmN;J! zfCF3>~jPFU>F$$`w?Iuv_L>{U4Iu>y}sibDJ{u*n78O;|lh^mmu1NQUBb2nu^T* zDE(toP5lG7_|5iotc}!tw$Ed&NB7wto3&MRpX~=(TOqpd)ic*Jf?jTPaX*$DT|)$8 zxzWY_C~kDI5$7mwbiL^}<#b|Lp#Mi@smFR5o4t?q*qgnN^$%-v*BKQ?`%7?`7kdyM2WmZ1ed4ShjdTDSV6uI>1lcx1Xr1l$=)xe-<1R#3U(Jz zueeljhhUO`F?9Aaj(t7vW(Xz==sUbzaJ*m-0sekv0l1U?jrWWCRlz%B?jI9;Q*gcj zSyM*L5rpMOEc0g1#0AIG0@{KX2=*4NCwPY-sf$HP4`n>+J!S0%g2M#V2a(Y{K{J{5 z_dE6TX@b#$BLw8L0W0?hO1I)EXrnz@t+Y5*9h=a?-3;F9w@nW zBApT*R@Hm@L7Ce;SI|GX(Jl<3zxW(Y)QJxfKx=~@Iw6~G;z-e~ckdO@cl$2^dB1hJ zBVV<_nID?ZHK%`A{X(o!D}dhFdA5p^hgaOh{J>`ELnE|8^ZNvYUJof6^^W!>eui?d zHMwW9L*}fTWB()e_hElg<|Z?rpY<2))xy4dtP8iGd-hG>8)4Whi1Vu1JA-xNcCBQl z$2Rl<&D5jtOVkerr5;jr>D|W#mkJo~socdT z?})>iKX9;C5uB`nCJkuH^ONqI&92Dy$rYLh;3mtz5A8mRYAGz;aA^T zv(Mar)}n=Lo?DhLYuVlq@C&qgktS(F!y_6Ourz11RnQM_7YX3Cz<-&Xy74|vThBd$ z+XT(!zO`FV$sPrMkE}A$u`dDs2Oq*-F|09RO~TVBYK^SM6Q+#JK=-UcWSu!{Qz;u* z!;k*~N983Qvfhq86zm=@@`o*y5w~YN52y~5W+6R2Gv>-zQMtc?AKBIT9(TsQUB6#p zuk6n>TVr|CFVtGwgWWniyN{&mJ9f=4HY)IS9RJHZE4Q^Zma(2IcPW2augiL_*%})Q z*UdNRL^NR&loR>hF3?_XQ}7J$g>h#+cf;f@PH+dXwC?eT(*}78ldm_G z^5=L*2FN0pO*a$};?L4MRKGI?Mc)0hc%LA@${xdSyzIFv{^DEMC#`pH$!84Ns#P@oWK$>)`s0g)E0jI=ls9RAFW*6Zn)YY7->Bz-vkj=Tu&&qyxLpA$7Ja&m?$5X2>qj2d(NLjH7${ za~k^;lrHTYY$WzM?1O06`>P&QL0_Xj2ZP*08j!8pbL@Q{*C*hac3s6jKFI8VP?oL8 zKMb#X`ux&uThT?EpEIb!3)xe*UZ~|B>p;&>9+c35c%SxTrz6QJWlzYi&~I9$1BK1= zitfof^dUFmRo%Zzvd4Z>@fW6d@R0FAe@M8G9d?Hd9@khyMV*Lw7=`hJ zG94&fD1XLIUTKh@WdG=Pu74}Ed-`_SXUd0XzZ>@Mu=|iLjCv5wmWOTht2Uz5f&3}$ z0Dsnj=YP%w$z=Od9U#LIf?T#K`G?zU;XH^8ew*etCJgMm`xwD~x5vI?(rAKe}g} zym2mw(htwF@afyMX_r8EmNxYs_KBhnYTJ%_4!`?wgYFj@OZHPn%C{&_b7ohejMaDQ z)A4@cl!H@_F6EK2Ovd$d8CS@ERfS{xIhUoqm*1g(oV*rZ^t0oSV*iKyJ&owVo*|?9 z+@RJ0vKQU9&MDb*v44L-{>VkLVE?&SC)*(TKgJPC&Qn8{4+=ggusR6k@84y=*nZ=9 zxom=QyYQmlm@+Arz2aLwy!?qnI|d*1(8mU;4v@XGy0AE#%FMV@<9{o_^Mc*;~Z7G`$?cc|NR?btc@RP-KV>-I^ELqZ) z!9L>lZk7DuBRn?;KJ9royGSOIS%VzioO{aF+z&8Vt2Lt_B_6(nmg=0bL0NJbFfX^tK<5DGmWQDH@ z&&_~8WQD&d;q4EK_clSS1KMfRz*zv*c{xikyy#2j?1vKkHhz`-Ev`3Ix0C;(pQ{Q_ zftHxI{ya=kkRYGE1C`;pKC9B!Ak+ z%mMe`?Jxe#*7xNv{AJ6RofWQ$yi)RKEHAbb@G>T5=ioHK8PnINXJp?ayh+I~VAR(`xxyvbSd~-4v$m?veddhe>8X&~u=dR^(6pk1{+w z!xyZ`&ejhbWrd$#PvCvfH*{ZY?}}FTeGcuFx(j`=B|0t0C}scD?}%&n)qmXa9scL6 zAA3f<(r#I%jl8Af3MXd-%^VY^=sP7;_Co)I&)P<%Nz6%%i1NK(WFVz#sU(i?xTOxy|^3QZY+af$m)~82b3j0=j z*|d^oLm0{4o^^G<$6Eh=b&|`2A^v{JKjVk~i}12%$!?P51DPXx+PtrXv_l7S3CC9` z+nE>8QTb;yPu$VX`3vdho^}Rv<3ie6zL)InSz4hDWeL!S$Xb9<_TcTW{E5%pCi=zv zMY&$$PmwvYKTa^8^gV!wayD$2(9db-rDl26hb{YU$^Lzs_|ENIU$3Xz|Jt$SZ)LQ# zm^N~?XLTtL#TWKia)x-n<&VE)z9QwMzmOqgmkGN?=06l%+8{&W;T-hvvUMr?kG;&A z{I(+h!rm%MlkqalQ9b`Z2MN7kO(CY=>@ zAY9PFS+ik#g*aTcZMU_;Wb~63d;f7J8hhdUv^yeyr9nF{!~5g@2ul zAK}5~82gX=feCNVZ~nBy36045KIt3Xb8gx`M@u%~(6>&=9~|^MgzYfqfz#KQkpFb0 zOP_RIj^dsEu&~dKF$sJsxC>#!c+q_;^0((G-0SvgJ3#WgXWhCjq62%5@o$Uu0A$Mi z1AMA&+slsaSnUgZ2`=TGxNi^H-y^+!=TKwbrg25~+k=Kq%io?Muf76*+4IDPCFS2Z zuT6Z@7sk1^{$edc;tbbHU9>F!dn5+|XR&=_q%r^eSfB&Ri*u6c%Z=xSGgiV}YwFwn ztSnD2ev9)T^L0eB4P*~)&W2m|HkT&pHkJRaqCsV9!giDVW24w=IF7~{hAph)aQGyD z+UlI==P&$jJ9U5ZNL%v1+sT7-;YJ*1%pKy_+a!G3@u{<=1IawR@J$VR(L2h&aDFVf zz{#0&ODhe#Z(^2aGx@U?$*xlsj#lzM@{ij9_KarPv@d@u@gV>0dU zed2;+r&EIcLeaB_R^+cRZOdPMi{TtO?4Px8-X>yrE*->>K^ zX$zK|_fGlSQ2(Udiq9Ztj_E+k-^*yLUl?=qWvcLSI?^E^U1tEXrw)roO z`IG8zp)aD&PkW2HXSgnoFn`>_n9WpY%FEf5?ei`n|0lj%EYsVSKRyN@8D6vQ674F3 z5_KqKPaC){f8FC}+0P}s=npFKUxm0HSKIZUG8tuZ+W4Zm9N`R?yJ@%o^VCq8>~hVvG(y)C}+s@z_26B0dix zFWdf=43fUt%P9O+UGSrq8FT5jMIB)GzuVrONz$_H!P}zzTjpD`v3)n=0?DZ@NS{^0 zcl-Y5-6a2p@t3#_M_Ko*d=PVk>5FR$CpONN?zjArnRKwmRmS{!2kAgM1b(%XF{@wg zzO}5&7UfUdb=oPd@r`Vl-x{{ZsfQ-c_a;C1@fYU3Mfvxaf5w=Zcj5EBm9O)gQ+2tDtdZT37AYV7DR&vO;FaE+PN2^+)6b=ED`n1IR~ruD1xB(L7LkRr{RtNAFboDdB^d>o7v# zeU4oQ96Y~U_YLb$(c>Aam%UBxu?6a{2TF#0O-JPkGWz-MrM7>MqUF3mZf8Lb? zi}OID+>-56Msmh?iQgY5nI`uiD9HoG_OSHvZ?#RBFIGC9x}fcE0j7^k_Lgk^y>`)V zGdrfeOZ`6gHKFY%-nC;{0^w2mH`oY7_k5PZH(OK=MBb z(&AibWRa-rqmNzzV=OJnzC;J?KS>@c=oddnSupH8mj@S^4K64h$o82R!yK;?pU>Q? z1KX8-i68n^EPtNych_%e%*QE@MbDc?2P$vZ`<*eI-(BMKvDM!Q3TGU8`)=h|aq~Q* z`_%-u2?}|DXVT}4cIbIi=s>bx`*Jter9$@fA*?RQW!Q?$!!Tjo?7m084P}AeSsh$0 z9W3(sKzSTHyK-ysoUUhLpN|W+6y&n!zAsmdL(jVkn6sG72lyge9^jJ~C4ZFhg1>L# zbC^p@A7;O0@AVboVyylELGt_s@*`z3^`gQ$hXqweb|PKLo;oJ=99!0kNAaHm&cL9& zMMk;&y&U`V8{*Ub(gOOCNUwno@+I{#+6VN9EY$sV^7ZuPQ@@9&3ZH{4=wCoK9hJS; zTZlJHhxC&9fVwd45!%U=3AVpzVe&_!6`JW&I8QvlOG*76`|G;wD|CP_N|pzDZ_8!; z5q)-fUKq@JfHv7Yw9=Pm`*X_u4YJ4I<8!)Z_g?n=DxDbcb(G1I1r5H4cjQ_6P3gO4 z{J@Ukh{r)yK4)@=Hu~@BL#7|I!r#Daui(pqg1^^uD6+2HlSTx?^xV*2s&~0gD4SXT z$=DEeq(PyFK<>~4ZO~XzulM|LrtTJz47wugGNf_ZdZvxWnH!C3iZeYhjs|axC!ejk zb)P#uo4-jtWuWpzCUe^A%pHXWXn`hZE19$40sS*5;%S)<^&LbFSX{nX}!Ta`tDibthyO z0y2#u{GQ#jj`i(-cep;Ixx|Nj&!s_H$h!qU1I_SoxnKi91Fua5Gynlobm<*=fiWC> zCF5^N`TO@?9+Y|P#lid~)>Vw!&zP?t8+FiSqF*oX-cYGs^-_OR!Z&Htm?E)Gf5U^ML`veU< zwI`K<51pb}?^YEYBw#GGFvm;Ju?&*W28{b>S7lnhSdj!b+1A>K4 z?xChr^k?tht>3Q**lV46*nO2(r{Xam^BTb(g7*j-@82q*Ogl_)vjAPR z?4K02ukt4i(jraLW_%D@7Ad)>?4^uHy{CL*Jpz03o-d%xo+@D6bH1RjvL-G#zy(fl zlLl!e%T&Ejk-kX1gU1S3O5ffkz%KDqKN4IfKz@@2GX$>-Vx91gZ-k*OeyQL%0sZmd z0w=gj(_Rol*4naHNp}^u$gG$9W!yctwVJ)3=k9xWu)(tkz3#n@Fv{I8K^S*yBhUBu zBegKr-}mHbETUfjUWmf`vHtxKRYd*067aW5AV*)Tjm**4YCYk7MlrEg3GZL5<5{7% ze!on3KeqmUNZI|UdYC1G`}*6(cMG)yLY)TpON^~^Rcaf(^)SnX_o3~DHW}WBHXPoE zHXr7NLLM3G6IR~I6OQs%p4ckIyqPDUJewz=Tc3c<;~7$$_cKJR5GJFvhx;tDy>(RB z;DOIsLu8H;)Ry3HRqk}@VIjP#e0%VXGGIl)P{B3=<~N-pxJq!FV1nQo0p)gF#`tIY z;hqybDxj>nTJTfBw*}h?))xG?;4OmE^2UE#2t_@pNcM6p`9J}!yefI=8{>fV+t81|7zuv7%7+h>{^NA; zH~6043PuQ46AZd`$pTSuNurWZX+F_6=6G%?p!}uZbTH~XwgLZ)Ej%drnP4ly3W8Ez zOT@ECzpjwSyY%hL0{RZ|?Ovt}>n~-*wF1fq>MKb*SfrI5FjvNZCY!J8cZ^_`pu75J zJRyW`r{~sujTK+;_@=Z2@tv~$|I~ZRc4WhtaR2r0^{R1Ezn`JspNhSD*l)67?;pL( z_wkA2d3>Fq&G87YdkX$b&>)i_yDSp7DIWE18NqM?`$qIHzoVZ_XToLo3}&xm&gkp? zy3VlpzS}#NvxT46yiv}leNp4;A@Gi~M%ibOeP)Tn{(=)Vzixbw!wGJ?-=os<`)%>A zk1$*Dt`lr6pk1>_+Chphy<0-{cqQn|=H_Uy?nB+1rl&!8nhKGh;Yo!k#6d z{W@E|6qY!|1qZm;>lWOkflb)6144V~D<5l_XC(vbiL@OT85>CPqIb&+MhNZ`w6AyN zbDRIJ0rSlh?>tsQNfHr7k4`+Mk zv}n)ko$c{{hh(+AprQW=84uP=^v3#syWTN3jCm5R>t1@Ne$M%toPENXUE$dc?dX>? z*2trr^T&A^a~{%}q?*S%TXR?opm&_-F!ym6ma|FvoaQ{yJkgya1rPAj2RlG!2Mg#2 zE68;)>OZDY&+ikQC7_<$n(njwK2b7bZ~N4Fi&eTu*XS94%z5&Z&zu=Y84b=ywpLla zh3XEQsQxBD&DnAGSNG#L)i z**F;@OJq9eY#^pd&l?GD5j593VI=E^HdK522$yfo8_gw3J)bkgsRwe7G2DbFF+6SH&a->r3faLkW!%)?bABpkPup`GTK5IW7+Eh68z^bx zVUsQE9^Xk{YqRo`vr6f&Wv_pG&J;3gJ+Cyk!~W_$j-UAj>K@oCbrR~MRTuRa$`I-__f{@*mxxw^6LsRKTBSljiW!LRq&w&V*q$C*Basx#=2)zc?B*|kvLK?mppo#b`GPWBOo zcy+&&;1EIeTn(@LA4~Vj+sVt9d%I*lq&0hA`1Bsy0Xz;>J7I*z3e*Q(b|x7zds?y! z&)}8J%Xmi@=mgz#)CNL)**)VD)&2P`=$`(P7cNu1_fz7DdVM)>i{>}+%vqE#UMCZH zJ()XfzG=e-&E9>!v zE#OoD$7)<#5@^m(=@2j&l;tK1Lt#RkIo+5HIpz9cB8L%dAdLv@?Ub$y3- zZI)@}=~U6MFn&`$pkK4f1{k}Zyr*Q}++U(2bd~F$`*yD=KJ)de=WK~C<~+>4C)9ZT zezEQ=@(niIf(;)(Umlj{d`Vx@Vs5>4Nh7DB3B@XIxX)cX&tH_RP;z zhN(ZSP=+n`{|)k>efZojRVREclwkdS#vfdNQbCSs-JBtvEi1_VKr1#7hR^PY>$iHI zuKM<9SL`E>OQHpoX~%FHoNUGx!7{%RB_EgRMs6xNtj`G83G z*vwZ1vjl1Viw|`B^50Wbx;YvXcSz8Q{x#l3ordu-=6+avMlNM(Eh_KDBfLJPF%I+y zJi2{aMvRq}jgOOe8uC@6jF><6RY9Krxi7n-a4YM1jG$a6vSEBts;puj#1r3A+>}l; z{l7ZN*$wR*`U~3V^Dd{UirxkN&Ffxc{=R+8T7snhGg|2vr|ukI^chV%Rr1AmR`c~Y zeJ||4*P{Mer&!*{D;+XVl6h_M1#Qf|EY)YEf8sND`souCC$1w_^VW>_!Sfy6YaDFq z52btM4S!YYUvZcl!u)_#U4StJJ7z3-R@lI+`nIni_W>#Whu?L-l3d^ z`2P4F#Vw;Np?~nuFF5U|j_0J`D5Gbvzeo47Yt{wC>lZ5Z4_}hiBcD;b`o5H;-CR^V ze@JPR>T4~755S+7+CcbC_qz(p%YD(ryi4Xo#~0-}^Q}vDpYcTb@BM#>gSj8{4d>(k zgI%}H=*#j7cAZ+U)KvfA7Y^!*sd9j^!pHY*B5yYbpSoNt`ez*RYC+nb;79$HFWnSs zExVuZ`m#&?zQF)9UWQ#8~(!!dThPF%!PZRxvnK~u?26jE2 z!k5yM!ao?^iDvpZo;$aEYzIDD(m(tNA7%Y(PZ6tlQEoo*Z5O6OPSf@6(}D&c5WE|r z`=1KZ@~+7Hwmy1_;;Btg8sFn>LH}@w4KSCsg?3K!G=16w@hkpVTg13ts!uG`Ud#Fy z-LxB@l|7~Eg81V?A6uGF)|uyX1jzq-4&eiOexOu;;%oBP)8+mv52{VCK8u$8b&LA9 zHlY4P`aBn!c>>~X{ATi9zjO8*>N<7bj{cD?{xwx^q8`B7=qBk2RGrbbsAE1_4ggR?{Rf<`n_AZ+R{Jt zsl8AAIOPMFPt&CCMO$!$Ak?|PXRP4jQXOWtmul}bZsxos(aXKTmMRjbwjB&lDuOdlqPy$f5PPwHo&|Q_Et>iA?1JCuPNTx zGpB`qs5;&X{o~uJ=0?)DknB?~qkACUiywTGZ4=2(Qy1%jC?n&mZT*WM);dzY#231u z53Nbx$s^J+-Je! z--OR%n%%Mk@xqw=%)g1S65Z3s&zeu#f$`NB{Ublh`nWF%+~}xDTM!-Z9_gPt;hBP@ z%vkrz+UKy}((}Ri9%I&R>7qja^eJNB%yp?+FY(I1MbmC=rdz^a8Q)Fciw}HJ**G0C zLci=81+HgK^HQt-_DTQp#k4P8zO9bO-=QOPW!EZ~^UHkkaL;P`2Ja~4SLrd<5ZgEH zGuE}VmG_~k1^p9-^UJJkcgbAJ3fL z7_v|LhbMG$vhZmRec_T1ns$o&ULlh^_3hmP@B25=eR{7|r9-=tx>tPJ`i9ygUC}=} zl?^aIqO9*5dRR|p`MK-+nrbXw7Ws7HmT-y>E3^iZ2P1C zEH91U)U6*awSk$gy>0gkDzl{o&$%2Fhkgk5EvVYdhw`YUzVB}6ANtj{v}1yi36KXS zkEkr4(K++NP7$z%JgI;7B8X+oIyL-ZpUVDBf9>Y~aWQ?8=fj(*ZgO#B-PDVMJ;j)Z z*u)Pu@Qu%89A(Ne={_%u{|%Kxf0XV&Be{u|l>7?sx}<+}!2D_YV!{iZ@xDSw==>*w zD++W*a%N3hd@*;Gxt}fZ9pSTSNfzzspL5smkvvbj_pDGJN?o*lW?U;CR1U>Bp%HrjrE;Sn*DmUxeBR)rML2DP0u7D2xLn_FEepeZ zgVY>P+CPkS#k`l{X?Wj;{y78wrp=8xNbQ-i>ht8efKSi#KR+WoE!#towk!LMQD#)q z3@(+Y^mV4@+F=XiEB5tbj6cQ&ZU2xx9wpy+v%VK-?UMeX;nD5V{WH*M*Htv?-OKP6 z$ud3Wm&tYJU*WoVv2O+a&lPn`k3ap}j{X()2Gtcmp#1jv(~SA6e11W$@aFY)N)x?Z z;l}4GqcAFoqnIZW-b zaYY^RG;_3gTCY-1<3-=JoJNl`lPTrv?7JKBvY%PM=IKLoi}inGc!T`x`&HJ~M9a4F zX`|!3mCp(QNDNqpIs|j9KPwBXlp_*|~ZuCsG%6i?Vto`Tox;pSF=*qI+nB)`8SN zc@duCi#^N7_f+ct<)rSBB|1{yLTbJbb?&z2d&Kt9SN-4Pd;or6*m=fWt2#)kEWifn z2dvs}Zsr)3o7+l0suM78DsJO=SyB(cZ>QRkr2R+b^DWOcW(jmJx@w|v!1b@Xacb>7 zeE?1BY4fY}PrEiX-&gRWE_ zV*X)YX|?e>q<`eSzUuXtDIX_oV5l1xtm?P*x{iP8M`o>Fst=L0uH4#~Psk6F->u%s z`+dm&wk^Gj+Ub%>UuA0bFFC|lzxBUUy6LZWk z<)0Z-XI=~CNSyCU8<>7P1sYA!Bo^O}q;R@NwkqC;(Q|A**QB8cuhC{ zQcl>pdTTqI@xH|4I`@mltgbYY`97edo%&zy|J9G{(`)w^KSf_pe6`^J(fzDsdgw^? z>(qGn^OrcElZ+S3J@woT{UiT-jal_NW6s=7<*CYkueY2|*#K+kQhgeXadMuE4XbcI z4miLCPH>Y(ZgXDe;jip)K=m(LsiW92@yGxu^O~%iqWxFe|3lj`HD{eYOH=hCFSDk< z-O@jLko@2KCu2?>k=a0?OG}s1w)4sEs0+)^A>6C3b5B419^Ie1r*Pira98R+OTSG2 zcD`mkS$o&-{4W}5o7(y35pL!pHJPJ9{||kDxxMH2!pr*WS%I89dONp3eeQAHD36=M z7ryJJ{xcoC`zB*fluj9kX{Zw@efrGd1N%GMg`Lq-0ddYmMv zKFILug#K+mt~3xMv^<3Hlx_A5z_@x{E?CU(_mPXnocbRl`HsQ&LC?&HSe z8f-xP(Kfd8HbUBTPuTlZrjFWAIQ}AB&3wMseU@%n{--@Tztj4cEyG7@pD5<%Hu2Mp z|1bua*4NtVSNKh=eOD)JaUaSw-friAuMgS4fBw~&BfstRnX-YnZA6%R)t`3wcZ_-G z*f#QgkY=g=mH)e;f5zfd=M1&bPmAuE1CX5mfq%DU*8HLk&@VQ5gv!Rg)>#Ki|5<)q zL3%v&d&bVzqhMwXxZm`-Dl|yr2f$XbKe{0KS*bGO}2O{$=`nd z2Xlau>;AyazBBP226k@Ak^R)a`pr{qi+pS;qnmzK#!`@JpY)OGuf zcdlp5e&XwGxAZTqfz&_#i?c#Zlt&q_d_q2~B9Hp{U&Ez;<^nd_iE!IBCew@gpC{V~ zu(sl;e%v-FE!rgmrvJ5mD_l=RpEUP+GpY1G5r!Ds^?>sPyy z|ItgP8}$3NV~n|V17`#1{?-kR+5LE9mbty3y3f*RNB{V3+SANo>x(Se8!$D#!P>~w z{InpS`}yDO@%!iCecca8Hq0O4{Of_bx~l(7KX19inB7h=<`(Il`C8obu3z~+u(5XZ z-z~W^H?_$e9l!pAH9$X4>OU(J*t>n8uCD7puz_vG7xOljy0b&N??e9YidpvwKPh-t&}c8J1K9ormG=X2&G^0imik_N-(pAV|J~4Y8O|p99|#$?FhBb_>3S1^ zU;q6s-QS+nzkCRNNX(C8jD$LSw*dUiEwcL0Y;jT2KjX^Oo4X}H@FK(M7doB!Je1Ju zoqD&j!0VqnKil z`+@Y{`D2v@w!gHSzfqlKQPRK7kKL4=#~sPg>aT7O=s4d03H@`nW4a%p9=FP-y7Fz2 z(*FXKV_*Zc`_~YJd7t}b1?BrcE+E>`KXa^UQ+K3&URH1G)cdUd2hGqfnGQDiooHH4 z5bK}kuL#P^0P(_nh=BygWLW>Tu<0L~p?x4_MOxBd70~BDLXgru?<)6yrmvJW7kg?P zdzX_226jEsnC;Y0)93NHPUY)X@hJa8D>OsP;wz1>0<3GO4dad_201nd!&DSK;`)l%!mB`ce6gz!6NH7 zIUV$0GrvK)tAf(=A0iv5JpTnBaMR|_-rAZM^(NO*K0mP2a!~#ss=SX*&`pI6T&Hiz z^IszU;{)gmNY4wGjo|~BQ?>LR@;#mAXEDCEWQq>ZMTOq^#yNg_2=aO#IuEb#o9-*m zf1_SI=99*3sIlk8K41an0p)#kfG*I9^i~Fc*SE00H&lIoAK5_V`H%P-=EW~G_3}l{ zuc)1|{6CC2MLKBW_vcEl`-QsA6&~G$VRVnZj1eSl3VZvf)`=4kFgf|`)-gvR}6KU(s}qU z44d6EKlm9zX*s~$S@u3!oc{+#2JC}&yT+26)cKg>v2CWqroO+z29^vF=EuN)$ z?C)x4t>mIsC+{Xd^7|`kJ>!{QZkq4W(Z2;l1-TBJ={x=&#?9_W==UW-(gx@g`uEz# z9C2Vj*UxlQh6^ih>7KPKhkYko&s?H|OgF6Qr|q8Wp8LLB5su~ce2yTgf8OH*SUAmezRQ3;C28m1qB(snl=*i{KWm0M^Lp&-Z-^_q-%h_%1*LufI@u4Ey;|*_ zn2T+o&w1dpXBqPs$+89APm@k|$aK_^yzgx$!pXeRg9Nh$l{WB~O^w<5jKwz4SO3Sp zqBjm}N%zdzI!sWQ)9dxuiC^K)ZA$l)FJ}o@LtbeEqh$k&{XiT3U%nEbIs8oNzNaPK z(=IOlqfY2N#1Z1o?%${1KL|?o&o^HdP#@^n8p}@Atp*#Otgc6S-=fb)_Vn@n zk094Q_uaVSH1tdxlktV7Hb9+_c0s@PRv2vh>LfkVJ#9Sd`7PGS@+qc0H8jN?((BMW3gAFAZo43fGZD7}a2By0dbP&rQE`D4t8aYM$A zIorqjfj5IMfJXu2_eXup$)JsOLjRKd8uERplYzcZ*Z}o`TfCmDezAGJGlztEM0PIO zqU;OA8*{eE^UU2~{NBr;N>16g+w{vm4F#V+(E3iL7t^HYwFR^dEBgoZ-Rd9vr{2SS zLgq8tdBuy89f%irf;Z;tF=wldJWu=ndcj8ogHHF}9%9<`{C>gN0_Gq!E7NQ~px(<| zR^~G^r`_($gB>i40Y$MMjyK@Bt(!Te)?CY=SEZC=>Sxa(=pmMxG z-*fx$vSB>~Yg#zl!|uzru-HMScW8!ocz_pp^t^@qR@^_WZ-)vBYc}-USM_u~UP;@K zKI!cRcL;JlH@o+3VEVz1+uN9)^NsnBG0Ic483&s!WIBg7XoOa1hIaV$yfouE_?z-^7=SO_om@|~WfB#vX@2ojEobB%IuaEiM z^U3@P*5qy@SXQt|>OQoI6pwnx8k0Q)V+Ad>6&23Qu<%R&sV^t2O(WobI9IX9d}00F&*T0Z2X&ocMBTy&bv3uRmQ*G zzf16C!8HQP##oLE+w*ksaIN4g0&M(Et@qHr%Vd$gr|*dIq@M~N5LE6u?6P3*1sYrzP?YJ!IT8@*es z_X;Bq<&(Ilo=iUy`j; zeT&{xkJ?1Auiz}fXu+d`=LPuSmc}0yuF7`60WNTYn>0v^G)Ws8pe4`O@qNVB;>R{6 z5X-aV8DG1iV5neQ!M6mb3a%F1E@DYNd=K^^mut1(96h8;j0@Er5a;1{^xwn|!GR>aH z7Q+u|^1Q^TV)%yV;^)OrizTpVNnliwod)|K8-0(S8}e6gG5j*kp5y!;Kga$e_9yXk z?2lr9)$lwjBv}4#Z1|k;kGDc30U+2hgo@ZIB(;p=iGkuy)W!F{(#S&_vfeo`um$!pYYhm zFK;&GrZJx%x%}5weBbo+Ll5ykY-2ZHZ4FGke%3*DO74$v+=+>h%xbvGXz?zu?g|C!f9HXO=$ssC8C7e%+Jq zfA6p%JDjl8(I>sU+p=rd-gEk>`wpJ;UmNc+bJ_cUI{czX5C6+sM!$9RQlpO_{ML?ucq-&Q{ zB$Y<#Sdea|7EnP@8cAUh=~_g;EV(bg_wRe|xu2PH=9zPzndcHkNj1qeu{YgqqL756 ziAGQQ-)yr8Az;k9@i=LmDh|Y*WP@x+$}J|jJ{l2w1R9a9qQ(nXRQUrBfCq8$eH1jB zx_$E;QhJ%#5Kie(>QI>N%WtpNzpByGX$8~JY2-9Pv-=>>b7_PGf~n%i{C&Ji#B38% z(@k8JSQVt2GU5Vm{+dDeiHMq}YGHR7$&QRd#Zd#Zeo?|18xnD#fZKf=$2QHpnwUpj zrfCeI;nc=cARtXL0Yvu?bGfS>VaGef93&jXH;HZWe$%pXc|?Oe{77V;+i)W=n3xih zM%NkQrWen3B6iv)_@80t3zTQqbS{w8R( z6KenT5gKoPXY+*jn2rZFr{0{0qIEkcD@ z6u2l{*rcF6>{39*g->by%!)LM?CzUZTenVBxuB}#4$vzGcer0x81owxH61bz2C^l6 z8ykG(m=|rRTnQrIWN;w4qL~v&;o(PlngZS&T-bvJfF32k-#IWX=n!ppEUl-toUE5A z+d3hD6M$T>0(UCn*WW5B8e@CV2=$FMFW#fP;@z)>6JM~;Oqc?ut;7dL>xx(y?4TTTXWTtmO4?0qX@60o%{*WZl9b#=y^P-!2^@k^nZ2pPBi9HncOCj zS=VLAxrF*x$>pnEJ))UJfHYA*EbMeb6RMh!UA2F70La!hzYA!On*2z+)kAsegu3&N z_TVE2dN-~h+CWk3omhTgaZWRl4?2m0Vsed_duIit%!t{mFZFJSRlBNj$*Qpq0Xsdz96B=i{@`ftQCLYVAEPd!f&cW%<o0X$~%Aqk>uBg814X$i|*K|#6Tj2@s?7?a69ar<9f|C_TQn)A)};S{sd`U>Qde{sXN1e-Ti`cw1Pta zn_J(^j|8<@2bm=Dr*oH5VVj*%Y{7kSMv0_Fe?if0o#}gzbE(K|RGKVyo_^24jW*!^ zM&o|n*JXdbc`i){L3$&N%#~Vl9JF}NX^A8aUmi7MY%;6WZ@m?5)oR+}*$%D%2RCMU z?awZb{zk8RLA2+RMOB|ls`g6s^u-yI{3&Blg+`Ke<+uIVuGApXH3QrkRAJEBL;zOW52xAhBrY-nUDJHvSQ#+Dzq}Z|KODRN410JXv2ZE>c}GOw^`F|kuE&E0#C3Ks zDt71?RR)igRgRIfCRrC99wMy%<4D`#e*v2 zLK;50e1&W*Ux@y248FK{raxCq;ARWGE85Fi@Xl}UB(2!F%MABXKJ<#Z>x?(ldl@>z z+0Cr&GU#7Yqfa*`Ov^234O(Eui|=6ydjkVRHg4DECwx}w0^61hb zfT*^v;aL$8L5U^&vC@);wg0LS<{a~H!$=53D;Nqgpt~W%USm4VHO+z%`R47w;7IDU zF18$1%1zg1EE6jXQOD-A#D1je_<=~feepl4I<1NA;($NIWbcT`3INmb{gimYmh-}v zQ+HF!3r2~d?uOSNo#){yXUXjRlC}c+>xUk~kFY=7+(>#cXPI$LaI!)ovYh|D$bpx} zJ&Nn(ZP7 zc~P<4NSKE+>;1}cPS*UWjv7DZ<1Plue$ZAQ4f)M;6lxE46so=w0)olA8?hRc{rK(7 z?K}FEi$=4QR^z|;wV(ewLy6NaQ+=)%zA9W}m7(w`rj;v;(7>0crz7xq`T$~2UTQiF z??^t*1~znbHh9vXNGuVr{y61VA}XGc(`w}-YbRH4P{K*dsW9lT<(jJ%k>o)BueW&= zt}ThWfplF)1zg_Qb7bx{G|%A82>D-Rtg$4Rd>yf?9H@OCK)|W?;z~!_`rOqA29}d^ z>{DOCL)(R3sdY0(>8uh+DuFsdRW8Bkkg+iBlCBln%5eGBYHx9?mdipvsgeCgf zkbva_Ne9+;!welI5YwA&x6-$C8hYqP5T1VYFkSrXFvSUbG#^{oomtqYLHH0HmZcnd zCKPbGC@IO~MavB8ONw*~^OnguUe7(&c8n~eiyn*L3Rc`@YFhj5_3aLM46MHiwWq0+ z%G!G9`g7PZ>cr(x{f2U83z3rh8y3U;jee4T1Z&$x_ZR02j7Iu>Z=3((LNd9 z6moy}zbt24RQ90G-gPOg{e6k+{4{>j0Owh5LY+5a^4I2GbUt}1{S0QU>DPv=qt*BV zWlM)Vx7G~|&_7hazI+;Mma;NFx`k!&i28MaVo?&Gq& z%X^Q?|0G_9+%Sh}C__b^8gPNKd8n30XXBqe-NeW;zBsfZ*ElISW5KL@W5-KZ&A8za z0T_1Eaox;$&LMUuKqVPg$3mzT)q%8>0V|*}pc+|y{bz`=w=Yg5UM8sP0Wm?aXdHK5 zw^loN3LAhubt|W{X5kh*J&TGN`t>Rf&ZSfDUr_d@QpBYivp z0-$Q$*1@cM;psib33sI)(M!`B2EAP(d=Vs1GSx~5%;b><8Msy*nzzO!PLi}6%bkXv z5x(&CN+pB+7}j6r)}Fb^t`D$eaki1`yeHOa`PfE0R|4edj#o#|eA)k9{Q0};BYGyE z5|_I@+cAhK8H;mphi;1%$yBDsEI)<@QxpGPqKRS-Q5@>|c9W@G(FJ_!oEYLvmg-&p zhvY5jE%m0fHk}3woiFgM(ZXVs-~JJgxD9y17Vk;VY*(%jTc(a!VI*tMy=We_UdaMILAjIWtTJM-mNAPHI`! z(>DyIdk*v|ydM!@ykV}SWc^1MIlNXTNjz%ts`s-d6?GzDHE!c23^o=o=44%JHfMm= z{`|s17R{WX-FRCH=+ZDOFoa3~-yBCqMHD1AQ=6PnG>3z09SD8U`j9@zY8|FGi+R=wK@H4hT~*JUqFH_p_=Fb%5u zRI%H0=ddr0#~7?N6Z`Hs=|^@(iqA8zb?%Rzl2ZKI&u2o&=@?&U-#*Dky^qw~BS>Mg zH5z+|WZtAPtvRR>8sgs_d)VSW4dA@+54ngbmgBeP0+wQi)5d);fFGR$bI!=1z;c6k zVm^Q6_SuH!NDm+fu$BHA^#wNILHcw|+>pG>KkFv1{R0QI7Rr6FXC5K@eq*ItK~H48 z-4QWYhQ8Qi5Qm8*2fig|1F2&8J1S~O5&Qv>yaKLvS&?(;F88j}1KCXU&Zo70E z&lPF$N=?x%&V45R2CamUFP_rWJbEc*pDB%{v=PGK4blqYPcLZ7L#JN2h28)8oaYww zUdU&e(BB&U8a^_pTB{=Vxd&cgWMKH88NQjdP;y&A7Z5=gyr7@LEJa3~ik8RvKE}8a znG>@W9WxByhUh+9`~$AMw5K40R*H@wC#grD1lfJId*uIsjdMtvU_k^ZgbpolB*5VZ z=8@;!nC&Zz1zP62ko;hx6h$nMy)m6hZV87Q5nT9zS>;Ov#I6rxQypX9B!t4fGLurp zZNN+!yNc?{tI0EWADrLD_{n`Hu(4>EkwrH_IF_mZD%EMEU6Ubt4$b+2ZM0RJoxlSt zauuuX^JLu@F63TD?yULzO_>?rgp!B{_7}*=$TNKIvUt6oyf15lH#sB8cW9wr_&N*} zK!8o$n_RmdmJ*Y^`n9H6C2~*9J~Y?s$-Ve6j$D9!1%dMoAcwZ?xY$?QUdhK2e?TB{c!b6W%%MtlgAcO(km?lEqoGc&{#IJA zW9l{XbN1^G2((UuCd4=o5EQ?AW$%Y6BSWXaOJav((h}bjiZAx>hg*4wa zUqDN{jEy$+bsVA~c?Lwa0#9!GDQ0sA9>M=3K#cALpNIc|fmy!oZZyf7tM`(mC9tYN zfBLd2%*l#g9~4Z)xeTer%wtA(UlR~uun_au26R3rY)ym7M(Z6EjBzNqOjschQi06C8ip^h_Jv!=VtCrz;fDWxbWNelM+LV;MvIvz_#>(=jD%Hq45D8DeWTbSe4S zKe&;wZ{oS`t`}{L+@-ygM-C|ChwlXJC%K@5z1HD`w-n&ifNKFDD`j{1#S@TTQIR2? ztx{ENu{9N|XF_Rw2~%QRw5!r63G*3Hl-GFu_u#$by{jeO=P4#sT;G^rh$fDki>LVE z%Sz%bGU$=qpJYs3=*a zAUMzY$g#vG<@fyJ{XNM{+#0<(-jTT@E%3V9O%3*AxZ<4{^Ap#Dd*PQ6beo{~Za6tg z2jmXTbu~`F#XtB z9E`NsG(Fcs|r+J8JyJQ0_a7H|1b zaXrLkf%|pLTk$|_*P6!6#k5HKcLmX_uX?WeZjCXrf0f({Ie_e1^Q^)7Q| z3j)-Pkb8zsxqoi*t8{EZPoykz%?V9YxeDi;$W>J)hb%HD2eSTN(jwM2>*%~s_;Wgqk@PPHF{t|q5mU_~za|f$MB;1- z%;~9ZCcSz+bPIZRwT@@)?AK90_zup-krERYu27~;NKZFZZN4gLw9$kx=!6??^z==5 z7Gt8V>--r6X6`7RPlB4mKbE!s;GL!C)c&uWiPyJAQ7U%h{O-CL6NYsewYy=rWH4e@ z2rYg`+{(}83s&r-8TXD0+fqOmTD@9NK4lPJIUV1fv*jh@^*#Qi!qWzsq!%Z{ zR<{Lzv*t&@jt#O0c#@3p-CM+TH|gzz`gT16-X9hkP5WYfg`>PcLiPV@B?gD|HKZ*f zRi3IzA;Q)Ky}#W?^5MGLQPQHm?~c)DsyHU*CnUYwcb81&#|wL2O;lln?_Pw8M3yLp zHhux`VG9H0jt3ge5QnN=S0cEHGvy#?SWnSs&=4{jp4mbw`#ylk++J%Vmz;Q4tmo#> zogKe_{->S%zrU%-#N)bc?ZD23vW~0duubiJeP?Ye}TyD18!f5_en;4t^;1EK2%ZpUYJr1%W8mftDE3x@`OXRWk`~On;9m@a=^yJd%3H6ZTMVC?2DiJ1A^Mk zyty2`KFJ_=>`jgo@HZ<&(h{r?1v^rd$-_z1B2TwR0*ifpEP&4W|Ttnn{2DRDKK1NOtWhMPL<2)%e!oP|hoRo59>?yjS8|*{_I9pS&j9 z3;LQ!Q9j3w^6mrN{hq)R`uT!w+X}pM@5|S_nl6A|8M)ML)W%gOt_A5>>wYTno}weM zD9cGx`P;ZylEimL;L2n<5u+JZd3_b%8GED8z}Yn^%lxJdVAv-{SCKD1fJkyn8=NP8 zjqk+(ZVBh5K)$Q!ZoI9a=vnsSvvFcg8`|h;s08Iuwf#Dvc>J!p-N}d6=W6q3p#s1m z$nxxm^z5Op>bF$$Ryxt^c+ZAAV$XUKaTb6^@&?Jj7~_zH0f6$>`N-ra&y4r~e9r7*<4ci04r(L+Ec5^wuxEZ>!MM7{8LmP^QkI`rg&|Q_~i{ zgGu&SZAvI!?9w(G;P9VZXjtxUJv1*=oxmmHqyEK|Zin>hsX9Zn6@Od2m#agMByzrU zX1xCj5Cc^!*^dn9RXw&RVuSwsMjaU;x1u0qc8YYLH|`iI)_?3%Re6hZo)xFSkP`~f5vS=Y z*n%U3@5&g3;s+r`Xio>-)qh%{+$A-ZDFGsig;7LX5V5a_fHH@7oMco~`7b8! z=AMw{hsiV($6SRmpD7382^IWG^F3)!W1spVydx5nmk|alC=w~&GbyF&8rxn>Ahw--(2{f86C#7&fH)|^7n?5dPTtvR$`WD)fyFuRAUPm3u zZD7NhS3>T=86;xSAF4s4jIdY|WXc+KIXI)k|aKTF|aj@!~;ohB3AY;z`8R zh{{$=e8|H1+>dJ*t3f9k_VzVDie*RzxL}}SwCGai?FdB#p>@xyWcm0%1 z(;>9pfBO8;DVinB7CrQbM4L2bI?+D7@>wIL(3SWKilKk^HA{?NVZV!{IAz0pb6=<4 zx`BEWWPalQkKd?y%~~DSR|_2@Yu*AIY67V$EA6)VfR9KDqI{|+CAxp@S4k1pTJmX! z?eTRl5Oz&|Y06mG{5jK2zWd%<$R6z6@QT}gERgVqGVD+J?}y-o2>+d_es$IiBFfr% z^RZXU>kr}4(3#l2d|~dE(W@kjSHMJI>u9e&@Z$a?yVv*^NXb0WN9X~mtXop3SOr>I zF15g-70q&=hhD$o~qlRpq2Gixn=W2REh6wL&gmUMW1vTHclXWuKY<&rHw?q{;~=B6l7z?IEc_t0tNufKK6vT49zJJHo2jJ^K7 zG#OZWPw^0UDUP>D8c{5q|1n3@aGdDhkaHJK)NT2G0&A*fSdw)ZLnjw>5>5zbr{Kh2 z9|1oam&}}}$8`PY(ygywg4&xmvIOFY$rs8TplZi{Wb(f}M`G3M;?{z7U8ut2fE5|# zC%@#Hgax6qn1s`3%flrZnUV;X%CmlFrCN(e15?^|!nh0bS25nRDsTKB(inditY)LPchOIkTQP(M`TZc6jE{_iyE{`qug=1rUN&5%+xK_E#ce4j zC`c}^a>m;iVpzOEITWYDJxR82;4PCb6Jg(uFZ8@xkieEYe6~ zA7|pVw>;^g)B}f4rT^YE+6yE4z6-I2KA{$eX@bZ_1lmdg4AZ()tY72jM@BX7mCj-f zfc}H=zworw4%It`VV%TOVo$15RBmemglItON&-2Z@SS0M5=71P;>R6h;s9*OOG`)#ssVK3S}- z@6tJ_8q*B6VqJ;8UMT{fgG4~=qp3u7I8DH^rSQJ*M?|q*(8(eng1j-i{8`7(pAynS zvbT)_V1lA%WAYkkShDCT6*gs5RT8(BMN zJ9-N(T2Rf(=s@6q^>1*;xBZhdTaLz0)}E&iOf4Q`yiG$&OL!+=BPTisNbD_Dt@kFr zz820zGX1T@{+nt_4RX?#RyPGiVNOw09?W*L;ps%?-h+N}3EgiJ5)OO*d;fr`nA5jY z)3n{c{e6Os6cqK+09zJ}xA$-Au#)4CtkdN+A1y!v4<7FK(mb)bZ_ycW_^;^yeRiA< zA)*0vi|F@vl|f^$njy{C&SdOXvf`ak18`rSWEb-^ZQp7VsUG>0Qc2ePR~)j$3nCHNV01 zJoAlpIyuO26UDDeif=UR7N4WD9#`fXD;R68qK|YnrV@#s>_*_Exd&-8JmvXom_aTXNT?it~9?CEeh734c~%|(L=mr7whN7AEOeJOie_a zFCZoYPUaSoyx7`Xg-tjdG@TtkEFVun=q0K%CTMQ)%mY<9@VKKFLh27uD)VTD`%*u3 z6e9L#>d79=K{8fuPgNI)33pTD*Ah_1Nbis9+um{MThTUgULwJ`Wn12fCLg|`b3=lo z6!#+8HcNPNih=W%t3sk>JmMTs(uR#W9|73kuTedJ^b%tGWLw=MXWA-m_D}j^z@jpK z)6Ua~@AvU3th0Nvcz%fRJiJ&c|7FMzp|wZd+}yw!b8lI7*VQA|$toJQatsefkFW5} zp$ZipKb+IunD%I@CC&;q1Upd)#d8M$cQwYCX@>|pO?4?%DH?2 zIk4hMLU66Aj^*HDJUdjUoP0Z<|E->FxwLV7mS{5kPMuC1dR5O9-KF=?PqRs%A~I0? zz|kH%K~qb<_$BG0Khi*&Vf-d$AgpriqT+HwGQbAg_*7u@$^#Q2TT;(PDTwVb?+^<* zG-|z;3Q-PcU+)j^ZA04P1rUmjDi>MGY_dOkTW5U!vJ)GFHWLd5Ld9k~gmvr-abo-JSw zqXJx1dgztRqwx;-$jZU@|4S|lX-VguPAbjX<`iQ3&hGo%&xpdzvjYB-GyntQgx8}YNT<$dG z#WGM)+{+oft6p+r+;ne ztyf@-R+lvYcByiR)6$@QVi+pX{GHfG7W|78Zuh&X{)Jt}#mm$aX47|OAFrt%T$cC? z7za;hVW(}^cRuh;eTW#qjk^1i#UDNTCyyOgw0UCD?u;o(U zTD47;LeWXptaz0|Tyjq;V4C@trytdO8~(tTO_Gs)&` z62ccmF9Ph5txN7B(4TLAqJV?*o-B z1O7dQ@)Vl0#*8Q1E3J(JU3pLhpcN}^HG7oR2sX0H}(OEH-27cB>w5XwE4h8 zRPL`IBrCJ;+iV*b`b|CGBm~F!@?PaWf1;3_pnfKaR5RlHpCA5!=WqHw%~?ge+HHb( z)=3d!OVHmwhqgz#fAP2hTxAc9w8te_#yuUnJpAayf zwb;phhpP^meGeH$u3TV`lTZ}*^j{BQ2*T5hcO52N=`eE<)J zux@!{QhC#z>wm9;9UIN>DTpO+kia^@`;gDTriG>SqmhZk`o1*<{Rguq$qD@dSW0y7 zvv)^kYPW?^_KRWpi^~--*n%Q945oCXAaaF0mO9e0)4=S(_#=Vy4Y_o~B3oAIQ@^O9 zStO7=y49Mm_qrL!#Ji#vx53NaG=X4V5RAVbc+8Ly_W5H4H_N*B%^OTR9yfm;mF2Hl zIXK|LEwSyZcKVyD*5;i?gA`&Hb>X}6xf;9v8dE$!roSO@E-Jc`pCOe(e z?uDq@%-P*2_X6Q&GQ5n-1IaHwo5c8C4hQe#hfFqG;y^ddQ%T2OCn{^vs{|@=_S8+g zK2+POa5_FAm54xJocd^uIiX)CXCi0avI$yFuzR&EX zVUte|yQu%CR;yW)z1TLS^6vQzYs8~<32SBzvP?|KQv1wf@R7p^mF$pO(2ZJmq(Q;G z(9|D#MFghn=*d=QcQpMx?GGkIi4!iyZo4-@5v_&=fA@mtP&_Dcg+(t&Sp?9M$D9n# z5gqNs`8WQUob$nA!WF|3`%P*DD*wZI^W>ACumvcUsZQ*v<5%=&D6c-ACamjBYJ8>Y z#2=_D_iM>)EOYyDU+j@ay0(*<{K4v^W%4nj)rS%er(SD}Ci)8h6AeH7v;V8ZiQ>->US0`qT4?O5hxmsvgkA8XbrJlKidf+syji9O}lyZ$yriRkQc z9dy-0l3m_Q`QoMZdDRv6+{LqRDlc~|(^;H)kQ%d(fkWRgVH>ci7B$+@w2GrJ20ON8 z`c*itcIN4pdR#L$R~k0!N{F>0>n2W6VYv94f77jdrt+rLDcz0sui)zen^+Fa8EwjT z@I4!u25m6O-~c<>$vj6)cUZm9#D2>XwhH5Fy7867b-kET(!BNiaYqsliic(W`umNC z_D#M1M7Zq4Qrrkv$-Rs z-2NvyA?5-ji~X?vGJeVU3Z-THn;YrJ@SbBG#7|EAb0HakJtGOE@}DyARrq3*Ej zmX)YahG!rD-5@zgH6_$9gr$n7Apa<0w{1NAPldH%w1!D>@y^=axqoR1>WSnb$|r73 znXTtMVqTW}HjkV*5{>4)hF6h!l{??6;b~EH;)+I<4QQ}VR-QIAJ0+K-m>?k<~SJ!ZZ2es z5=foTr@iD=g;)&c-`$&p&_r!eGe7l^gpVxa&5&4tHDJ9HRTwdc=l@tUX$Dl+v(w=1 zR@XrTE5vq)u}K>EuX&JX<5$Oa30_x^^y;9WaL|x#^=`R5T-@8}+=kQ^lrj8u4HKvG zdeVU|#-CG6TZkTJDfO?_lwhbu?G2LZ8EQX|JGv?n9V!m0b$$LkZOfZ9^H`mMn-3}b zm_>(j02@dwV{`t8G*SW~mum#N-LsYs^N1d~4QgpW8K>mB649H};V*!|#cy>0tkpar zS>5Vx3M5BX*ls~bMO7H~CD$!OQdM>FIYnAAB*!nn1ZB#aoC)vBjw&u@cfi{yy-6-J z5jh6+X(RREPBcnDH_2HsOr?&Mqd)iMo<94{OoHY+yW0R1zvI&q%uu40`a^n4n6ULJ z+f&@VPC0ot^)9yfxz6qh$=7d{6=B!qw^4buE9vPu*otxn4(kWw;<<)bJv;_r@Vg5R zyuNt*MmD*rEcY*hdJC8|D`EcS2@e$srk{p*&uU0GKaZ7&KS+(T4s}4P?xqA6PbKXBa2~U$~XUiCFqQR--swFw9W+yJZ9ZMb6eB0Fyi@M>c&?=M zP!^~tC>qR0`*R?ZEGClf?F^YO7kvs-k`?Bue}7f`CtmZFCUd#9=2YC2bsp2NMccbo zh87BEwGHY^9vk9VSB!TC>w3}^H2{qoX+%1fUxGgUA^9OZ?ep_!D^H zM+aFwm%(7CWy{*UZS)tcusZtbA=MAGneN|H?joXby*E)PT3$dXE0irMyx@EK)vKJj zTHOWHxq);SU^-=O*}gisS>D{ZX%gS1y}zz4*5s(6U;L{2Es<>hgSwt|G3OWa zU@w_7E$eXo{{Y4M-=8B_$kcxq1B9tB9Z6^PE_4|SIG>w}uq~olkdnjU!3K`6jt_18 z&lJPZO$eYERIyBxt4}w3Jx#%D==DwK-s=zJ-o>*mijw=xL zp9Xgf=y8sxLMXww5|lJh!pDkB4#FKsrr13lkz6xaY&p!G+vDgjH>F&c+%X-<-k%-p zR>-Dkfol@0G0{DZ>UaMAZ`Xte6^>;UB%(D*!{BpEeiG1nK`c(xgGxJPuEs@J)(FIB z163Vac$2yOn&})F5WdK)O2y0WpE5Y1BGCwuO-Q09_sWkN@MU`Ow%q6y5(t** z9qyZX$Ch^0r1?(?+Gi#DmLn=aj2`bKBoeL|hc*N}f3Tf3q+hW9>CQbU#jC7(NR`5w zVCIv}1swxvJ=p;5aDJ9=Pj$+tJDDtXPKl`O0(=!5epKplEK2R)$1q@Wk(49-IBgU) z;CBYmN`r*HELuUs)+6&(MLlnseS{U`M=#4xRsPt3rVMDOJ2Bf&(j*0pb@tTV4-)AZ z|86Y2mt`@V{iUG6dJ>2mFd_v79GDZseNl0&gSyaZ7oY@%5i4H5cr;aC^n1Ao`n@A2 z;8ND|PE%C-$VEoDZcy1^Q|0C9a1dSjZgoD+<2Vb<&7-pbiKGfuw@`r$_fspSnLde? zDJ*a1n@R6|X2~<`e{97T<|xe{TZ5$y^acgjPx$37ab8O}~IvUgEp64t`Ke?SJc2WF1`1V^%3^=!#~9VREcp)uk?k^QE^GcF2p-b>mKTP@dH!l>*I zZfBV#a2eg81d_1Lnh6YR%ochDtf07GXzdY)#+Ub>Gg;TFxq7C?N9%EiGpMs)3+3C} zG%|fnTlyf`xvB;AwfR+X#@K?>URO88R9MBYL4wCFnCvy;YF3{f7XrKIbeP2Q$k<)I zWUfa^ReLp^_8KZ8p>d41o-A5@$0Z`Tocb@Ka{RNon)X_;eSz&hmtmV;z3+Te7XEZP zv^u@K`{Dg^D6J-|DSI zlT_NEgpGpzoIj)ceQ{A+ONbcTe1+tXlpQ)I*NRdV;xPrm&5Hp|B{Qyhvp=oqh~pr| zpAn__czALaz`>1rpa?xMIE8i+RS1}|-Z!>l<*=r@oFDU`J|lYp5n@$-6X2}AvM3?2 zh74Q}e4ko@w6_2kp7dRR7Q}COPn>}Ux#Nf)0|^P=VpsBrHpn$=gR^TAD@f*El6Ewb zt-WyjSSC?PIudmqFoC@PKIzojW-8(FziV0#2PXPXoHmpi(346;i@B9iA$y=J00thU5;tal8S$o$prR{W|FkQXe-BnXeHVOeJT zyd!l&gh+4jAAUywEqLOHyijzgQ>5dc@IJqkzCm+R-~D@@#75rqreoHlPfH&~-T$t@ zu?9%@Gk-e1*ZlIo{qrbkU#t)|2}2>+2^SPwPl|Nj5_Ng~7IkPYHC5x*nu8G$&2o6) zr{S3Y2O3M=Cu_1T999I6WzzrsHO7S*a-Z&Akc+K87-NM=M=?#u zSa=OmRi3^uNrrKwfoU3#2c%o3p707z^FY5tE59FEijn*pyqCaO*z#5d&ZqZIHU6KW z(oqq|{o>v^S305Z=7OMOZerDx+3RJ&bw_n}-9I`B+7Oy=`d~vfm{0z3yKj#<|JxT; zrv&^E39bb?2 zhpXRNLamiP4HEeY&uPJ?7rXW`Wr(i@tTnEa&yJU! z=ZfnfYRl2?J?&nSt~8j-+4T`IIcE7}U`KXRQc0jv-u-;dSjQfhR?%{7oxU42Ieko0 z|FY&og7fqW)k=I~psLo(Fnn)GlfN0Gd9vk6>0wr^9MK?5;mVRMCWZ0Wu(ER|EHpT{UW$DPcC+sg8cJoBcy@Y z$?VpG@#@4o_ z6=7DQyyl%EC8TF=Q{U`SE5p_b zWF^%ufXeO0LiFlZ@vK2K!U+cF0S{7=)Bn@_s+&;g=a9DpF4F6`UPBGj(4vSEx*4W#JGpS;+5kDj=>Mni|a_`kZOB&f4|BFfdkH~kF6JhMzWm88AUl#W+p#2;|-BSl@wzL$XVD11=-?1yn9 zC8^W1)Or>Y*K#98F(Bx*x1c~wXbaWn*kZ?9zplobr2K!_eKvYJLY$UMI3NsYOlJT~ zzA+_v*rtBQ#SIG%Mtfm{%C%ToEjSoz#%wc60qIHkxgcOUnR;!pai&{swYLtbj73DN z-uB&j7H!(p!C>c~f;wl?_j-efqo{ZIw6U(560lE1=EyuPqX3Jq@imjNqxtqoB~L;z zRF>zv3-Cscg!~YzZGcfh{TuJT+|x?yHsw8Fl@FP;#gUT};GJ2l$S!_y;oF}G01S0a KbsDq~vHu5dlQb9r literal 0 HcmV?d00001 diff --git a/themes/hugo-book/.github/workflows/main.yml b/themes/hugo-book/.github/workflows/main.yml new file mode 100644 index 0000000..9ae4f54 --- /dev/null +++ b/themes/hugo-book/.github/workflows/main.yml @@ -0,0 +1,24 @@ +name: Build with Hugo + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + hugo-version: + - 'latest' + - '0.79.0' + steps: + - uses: actions/checkout@v2 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@v2 + with: + hugo-version: ${{ matrix.hugo-version }} + extended: true + + - name: Run Hugo + working-directory: exampleSite + run: hugo --themesDir ../.. diff --git a/themes/hugo-book/.gitignore b/themes/hugo-book/.gitignore new file mode 100644 index 0000000..5944200 --- /dev/null +++ b/themes/hugo-book/.gitignore @@ -0,0 +1,4 @@ +public/ +exampleSite/public/ +.DS_Store +.hugo_build.lock diff --git a/themes/hugo-book/LICENSE b/themes/hugo-book/LICENSE new file mode 100644 index 0000000..e7a669a --- /dev/null +++ b/themes/hugo-book/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 Alex Shpak + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/hugo-book/README.md b/themes/hugo-book/README.md new file mode 100644 index 0000000..89b6719 --- /dev/null +++ b/themes/hugo-book/README.md @@ -0,0 +1,358 @@ +# Hugo Book Theme + +[![Hugo](https://img.shields.io/badge/hugo-0.79-blue.svg)](https://gohugo.io) +[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE) +![Build with Hugo](https://github.com/alex-shpak/hugo-book/workflows/Build%20with%20Hugo/badge.svg) + +### [Hugo](https://gohugo.io) documentation theme as simple as plain book + +![Screenshot](https://github.com/alex-shpak/hugo-book/blob/master/images/screenshot.png) + +- [Features](#features) +- [Requirements](#requirements) +- [Installation](#installation) +- [Menu](#menu) +- [Blog](#blog) +- [Configuration](#configuration) +- [Shortcodes](#shortcodes) +- [Versioning](#versioning) +- [Contributing](#contributing) + +## Features + +- Clean simple design +- Light and Mobile-Friendly +- Multi-language support +- Customisable +- Zero initial configuration +- Handy shortcodes +- Comments support +- Simple blog and taxonomy +- Primary features work without JavaScript +- Dark Mode + +## Requirements + +- Hugo 0.79 or higher +- Hugo extended version, read more [here](https://gohugo.io/news/0.48-relnotes/) + +## Installation + +### Install as git submodule +Navigate to your hugo project root and run: + +``` +git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book +``` + +Then run hugo (or set `theme = "hugo-book"`/`theme: hugo-book` in configuration file) + +``` +hugo server --minify --theme hugo-book +``` + +### Install as hugo module + +You can also add this theme as a Hugo module instead of a git submodule. + +Start with initializing hugo modules, if not done yet: +``` +hugo mod init github.com/repo/path +``` + +Navigate to your hugo project root and add [module] section to your `config.toml`: + +```toml +[module] +[[module.imports]] +path = 'github.com/alex-shpak/hugo-book' +``` + +Then, to load/update the theme module and run hugo: + +```sh +hugo mod get -u +hugo server --minify +``` + +### Creating site from scratch + +Below is an example on how to create a new site from scratch: + +```sh +hugo new site mydocs; cd mydocs +git init +git submodule add https://github.com/alex-shpak/hugo-book themes/hugo-book +cp -R themes/hugo-book/exampleSite/content . +``` + +```sh +hugo server --minify --theme hugo-book +``` + +## Menu + +### File tree menu (default) + +By default, the theme will render pages from the `content/docs` section as a menu in a tree structure. +You can set `title` and `weight` in the front matter of pages to adjust the order and titles in the menu. + +### Leaf bundle menu (Deprecated, to be removed in June 2022) + +You can also use leaf bundle and the content of its `index.md` file as menu. +Given you have the following file structure: + +``` +├── content +│ ├── docs +│ │ ├── page-one.md +│ │ └── page-two.md +│ └── posts +│ ├── post-one.md +│ └── post-two.md +``` + +Create a file `content/menu/index.md` with the content: + +```md ++++ +headless = true ++++ + +- [Book Example]({{< relref "/docs/" >}}) + - [Page One]({{< relref "/docs/page-one" >}}) + - [Page Two]({{< relref "/docs/page-two" >}}) +- [Blog]({{< relref "/posts" >}}) +``` + +And Enable it by setting `BookMenuBundle: /menu` in Site configuration. + +- [Example menu](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/content.en/menu/index.md) +- [Example config file](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/config.yaml) +- [Leaf bundles](https://gohugo.io/content-management/page-bundles/) + +## Blog + +A simple blog is supported in the section `posts`. +A blog is not the primary usecase of this theme, so it has only minimal features. + +## Configuration + +### Site Configuration + +There are a few configuration options that you can add to your `config.toml` file. +You can also see the `yaml` example [here](https://github.com/alex-shpak/hugo-book/blob/master/exampleSite/config.yaml). + +```toml +# (Optional) Set Google Analytics if you use it to track your website. +# Always put it on the top of the configuration file, otherwise it won't work +googleAnalytics = "UA-XXXXXXXXX-X" + +# (Optional) If you provide a Disqus shortname, comments will be enabled on +# all pages. +disqusShortname = "my-site" + +# (Optional) Set this to true if you use capital letters in file names +disablePathToLower = true + +# (Optional) Set this to true to enable 'Last Modified by' date and git author +# information on 'doc' type pages. +enableGitInfo = true + +# (Optional) Theme is intended for documentation use, therefore it doesn't render taxonomy. +# You can remove related files with config below +disableKinds = ['taxonomy', 'taxonomyTerm'] + +[params] + # (Optional, default light) Sets color theme: light, dark or auto. + # Theme 'auto' switches between dark and light modes based on browser/os preferences + BookTheme = 'light' + + # (Optional, default true) Controls table of contents visibility on right side of pages. + # Start and end levels can be controlled with markup.tableOfContents setting. + # You can also specify this parameter per page in front matter. + BookToC = true + + # (Optional, default none) Set the path to a logo for the book. If the logo is + # /static/logo.png then the path would be 'logo.png' + BookLogo = 'logo.png' + + # (Optional, default none) Set leaf bundle to render as side menu + # When not specified file structure and weights will be used + # Deprecated, to be removed in June 2022 + BookMenuBundle = '/menu' + + # (Optional, default docs) Specify section of content to render as menu + # You can also set value to "*" to render all sections to menu + BookSection = 'docs' + + # Set source repository location. + # Used for 'Last Modified' and 'Edit this page' links. + BookRepo = 'https://github.com/alex-shpak/hugo-book' + + # Specifies commit portion of the link to the page's last modified commit hash for 'doc' page + # type. + # Required if 'BookRepo' param is set. + # Value used to construct a URL consisting of BookRepo/BookCommitPath/ + # Github uses 'commit', Bitbucket uses 'commits' + BookCommitPath = 'commit' + + # Enable 'Edit this page' links for 'doc' page type. + # Disabled by default. Uncomment to enable. Requires 'BookRepo' param. + # Path must point to the site directory. + BookEditPath = 'edit/master/exampleSite' + + # (Optional, default January 2, 2006) Configure the date format used on the pages + # - In git information + # - In blog posts + BookDateFormat = 'Jan 2, 2006' + + # (Optional, default true) Enables search function with flexsearch, + # Index is built on fly, therefore it might slowdown your website. + # Configuration for indexing can be adjusted in i18n folder per language. + BookSearch = true + + # (Optional, default true) Enables comments template on pages + # By default partials/docs/comments.html includes Disqus template + # See https://gohugo.io/content-management/comments/#configure-disqus + # Can be overwritten by same param in page frontmatter + BookComments = true + + # /!\ This is an experimental feature, might be removed or changed at any time + # (Optional, experimental, default false) Enables portable links and link checks in markdown pages. + # Portable links meant to work with text editors and let you write markdown without {{< relref >}} shortcode + # Theme will print warning if page referenced in markdown does not exists. + BookPortableLinks = true + + # /!\ This is an experimental feature, might be removed or changed at any time + # (Optional, experimental, default false) Enables service worker that caches visited pages and resources for offline use. + BookServiceWorker = true +``` + +### Multi-Language Support + +Theme supports Hugo's [multilingual mode](https://gohugo.io/content-management/multilingual/), just follow configuration guide there. You can also tweak search indexing configuration per language in `i18n` folder. + +### Page Configuration + +You can specify additional params in the front matter of individual pages: + +```toml +# Set type to 'docs' if you want to render page outside of configured section or if you render section other than 'docs' +type = 'docs' + +# Set page weight to re-arrange items in file-tree menu (if BookMenuBundle not set) +weight = 10 + +# (Optional) Set to 'true' to mark page as flat section in file-tree menu (if BookMenuBundle not set) +bookFlatSection = false + +# (Optional) Set to hide nested sections or pages at that level. Works only with file-tree menu mode +bookCollapseSection = true + +# (Optional) Set true to hide page or section from side menu (if BookMenuBundle not set) +bookHidden = false + +# (Optional) Set 'false' to hide ToC from page +bookToC = true + +# (Optional) If you have enabled BookComments for the site, you can disable it for specific pages. +bookComments = true + +# (Optional) Set to 'false' to exclude page from search index. +bookSearchExclude = true + +# (Optional) Set explicit href attribute for this page in a menu (if BookMenuBundle not set) +bookHref = '' +``` + +### Partials + +There are layout partials available for you to easily override components of the theme in `layouts/partials/`. + +In addition to this, there are several empty partials you can override to easily add/inject code. + +| Empty Partial | Placement | +| -------------------------------------------------- | ------------------------------------------- | +| `layouts/partials/docs/inject/head.html` | Before closing `` tag | +| `layouts/partials/docs/inject/body.html` | Before closing `` tag | +| `layouts/partials/docs/inject/footer.html` | After page footer content | +| `layouts/partials/docs/inject/menu-before.html` | At the beginning of `