From 10595ef13972c140e874d3c08ab31f1bcc427eb4 Mon Sep 17 00:00:00 2001 From: camille-s Date: Sat, 16 Dec 2023 11:33:54 -0500 Subject: [PATCH] Move to index --- README.md | 300 ++++++ README.qmd | 310 ++++++ .../figure-commonmark/unnamed-chunk-2-1.png | Bin 0 -> 59396 bytes .../figure-commonmark/unnamed-chunk-3-1.png | Bin 0 -> 22030 bytes .../figure-commonmark/unnamed-chunk-4-1.png | Bin 0 -> 22030 bytes .../figure-revealjs/unnamed-chunk-3-1.png | Bin .../figure-revealjs/unnamed-chunk-4-1.png | Bin .../libs/revealjs/dist/reset.css | 0 .../libs/revealjs/dist/reveal.css | 0 .../libs/revealjs/dist/reveal.esm.js | 0 .../libs/revealjs/dist/reveal.esm.js.map | 0 .../libs/revealjs/dist/reveal.js | 0 .../libs/revealjs/dist/reveal.js.map | 0 .../dist/theme/fonts/league-gothic/LICENSE | 0 .../fonts/league-gothic/league-gothic.css | 0 .../fonts/league-gothic/league-gothic.eot | Bin .../fonts/league-gothic/league-gothic.ttf | Bin .../fonts/league-gothic/league-gothic.woff | Bin .../dist/theme/fonts/source-sans-pro/LICENSE | 0 .../source-sans-pro-italic.eot | Bin .../source-sans-pro-italic.ttf | Bin .../source-sans-pro-italic.woff | Bin .../source-sans-pro-regular.eot | Bin .../source-sans-pro-regular.ttf | Bin .../source-sans-pro-regular.woff | Bin .../source-sans-pro-semibold.eot | Bin .../source-sans-pro-semibold.ttf | Bin .../source-sans-pro-semibold.woff | Bin .../source-sans-pro-semibolditalic.eot | Bin .../source-sans-pro-semibolditalic.ttf | Bin .../source-sans-pro-semibolditalic.woff | Bin .../fonts/source-sans-pro/source-sans-pro.css | 0 .../libs/revealjs/dist/theme/quarto.css | 0 .../plugin/highlight/highlight.esm.js | 0 .../revealjs/plugin/highlight/highlight.js | 0 .../revealjs/plugin/highlight/monokai.css | 0 .../libs/revealjs/plugin/highlight/plugin.js | 0 .../revealjs/plugin/highlight/zenburn.css | 0 .../revealjs/plugin/markdown/markdown.esm.js | 0 .../libs/revealjs/plugin/markdown/markdown.js | 0 .../libs/revealjs/plugin/markdown/plugin.js | 0 .../libs/revealjs/plugin/math/katex.js | 0 .../libs/revealjs/plugin/math/math.esm.js | 0 .../libs/revealjs/plugin/math/math.js | 0 .../libs/revealjs/plugin/math/mathjax2.js | 0 .../libs/revealjs/plugin/math/mathjax3.js | 0 .../libs/revealjs/plugin/math/plugin.js | 0 .../libs/revealjs/plugin/notes/notes.esm.js | 0 .../libs/revealjs/plugin/notes/notes.js | 0 .../libs/revealjs/plugin/notes/plugin.js | 0 .../revealjs/plugin/notes/speaker-view.html | 0 .../revealjs/plugin/pdf-export/pdfexport.js | 0 .../revealjs/plugin/pdf-export/plugin.yml | 0 .../quarto-line-highlight/line-highlight.css | 0 .../quarto-line-highlight/line-highlight.js | 0 .../plugin/quarto-line-highlight/plugin.yml | 0 .../revealjs/plugin/quarto-support/footer.css | 0 .../revealjs/plugin/quarto-support/plugin.yml | 0 .../revealjs/plugin/quarto-support/support.js | 0 .../libs/revealjs/plugin/reveal-menu/menu.css | 0 .../libs/revealjs/plugin/reveal-menu/menu.js | 0 .../revealjs/plugin/reveal-menu/plugin.yml | 0 .../plugin/reveal-menu/quarto-menu.css | 0 .../plugin/reveal-menu/quarto-menu.js | 0 .../libs/revealjs/plugin/search/plugin.js | 0 .../libs/revealjs/plugin/search/search.esm.js | 0 .../libs/revealjs/plugin/search/search.js | 0 .../libs/revealjs/plugin/zoom/plugin.js | 0 .../libs/revealjs/plugin/zoom/zoom.esm.js | 0 .../libs/revealjs/plugin/zoom/zoom.js | 0 docs/{seaberry_final_pres.html => index.html} | 57 +- docs/{seaberry_final_pres.qmd => index.qmd} | 3 - .../figure-revealjs/unnamed-chunk-2-1.png | Bin 0 -> 130135 bytes .../figure-revealjs/unnamed-chunk-3-1.png | Bin 0 -> 48328 bytes .../libs/clipboard/clipboard.min.js | 0 .../libs/quarto-html/light-border.css | 0 .../libs/quarto-html/popper.min.js | 0 .../libs/quarto-html/quarto-html.min.css | 0 .../quarto-syntax-highlighting-dark.css | 0 .../libs/quarto-html/tabby.min.js | 0 .../libs/quarto-html/tippy.css | 0 .../libs/quarto-html/tippy.umd.min.js | 0 docs/index_files/libs/revealjs/dist/reset.css | 30 + .../index_files/libs/revealjs/dist/reveal.css | 8 + .../libs/revealjs/dist/reveal.esm.js | 9 + .../libs/revealjs/dist/reveal.esm.js.map | 1 + docs/index_files/libs/revealjs/dist/reveal.js | 9 + .../libs/revealjs/dist/reveal.js.map | 1 + .../dist/theme/fonts/league-gothic/LICENSE | 2 + .../fonts/league-gothic/league-gothic.css | 10 + .../fonts/league-gothic/league-gothic.eot | Bin 0 -> 25696 bytes .../fonts/league-gothic/league-gothic.ttf | Bin 0 -> 64256 bytes .../fonts/league-gothic/league-gothic.woff | Bin 0 -> 30764 bytes .../dist/theme/fonts/source-sans-pro/LICENSE | 45 + .../source-sans-pro-italic.eot | Bin 0 -> 75720 bytes .../source-sans-pro-italic.ttf | Bin 0 -> 238084 bytes .../source-sans-pro-italic.woff | Bin 0 -> 98556 bytes .../source-sans-pro-regular.eot | Bin 0 -> 88070 bytes .../source-sans-pro-regular.ttf | Bin 0 -> 288008 bytes .../source-sans-pro-regular.woff | Bin 0 -> 114324 bytes .../source-sans-pro-semibold.eot | Bin 0 -> 89897 bytes .../source-sans-pro-semibold.ttf | Bin 0 -> 284640 bytes .../source-sans-pro-semibold.woff | Bin 0 -> 115648 bytes .../source-sans-pro-semibolditalic.eot | Bin 0 -> 75706 bytes .../source-sans-pro-semibolditalic.ttf | Bin 0 -> 240944 bytes .../source-sans-pro-semibolditalic.woff | Bin 0 -> 98816 bytes .../fonts/source-sans-pro/source-sans-pro.css | 39 + .../libs/revealjs/dist/theme/quarto.css | 5 + .../plugin/highlight/highlight.esm.js | 5 + .../revealjs/plugin/highlight/highlight.js | 5 + .../revealjs/plugin/highlight/monokai.css | 71 ++ .../libs/revealjs/plugin/highlight/plugin.js | 439 +++++++++ .../revealjs/plugin/highlight/zenburn.css | 80 ++ .../revealjs/plugin/markdown/markdown.esm.js | 1 + .../libs/revealjs/plugin/markdown/markdown.js | 1 + .../libs/revealjs/plugin/markdown/plugin.js | 475 ++++++++++ .../libs/revealjs/plugin/math/katex.js | 96 ++ .../libs/revealjs/plugin/math/math.esm.js | 1 + .../libs/revealjs/plugin/math/math.js | 1 + .../libs/revealjs/plugin/math/mathjax2.js | 89 ++ .../libs/revealjs/plugin/math/mathjax3.js | 77 ++ .../libs/revealjs/plugin/math/plugin.js | 15 + .../libs/revealjs/plugin/notes/notes.esm.js | 1 + .../libs/revealjs/plugin/notes/notes.js | 1 + .../libs/revealjs/plugin/notes/plugin.js | 236 +++++ .../revealjs/plugin/notes/speaker-view.html | 884 ++++++++++++++++++ .../revealjs/plugin/pdf-export/pdfexport.js | 111 +++ .../revealjs/plugin/pdf-export/plugin.yml | 2 + .../quarto-line-highlight/line-highlight.css | 31 + .../quarto-line-highlight/line-highlight.js | 351 +++++++ .../plugin/quarto-line-highlight/plugin.yml | 4 + .../revealjs/plugin/quarto-support/footer.css | 110 +++ .../revealjs/plugin/quarto-support/plugin.yml | 5 + .../revealjs/plugin/quarto-support/support.js | 290 ++++++ .../libs/revealjs/plugin/reveal-menu/menu.css | 346 +++++++ .../libs/revealjs/plugin/reveal-menu/menu.js | 1 + .../revealjs/plugin/reveal-menu/plugin.yml | 9 + .../plugin/reveal-menu/quarto-menu.css | 68 ++ .../plugin/reveal-menu/quarto-menu.js | 43 + .../libs/revealjs/plugin/search/plugin.js | 243 +++++ .../libs/revealjs/plugin/search/search.esm.js | 7 + .../libs/revealjs/plugin/search/search.js | 7 + .../libs/revealjs/plugin/zoom/plugin.js | 264 ++++++ .../libs/revealjs/plugin/zoom/zoom.esm.js | 4 + .../libs/revealjs/plugin/zoom/zoom.js | 4 + 145 files changed, 5177 insertions(+), 30 deletions(-) create mode 100644 README.md create mode 100644 README.qmd create mode 100644 README_files/figure-commonmark/unnamed-chunk-2-1.png create mode 100644 README_files/figure-commonmark/unnamed-chunk-3-1.png create mode 100644 README_files/figure-commonmark/unnamed-chunk-4-1.png rename {docs/seaberry_final_pres_files => README_files}/figure-revealjs/unnamed-chunk-3-1.png (100%) rename {docs/seaberry_final_pres_files => README_files}/figure-revealjs/unnamed-chunk-4-1.png (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reset.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reveal.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reveal.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reveal.esm.js.map (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reveal.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/reveal.js.map (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/dist/theme/quarto.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/highlight/highlight.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/highlight/highlight.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/highlight/monokai.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/highlight/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/highlight/zenburn.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/markdown/markdown.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/markdown/markdown.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/markdown/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/katex.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/math.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/math.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/mathjax2.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/mathjax3.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/math/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/notes/notes.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/notes/notes.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/notes/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/notes/speaker-view.html (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/pdf-export/pdfexport.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/pdf-export/plugin.yml (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-line-highlight/plugin.yml (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-support/footer.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-support/plugin.yml (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/quarto-support/support.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/reveal-menu/menu.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/reveal-menu/menu.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/reveal-menu/plugin.yml (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/reveal-menu/quarto-menu.css (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/reveal-menu/quarto-menu.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/search/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/search/search.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/search/search.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/zoom/plugin.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/zoom/zoom.esm.js (100%) rename {docs/seaberry_final_pres_files => README_files}/libs/revealjs/plugin/zoom/zoom.js (100%) rename docs/{seaberry_final_pres.html => index.html} (93%) rename docs/{seaberry_final_pres.qmd => index.qmd} (99%) create mode 100644 docs/index_files/figure-revealjs/unnamed-chunk-2-1.png create mode 100644 docs/index_files/figure-revealjs/unnamed-chunk-3-1.png rename docs/{seaberry_final_pres_files => index_files}/libs/clipboard/clipboard.min.js (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/light-border.css (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/popper.min.js (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/quarto-html.min.css (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/quarto-syntax-highlighting-dark.css (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/tabby.min.js (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/tippy.css (100%) rename docs/{seaberry_final_pres_files => index_files}/libs/quarto-html/tippy.umd.min.js (100%) create mode 100644 docs/index_files/libs/revealjs/dist/reset.css create mode 100644 docs/index_files/libs/revealjs/dist/reveal.css create mode 100644 docs/index_files/libs/revealjs/dist/reveal.esm.js create mode 100644 docs/index_files/libs/revealjs/dist/reveal.esm.js.map create mode 100644 docs/index_files/libs/revealjs/dist/reveal.js create mode 100644 docs/index_files/libs/revealjs/dist/reveal.js.map create mode 100644 docs/index_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE create mode 100644 docs/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff create mode 100644 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf create mode 100755 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff create mode 100644 docs/index_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css create mode 100644 docs/index_files/libs/revealjs/dist/theme/quarto.css create mode 100644 docs/index_files/libs/revealjs/plugin/highlight/highlight.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/highlight/highlight.js create mode 100644 docs/index_files/libs/revealjs/plugin/highlight/monokai.css create mode 100644 docs/index_files/libs/revealjs/plugin/highlight/plugin.js create mode 100644 docs/index_files/libs/revealjs/plugin/highlight/zenburn.css create mode 100644 docs/index_files/libs/revealjs/plugin/markdown/markdown.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/markdown/markdown.js create mode 100755 docs/index_files/libs/revealjs/plugin/markdown/plugin.js create mode 100755 docs/index_files/libs/revealjs/plugin/math/katex.js create mode 100644 docs/index_files/libs/revealjs/plugin/math/math.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/math/math.js create mode 100644 docs/index_files/libs/revealjs/plugin/math/mathjax2.js create mode 100644 docs/index_files/libs/revealjs/plugin/math/mathjax3.js create mode 100644 docs/index_files/libs/revealjs/plugin/math/plugin.js create mode 100644 docs/index_files/libs/revealjs/plugin/notes/notes.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/notes/notes.js create mode 100644 docs/index_files/libs/revealjs/plugin/notes/plugin.js create mode 100644 docs/index_files/libs/revealjs/plugin/notes/speaker-view.html create mode 100644 docs/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js create mode 100644 docs/index_files/libs/revealjs/plugin/pdf-export/plugin.yml create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-support/footer.css create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-support/plugin.yml create mode 100644 docs/index_files/libs/revealjs/plugin/quarto-support/support.js create mode 100644 docs/index_files/libs/revealjs/plugin/reveal-menu/menu.css create mode 100644 docs/index_files/libs/revealjs/plugin/reveal-menu/menu.js create mode 100644 docs/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml create mode 100644 docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css create mode 100644 docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js create mode 100644 docs/index_files/libs/revealjs/plugin/search/plugin.js create mode 100644 docs/index_files/libs/revealjs/plugin/search/search.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/search/search.js create mode 100644 docs/index_files/libs/revealjs/plugin/zoom/plugin.js create mode 100644 docs/index_files/libs/revealjs/plugin/zoom/zoom.esm.js create mode 100644 docs/index_files/libs/revealjs/plugin/zoom/zoom.js diff --git a/README.md b/README.md new file mode 100644 index 0000000..ed00b44 --- /dev/null +++ b/README.md @@ -0,0 +1,300 @@ +# Re-surveilling surveillance +Camille Seaberry + +## Background + +- Police surveillance cameras in Baltimore form one of many layers of + state surveillance imposed upon residents. +- Little documentation, control, or oversight of surveillance landscape +- What role do tech vendors play in surveillance? How can open source + tech be used for accountability? + +### Tasks + +- Identify cameras in images (object detection) +- Categorize camera types once detected (classification) + +### Goals + +- Improve upon / expand on models I built before—**DONE!** +- Map locations of cameras for spatial analysis—**NOT DONE** + +## About the data + +| | Google Street View | Objects365 | Mapillary Vistas | +|-------------------------|-----------------------------|-----------------------|-----------------------| +| Size (train, val, test) | 473 / 119 / 79 | 393 / 107 / 54 | 3,202 / 929 / 484 | +| Setting | Street | Outdoors & indoors | Street | +| Used for | Detection & classification | Detection | Detection | +| Release | Maybe a TOS violation? | Released for research | Released for research | +| Source | Sheng, Yao, and Goel (2021) | Shao et al. (2019) | Neuhold et al. (2017) | + +## Tools + +| | | +|--------------------|-----------------------------------------------------------------| +| Ultralytics YOLOv8 | Models with built-in modules for training, tuning, & validation | +| Pytorch | Underlies Ultralytics models | +| Roboflow | Dataset creation & management | +| Weights & Biases | Experiment tracking | +| Paperspace | Virtual machine (8 CPUs, 16GB GPU) | + +## Models + +| YOLO | RT-DETR | +|--------------------------------------------------------|----------------------------------------------------------------| +| Latest generation YOLO model | Transformer-based model from Baidu | +| Detection & classification (& others) | Detection only | +| Smaller architecture (medium has 26M params) | Larger architecture (large has 33M params) | +| Trains very quickly & can train small models on laptop | Trains slowly & needs more GPU RAM | +| Doesn’t perform as well | Performs better | +| Well-documented & integrated | New, not fully integrated to ecosystem (e.g. no `tune` method) | + +## YOLO family + +
+ +
+ +- Ultralytics released YOLOv8 this year +- Avoids anchor box calculations and comparisons of other detection + models + +
+ +
+ +![YOLOv1 diagram. Redmon et al. (2016)](./docs/imgs/yolo_diagram.gif) + +YOLOv1 diagram. Redmon et al. (2016) + +
+ +
+ +## Model variations + +### Detection + +- Freezing all but last few layers—increased speed, maybe increased + accuracy +- Tiling images—better detection of small objects + +### Classification + +- No RT-DETR classifier, so just trying different sizes of YOLO + +## Model variations + +
+ +
+ +After lots of trial & error, best bets for detection: + +- YOLO trained on full-sized images +- YOLO trained on tiled images +- RT-DETR trained on full-sized images with freezing + +
+ +
+ +![Example tiled image](./docs/imgs/tile_ex.jpg) + +Example tiled image + +
+ +
+ +## Results + +### Training & first round of validation + +YOLO works well on tiled images, but it will need to transfer to +full-sized images to be useful + +![Training results - YOLO & DETR +models](README_files/figure-commonmark/unnamed-chunk-2-1.png) + +## Results + +### Validation examples, DETR model + +Validation labels; validation predictions + +
+ + ++++ + + + + + + +
+

Validation labels

+
+

Validation predictions

+
+ +
+ +## Results + +### Tuning + +![Tuning results - YOLO variations +only](README_files/figure-commonmark/unnamed-chunk-3-1.png) + +## Results + +### Tuning—what went wrong? + +- Clearly needs more tuning—these metrics are *worse* than untuned + models! +- Pick a model & tune extensively & methodically—probably YOLO tiled + - However, that model runs the risk of not transferring well + +## Results + +### Classification + +
+ +
+ +- Works very well +- However, this was only a very small dataset + +
+ +
+ +Confusion matrix, YOLO medium + +![Confusion matrix, YOLO medium](./docs/imgs/yolo_m_matrix.png) + +
+ +
+ +## Results + +### Inference + +Screenshot of an earlier demo + +![Screenshot of an earlier demo](./docs/imgs/demo_loch_raven.png) + +## Demo + +Working interactive demo: + +## Challenges + +- Many moving parts to work together +- Some components are very new & incomplete +- Hard to find lots of high-quality data +- Google Street View images aren’t permanent +- Formatting images & annotations to be compatible +- Reliable, sustained compute power +- A lot to learn! + +## Potential improvements + +- Need a better tuning methodology—switch to W&B +- Longer training—common benchmarks use 300 epochs +- Add slicing to inference step (SAHI, Akyon, Onur Altinuc, and Temizel + (2022)) +- Label more images for a larger dataset + - Can use AI labelling assistants + +## Next steps? + +- Use the classification model to add classes back to detection images +- Infer on Mapillary images with location data for spatial analysis + - Mapillary already has so many objects annotated, might only need to + do this to fill in gaps + +## Conclusions & implications + +- This is a potentially useful start but needs more work still +- Surveillance studies, movements for police accountability seem to be + tech-averse (with good reason), but there is a role for the + technologies deployed against communities to be used by them as well +- Inherently reactionary to be chasing surveillance state after its + infrastructure is built + +## References + +
+ +
+ +Akyon, Fatih Cagatay, Sinan Onur Altinuc, and Alptekin Temizel. 2022. +“Slicing Aided Hyper Inference and Fine-Tuning for Small Object +Detection.” In *2022 IEEE International Conference on Image Processing +(ICIP)*, 966–70. . + +
+ +
+ +Neuhold, Gerhard, Tobias Ollmann, Samuel Rota Bulo, and Peter +Kontschieder. 2017. “The Mapillary Vistas Dataset for Semantic +Understanding of Street Scenes.” In *Proceedings of the IEEE +International Conference on Computer Vision*, 4990–99. +. + +
+ +
+ +Redmon, Joseph, Santosh Divvala, Ross Girshick, and Ali Farhadi. 2016. +“You Only Look Once: Unified, Real-Time Object Detection.” arXiv. +. + +
+ +
+ +Shao, Shuai, Zeming Li, Tianyuan Zhang, Chao Peng, Gang Yu, Xiangyu +Zhang, Jing Li, and Jian Sun. 2019. “Objects365: A Large-Scale, +High-Quality Dataset for Object Detection.” In *2019 IEEE/CVF +International Conference on Computer Vision (ICCV)*, 8429–38. +. + +
+ +
+ +Sheng, Hao, Keniel Yao, and Sharad Goel. 2021. “Surveilling +Surveillance: Estimating the Prevalence of Surveillance Cameras with +Street View Data.” In *Proceedings of the 2021 AAAI/ACM Conference on +AI, Ethics, and Society*, 221–30. AIES ’21. New York, NY, USA: +Association for Computing Machinery. +. + +
+ +
+ +Turtiainen, Hannu, Andrei Costin, Tuomo Lahtinen, Lauri Sintonen, and +Timo Hamalainen. 2021. “Towards Large-Scale, Automated, Accurate +Detection of CCTV Camera Objects Using Computer Vision. Applications and +Implications for Privacy, Safety, and Cybersecurity. (Preprint).” arXiv. +. + +
+ +
diff --git a/README.qmd b/README.qmd new file mode 100644 index 0000000..c796c94 --- /dev/null +++ b/README.qmd @@ -0,0 +1,310 @@ +--- +title: "Re-surveilling surveillance" +author: Camille Seaberry +institute: UMBC data science MPS capstone, Fall 2023 +format: gfm +bibliography: docs/references.bib +execute: + echo: false + message: false +scrollable: true +nocite: | + @T.C.L+2021a + +--- + + +## Background + +* Police surveillance cameras in Baltimore form one of many layers of state surveillance imposed upon residents. +* Little documentation, control, or oversight of surveillance landscape +* What role do tech vendors play in surveillance? How can open source tech be used for accountability? + + +### Tasks + +* Identify cameras in images (object detection) +* Categorize camera types once detected (classification) + +### Goals + +- Improve upon / expand on models I built before---**DONE!** +- Map locations of cameras for spatial analysis---**NOT DONE** + +## About the data {.smaller} + +| | Google Street View | Objects365 | Mapillary Vistas | +| ----------------------- | -------------------------- | ------------------ | ----------------- | +| Size (train, val, test) | 473 / 119 / 79 | 393 / 107 / 54 | 3,202 / 929 / 484 | +| Setting | Street | Outdoors & indoors | Street | +| Used for | Detection & classification | Detection | Detection | +| Release | Maybe a TOS violation? | Released for research | Released for research | +| Source | @S.Y.G2021 | @S.L.Z+2019 | @N.O.R+2017 | + + +## Tools + +| | | +| ------------------ | --------------------------------------------------------------- | +| Ultralytics YOLOv8 | Models with built-in modules for training, tuning, & validation | +| Pytorch | Underlies Ultralytics models | +| Roboflow | Dataset creation & management | +| Weights & Biases | Experiment tracking | +| Paperspace | Virtual machine (8 CPUs, 16GB GPU) | + + + +## Models {.smaller} + +| YOLO | RT-DETR | +| -------------------------------------------- | ------------------------------------------ | +| Latest generation YOLO model | Transformer-based model from Baidu | +| Detection & classification (& others) | Detection only | +| Smaller architecture (medium has 26M params) | Larger architecture (large has 33M params) | +| Trains very quickly & can train small models on laptop | Trains slowly & needs more GPU RAM | +| Doesn't perform as well | Performs better | +| Well-documented & integrated | New, not fully integrated to ecosystem (e.g. no `tune` method) | + + +## YOLO family + +::::{.columns} + +:::{.column width="40%"} + +* Ultralytics released YOLOv8 this year +* Avoids anchor box calculations and comparisons of other detection models + +::: + +:::{.column width="60%"} + +![YOLOv1 diagram. @R.D.G+2016](./docs/imgs/yolo_diagram.gif) + +:::{.content-visible unless-format="revealjs"} +YOLOv1 diagram. @R.D.G+2016 +::: + +::: + +:::: + + +## Model variations + +### Detection + +* Freezing all but last few layers---increased speed, maybe increased accuracy +* Tiling images---better detection of small objects + +### Classification + +* No RT-DETR classifier, so just trying different sizes of YOLO + + +## Model variations + +::::{.columns} + +:::{.column} + +After lots of trial & error, best bets for detection: + +* YOLO trained on full-sized images +* YOLO trained on tiled images +* RT-DETR trained on full-sized images with freezing + +::: + +:::{.column} + +![Example tiled image](./docs/imgs/tile_ex.jpg) + +:::{.content-visible unless-format="revealjs"} +Example tiled image +::: + +::: + +:::: + +## Results + +### Training & first round of validation + +YOLO works well on tiled images, but it will need to transfer to full-sized images to be useful + +```{r} +#| echo: false +#| message: false +#| warning: false +#| fig-width: 10 +#| fig-height: 3 +library(dplyr) +library(purrr) +library(ggplot2) +lbl_path <- function(x) { + x <- basename(x) + x <- stringr::str_remove(x, "_results.csv") + x +} +read_results <- function(type) { + patt <- stringr::str_glue("_{type}_results.csv") + files <- list.files(here::here("best_wts"), patt, full.names = TRUE) + files <- rlang::set_names(files, lbl_path) + files <- purrr::map_dfr(files, readr::read_csv, .id = "model") + files <- janitor::clean_names(files) + files +} + +res_dfs <- list(train = "train", tune = "tune") |> + map(read_results) |> + map(dplyr::select, model, epoch, + precision = metrics_precision_b, + recall = metrics_recall_b, + map50 = metrics_m_ap50_b, + map50_95 = metrics_m_ap50_95_b, + box_loss = train_box_loss) |> + map(tidyr::pivot_longer, -model:-epoch, names_to = "measure", names_ptypes = list(measure = factor())) |> + map(mutate, measure = forcats::fct_relabel(measure, stringr::str_to_sentence) |> + forcats::fct_relabel(snakecase::to_sentence_case) |> + forcats::fct_recode("mAP 50" = "Map 50", "mAP 50-95" = "Map 50 95")) |> + map(mutate, model = forcats::fct_relabel(model, snakecase::to_sentence_case) |> + forcats::fct_relabel(stringr::str_remove_all, " (train|tune)") |> + forcats::fct_relabel(\(x) gsub("^([A-Z][a-z]+)", "\\U\\1", x, perl = TRUE)) |> + forcats::fct_relabel(stringr::str_replace, "notransfer", "no transfer")) + +pal <- rcartocolor::carto_pal(name = "Vivid")[c(1, 2, 5, 10, 7)] |> + setNames(c("DETR full frz", "YOLO full", "YOLO tile", "YOLO tile transfer", "YOLO tile no transfer")) +``` + +```{r} +#| fig-width: 10 +#| fig-height: 4 +#| fig-cap: "Training results - YOLO & DETR models" +res_dfs[["train"]] |> + filter(measure != "Box loss") |> + ggplot(aes(x = epoch, y = value, color = model)) + + geom_line(linewidth = 1) + + facet_wrap(vars(measure), nrow = 1, scales = "free_y") + + scale_x_continuous(breaks = seq(0, 15, by = 5)) + + scale_color_manual(values = pal) + + theme_minimal() + + theme(legend.position = "bottom", + panel.spacing = unit(0.4, "in")) + + labs(x = "Epoch", y = "Value", color = "Model") +``` + +## Results + +### Validation examples, DETR model + +:::{.content-visible unless-format="revealjs"} +Validation labels; validation predictions +::: + +::: {layout-ncol=2} + +![Validation labels](./docs/imgs/val_batch0_labels_detr.jpg) + +![Validation predictions](./docs/imgs/val_batch0_pred_detr.jpg) + +::: + +## Results + +### Tuning + +```{r} +#| fig-width: 10 +#| fig-height: 3 +#| fig-cap: "Tuning results - YOLO variations only" +res_dfs[["tune"]] |> + filter(measure != "Box loss", value > 0) |> + ggplot(aes(x = model, y = value, color = model)) + + geom_boxplot(width = 0.5) + + facet_wrap(vars(measure), nrow = 1, scales = "free_y") + + scale_x_discrete(labels = NULL) + + scale_color_manual(values = pal) + + theme_minimal() + + theme(legend.position = "bottom", + panel.spacing = unit(0.4, "in")) + + labs(x = NULL, y = "Value", color = "Model") +``` + +## Results + +### Tuning---what went wrong? + +* Clearly needs more tuning---these metrics are _worse_ than untuned models! +* Pick a model & tune extensively & methodically---probably YOLO tiled + * However, that model runs the risk of not transferring well + +## Results + +### Classification + +::::{.columns} + +:::{.column width=40%} +* Works very well +* However, this was only a very small dataset +::: + +:::{.column width=60%} +:::{.content-visible unless-format="revealjs"} +Confusion matrix, YOLO medium +::: +![Confusion matrix, YOLO medium](./docs/imgs/yolo_m_matrix.png) +::: + +:::: + + +## Results + +### Inference + +:::{.content-visible unless-format="revealjs"} +Screenshot of an earlier demo +::: +![Screenshot of an earlier demo](./docs/imgs/demo_loch_raven.png) + +## Demo + +Working interactive demo: [https://camilleseab-surveillance.hf.space](https://camilleseab-surveillance.hf.space) + +## Challenges + +* Many moving parts to work together +* Some components are very new & incomplete +* Hard to find lots of high-quality data +* Google Street View images aren't permanent +* Formatting images & annotations to be compatible +* Reliable, sustained compute power +* A lot to learn! + + +## Potential improvements + +* Need a better tuning methodology---switch to W&B +* Longer training---common benchmarks use 300 epochs +* Add slicing to inference step (SAHI, @A.O.T2022) +* Label more images for a larger dataset + * Can use AI labelling assistants + +## Next steps? + +* Use the classification model to add classes back to detection images +* Infer on Mapillary images with location data for spatial analysis + * Mapillary already has so many objects annotated, might only need to do this to fill in gaps + + +## Conclusions & implications + +* This is a potentially useful start but needs more work still +* Surveillance studies, movements for police accountability seem to be tech-averse (with good reason), but there is a role for the technologies deployed against communities to be used by them as well +* Inherently reactionary to be chasing surveillance state after its infrastructure is built + + +## References {.smaller} diff --git a/README_files/figure-commonmark/unnamed-chunk-2-1.png b/README_files/figure-commonmark/unnamed-chunk-2-1.png new file mode 100644 index 0000000000000000000000000000000000000000..4617fdb803e1be4c49f29068b1af1ec400bea403 GIT binary patch literal 59396 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 z zDPhJc9FPz`HLb?=LVz6_yPn?Z>Ml|;b~Iky@aCr`gB+vJ_0__y__x*|B2tJsuXzO; zU^+xEJ2n0xiPVPv%}gpOhiDztds**o-<(Col996o6k9G0OxVa}#ck`;s_yurb5d)V z4B_wP5u}$B-rXWy)Iy=Fy7593OX|)}pfP7GMS|ESbk197eB_@NZ8wYXix2jl8ozjD zg=`<4jnzRg0OOh;Ut8P?whG3_R=mxPauCe5?3Uf`&>kN>dqON!sq5-MzGP)DR&+r6(a2qsK)RM^|AzlLn>C`Kt6c>7(zfYsmBv z^lwna#xW(v(?BHljnEJYJ#<6gzbVpmM^A{$d1TNuM3)>-1vx~VG9Ls;BvfRJ67xkF zH!Z$133bHi2qAxyM$Pq2_@W1h!feB)DyGa+p%KbC?}d9Q!VI{4gbNc4Q=02LcnnyVV}e>1&z9C&&0D(s|! zX`k#385QYYmFu=5Nby4lc97_22(*=ghu zfYHiErKZd)$L-q7;{OU4(?V;IP(ogH2(HR~>kKysb<62-Fa5=rZ+A_k^c73b>%LdX zb%mPpAPjkYDT+C!y+e{U8)J#cGMmx)d@Bguzo$ z81cbQILw&|wu|5aAlglr=5hBb$CVN}UbX(&uc|L+l_-O;P`yQ-T3?V9l>3NtoT!M783gRE%eT8zF_H+jnsNm;bPyrmc9;Yp^ zcF3QCF8lXQnbs94w+(~b6#sNNnr#WC4Har+Y=)`X3?Dcb?Aqwq0x>Ni^;!He%|>WZ zP-x0OrWF$S(^ZKHlt>2ns9*N4p6034C%g=F-I0nc&g`A$*zpZG3IhKTT-7M|b}`C> z=cu2b>emVhT3>*+Jv(ALoz3#iuuL{;-I8;OG0yP1&VX;E?&8cxY4{&L!ixEXZ1 ztX#*BJe{TGs*4+3@(@z`6goh7muBq1*!1qw?TydTP|dCv`yURp0gHB9CI*=B{=fU0#?EmDc* zeinv7Nbui0N6UFQO@e}!+1tgG)Aly+5503$$>}7bp6+gHSR0j;TPS@=ri_X6~n^r|uosttN zzOeEbEDwu|Axc2E4lP}4PyqnkfLfBk-P~n+*VCn-jmI8uTDGy5%x>_-!AEOqR_`2!V#txzsn$TcHi+F-i7#fG z_J&|Ctj%^G`PPxeUW(Uu6*-qA1cs=5Kqdw@YcoZJDNQ#M3V;lBy{J6gQOZ2ZzPCml zP}GM9l2pC)4t~Wp5ajuldX_{wI|2?LnHIey-*ypb^nFg=r9GA?fg08SsKWr>N}q=* z$8K9%ctBzkaKM-x#_?h77gk@l!`b#g3e_gwY-X1meeo`;K)+~4eEid zREvDOl_wigHTcyUJ3&Fo`m00SOjKtpB?l-WS@eH*SbVTd&z^h8+gAf1U4(-ywqSL* z_{?Ejgt^it(hR_jZ9?CqYlBAO%iprcR^E@Bt-1q78d7j_z4&Udw_n-Sb zw|{ibX79DvUhBQy`@LR+blM{H>MM87s|Qi{qswInw*c~$azBZY23az*94h5C;ma`; z5yf1@qN_ipxXdU3Xm>-_4fl)I#CPIdqVzKwm5ROC{1Z$^kWHSs%rwSmm3TR^smReT zzHa0s-E`XkoeOT+H)Z`1Q!{Md{dsc%xJlEUfC#g=P)2P?mDI954jJB771u6aLcPD? zMXGqWG(^8Uw(pa@*1W%JZDUFtZ*ohQQMJPUFZpYo&mGL!3fW_ISE?2YrlFP~sBA@% zhDJBKm!t~#qi9lw<@{Cyyu)Gvj7)$$_S4n#^+FEEkEw_`8~9_(Oc5)R*Quns z?xSlt<Ag@Whiy0a@o;ApD5wc+t}~#eF6koOLGK* zYrbZDyzi%O?qhaeSJzR}XhV^(&F;N*XZG6@ywh_ z#-gY9GhT9?w=re$H2_NLo?^$M)bWIL^_xOwSpj|nVR15J$k?#X)x-q9jffXAMicaH zC>CuJ$w6!W!y2vb*D1a24=i~5 z!<8!7@8~z>x3FimWwJJv7sd!~zF)poF#(!8M->z+*`OIJ29nJSLjMMOI>xU^^ zIh01e;s=IByv<3shrW2PsY)4XcQiTCbRCW6F&)hITaN@2ZIZZlEJ(&y$zMqpntT+# zobfn|o$zJ4?*&h|u`n!3-@V08Gan13SH)tnL<7U54oMJ5HYhd(1S#SAW_Dptvha#* z*c%a5)H{dsM$Askkp*GvVpL>D^b=gW5XD+!m;4Rp;KPbiB6qC0iPZ z&^M{eu_3~!UNINyHtA|j!MR=qaXTeSdu%od%}D17gs#aq)BI(!U`K^r*t=>r?&ZDP zX!;eN(OTD*uWw1;*d6`c6l5Lfs-)N$f8q&lA**b6kRY^p;TMC7=zqC4xko5+i^CdL zFrH#x@Z z#0Bbq7}p*>qQBzW75Dsz2Zjov9>vvBP))3d3>&XkVh4L^pPUht^5J@+KIog7KUw%yJgNMcASiw!jI4z!%~sLu>w zvba%TjhiqMS2fK!Ja&%ygB?^>02Pm`7?+N-Gbz*`!wIG52}IF+_{JJj@L}BjqiqF7 zDtBawpLEm?#IofgcmI^>9N{jxlR83WhXF=SY=}1WOuhNiu80uepuY}gdA59!T=b}i z8qTX09*YN5$yn|Y2nBXyFg|6^$3HCIrP8AdOb|i_9ACoMM^*YEuCD)A#MGO0? zj(buXdcV|}q{=4lNT$p2e9r*ZM>Z{Th zG$h`obs=M{6nwgYxDfa~aK3$WVMb+X-c907JXZ`B zZZcun^Tx8#pBnR9g8RpN1}jNc)uzX2!p4H6`Ks0ld3^4Og}y#f2D7NB2zK6y=p_s~ zgNR=G`03N!qCu#&v3aIdtEKjtq+m5(u(j;8@0;}m81|HhI4!SFnu8cCA7kX0Lb)(Y zv}P_NPR-umztOam1xFP?80$RI_6Q!4Pa^M)LmY|#rH7(hnOSXI-Yoby_V!+@2<%Kh zuY=zFnkH`3^g4<`301H%9b>JbP&PB-b*UhzAW+Ucj^~o*xPzmkUh%iL>f;PeL5Y7h ziPO?pRRlQhZ$JDHGq$P7fBKO55T*Y!4f?99`OyiSztx#uFvr!@TnJO*-bwmxg_{K( zzUN=k5)v3{F0HypiTE)!x|9&;U?zlTyPq zorgD;nzu(PD$X?y;~Pg0T-)PL-f*$-9yZ0Qb!fyL(E|%~KUI80)OyTu3ATs=X~KgU zo_5aP2uwZT167Z^Mu-yaVZe{pF@3A#Ka+=GF+F6qU-q@KTJQEFo6Gu{PED9Zg`8h< z6Kye+Jc3<>XAK|4gX!LY8a~O`7d0*jekUdDKey5=0N8+GN%d~6eJ2}Y+~8SwGuHBD z_oq)hSlA2$*!#HS6DhPA`!Rl*3(9T88{g#>B;L5gshnRp`l4vLigS8A9NK*p6cj;w zeOaKm?~<&!`AO(yXroG?IB^^1kuVhNlRB73wsu%@`DNHtX8-gbbMDLuQTxdj6q+C& zkZ6OP4Ay(DipK9ufPI2>`3^8Pqyuq2b!L;tV^uF>G?Cyx5qR7s-c8T%(R01W7`Q_{ z9X&tHsetT4h!vPF2s3 z*xP88S>F%QCw4_OyMt)2PqHdfJ*%(Zoz2hcpWozYcll9a_p{1z+%@q!6!_WL*?}1# z9XAL?{}PkRcf&l_b2j+Yo}9K|2qy zQ-WvDS~mOLCEiQ9ag*2L&%5*eUnDKSbkEe3ZHZ-<@n3e!Uvk~yC3b(0T$PIexBAyp z?f;E%gv{a3JPaibCXs~q_o~xZQgqS6=5@MnYQX{lY-NwG1j95Pd__k*+yJq^5!sE|KxZK$cK;WYwS$41iznEsXkupBGe0{cFI?l|{EORihgyzW&_ z&M%m=J|KoBBqRj93_oN{dZ}T)OoEk`NEyr`;AW)21kbx=|D;TpXy9rzQMMPKjyDy+9>@i$CqkjRl2-YTZUL2?=8N_BHdZQgk5_p8Y(5~Ho9_S z$RE1bhx?_IW^Y5$xP; z4|1=h78MsmOfu8eb)WkxQ29fvzh&#E^Xb#4#~q1dM1nZ3OsM%gsjleaDU;9|g;eAj1BrFNQF@9B5>2E(b)K6g!D?=Tbzk4k}W4?O=OUVeKRD`b>8!b_$y!vOj;F!1l2F0fUlW z+}smESiVq#9MbMqFrjH%H&TAYz!$8rYxMswW?wYVrp`=HKWsck%`N%+Pp1+Olf2>l zceCm5@BXLj;J=)l|94O4@Cy6!<1mfF$;pL{UvHq+!P&s( zUFabTBmA^f%M+P9XOK*^e?Q@}qh$K>>;1A?BaQd3f(Uqg?OlYKM&<6^^WE!blE5Cp zQd3LomZRgiujTVEnF>L#Ynx$cH@;5K%nX2eS5Y!B4`Bl1zf@l~Sp3Z?J+GN_Ze_d` z1QzBS#%$V0=omFYdmN2EfDzA67=kbi6vxb~GcN--iy<0=w?v=hJ-9WnX&DCB5xH)5 zT1tSs=FMO78>}l1%&O|4?)0@{Rn68-sJ-aB#>dqkAHy)m1o8fe*X-=annisAEE)OZoR49vK?ax=>tF07W84|19nz$xBvttB*Z>;;&-_B=shXm=Gj*Q zLog;LhDgr?LOXyc;Uxy+vf$-!Z$Dk*GU!JcCx2n9WOiHQa4th;c!q03WKIFBY|vHR zPb9)y)_C0pYg~rvZbPswHZ1j!=D0+7L!JFv{aycNEJGA4WFvQGx`yj+PyDRjK58`9CmF508E;s;Sb18@KY4Ly{$PhX{gE1I zju2{FU~PltC_1nyvAzDzObw{?10%0H9V`Qvfsu&zTKG<{fMe*%mb=I)<6*nMwHSR| z6yL6Z=Vpm^Yh1j5>}-QY4+y-+a4C$mABEa&Ns%l42Jic}j^pM@%Qg=nDQwxBEAB>b zbF_*<3T*Pq>MbNNFq?;BVraWB07C|{p}|@=Q2~M3nth1JeuFzdonJ0){UAd-TAmN^ zO1W95xE;lwT6FU1g3SZyXYGs&FcrwC=r%a`o(;^WikNLduF1^ITw>Y0XVkLytp&gN zQc;0dN!^$j{ShSPti>LTlyLH%j0-Le;}6*%Yo7L<4d)7!_SBdgO&J5_i; zYhGJT|z1!{Gs8us$mRwJr@98p3DUYT6|*4x4`7m@KFLJLWC*$y@fqH4F5b zI$_NEX%|HjC>w)b=i_Mm0hQ+zBrYjV~+HO zc6F-`x9;Ed+d+?xuFv>C>6XJ`+9f-`)@!z%SX~|^XzAQ*{NQK#qkpKLtV-CKYiYD) zdDD-H@C>|Ks%_foNF`q__(U=UN2uG_*j&Fpnjz(;JP8Ov(606lQ_6<)SJ{u{sCJ*E z_Texkp!#_=4o7YX^T4#Z(jT<9;RptKL~FHj;408rAX!tS@B zSrcVTkY<;c$Kwz7M@B~C;^O#qFrO_5Q}fuHj)DRL8m{dVtAMZr0e8JV$=nCFJ$c$0 zTT8>vtg6k@-eOY)}aAKi) zwc$g0L{a&@Yps7X@jAne-t_eJ%b=ux>y~i2(D_b~*N1CmW@i3);OpxfnTW&Ta&mIM z#{0Zjk358(6ZBudez*=lbY1ZA9E6I}j7LTc@i1*gz zAt522_9Vvo^#f|HnX#{-KEV%gBWI5ya|xs ziHV8Gw$41qGdvZo;}Oa{*}CcjcaMTY+K*bd>!%oi8?bJ9xn^^q$z#-dI6H!PDYIHv z$OuKGb59>*W^VG|K6`h_zLF@(z!qC(T>cBll#nwXmiE!n(Gg=^n4iCr@1vdQqWuMT z<#SMG**v6>gVoMPrx*&#$~ZYVZaF&-f?D*};^1Fq;%c|&5+!=8e2uJaKUr^ZbH?)% zls@TW_R9$((HaTL;a77yV>;S#BxOjw|v~s{LBBFf)fJX2N z;Xj`U{FEq z(bnz+q?DA~NYkt0X2|S8+{(h@Y1w>3SVA!nwVUi0|eV0dOGM^^Xtu#w7n?MA=Nq8qFrQV9~En*IvBZK-0nIA99T`VE_!z@Zx0L%v|E=;-0br7^17;}U0Z|GdSpWb4 literal 0 HcmV?d00001 diff --git a/README_files/figure-commonmark/unnamed-chunk-3-1.png b/README_files/figure-commonmark/unnamed-chunk-3-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ff1eacabb12c46ddd84515aaf77f9c3c5de056 GIT binary patch literal 22030 zcmc$`1yoh-);7FFR6vwX34)}wlz@P=2+}DnAt2p|bSjOMl+q!gbT>#SC?X{yE#2My z&CPSpbI$jk_x-o*o9s1-r zjlVk|tyEqinrjWhze>c4y^9nveP&|fHa7R}-8%)ro#>7k66sG}!e@2w-@jkGEJ9q& zoDdi1H14stGrF)h#CB%2CJRFQKHGvDbR8A&{b?NAjLi zp*&d%DMBw6e_kWyc9vf!VN%|p%zXX&wM-oAhQOLFuerIob@j}Rkk6C%7aeOazBVk@ z_>sgr3jye@{D0@gnq&xDskF;$7uqK zQK(%#>A*+fvE7rz?{uAj$$kRUA#i@@kX9zPYIK#Y@py9!u6}H#o`(yGiHUV} zb;73`;l9W&D$(|_dN1=yT{@7{QNw9iu)#N!J4i$V^HNfZPuELk-#p!zE*-;~$lwsHuxAll5 z#(l5T;}EunD!0AW%5l%5QK#{f{i$$4yWO?%@sSbtWiIK>n>Rmys+4Q#=<4d~>9H+`2L&-QGAc0;lp1%IXfUVM zyAd;zyUwS{!O+PbMm6hsgioY!@Y{#))^TPX` zMqk9~7B-&j4pX>HSF)%dr!#6N6sHv@e=p4s>{Br7BrQ=4_Hg#`^VNp|^yUz(pU#~_dKj$L2$$&-X4miIq>kulP= zO(z$SqU}wuuJrZwVN#(s;qgYBjI=bGyA3DymfqQpo=yGEuPVDK6(-ejdJ04uE(Haf zB}2@&)>g62wUpSS-Ib&1CibMQEOq_KcB+AjtwUw2Ev`1;JjJ4OK$r{$Hubi z)@f9AtLu5tE|(3jc=Qo?r(Ip+uZES`YdjOAdbTy&DK0Kf%5CYq_#vABOI%7SXdQjX zBB$LColhY8o0rg$g0wWGxYaJN)90dreG7FC3vY@_Gcq3XPR#dYV7E9oES6VR#>K`8 zZGDH^n5bFfu)x!JAgA#CuHhHw2Gfd)im;oUkAAB$5KvXqBSbOYK^ldPHv0QF@gKL^ z{QQ-lA0ESAPHuYoyTa;;f`S6C1n{W181ImEQ50UVm=s>xzonFZKEx3$Gwq?C(1Iws z=ohR#-;8U#H|DnHbMeZL6k&zF?JT*3)A6$-FW-nO+2^&&kOtoa7!8 zH+MyDuEpN!D3@G7?IGf9ZhfK!&LP>;0RkR!g2!;fl}*^1Y)>kda|;^`G#z0#LHfKA ztk>Xv0I|f}u{u<~G!Z}%Td|8c!<%%nH!+#}{*LpBmX;;=FscBwk-J%@Dn?$#ba*S5 z$h$$*xc|AtsACoC46Hh&5nR#D&COUgJt0VQkS{BXiq_Kt$Tt(uAb+J~EkG8nt*UY! zt8;-WS~=IvQaQ4@3>#+mw;^i3Y31vdo2wG9Uh$4duxU83@j80qy#_hzXqY54tEkBK zU~?ujGZRwh$?;ZKi^mnjSsCPZs7EfIKbLm;vK99DUNv2t{gDJG49PGYl^vKnuto*@ z&3D$k&W^HEJZo}t7z72$9`8SF_uWqt@I2lpyrU+t|K}B~gXenFl{u)CiaG6>>)27~ zC{%)ITt_ECeWk>ZOuc~m=B4-l#Sh|S~bJyY-?F~x@i@X!vHS&Lr zjg8q37>E#vzw0y}lu!M-RX1pv#lSQ|ctI3HU-OqGckSq^t@<;O(a}-v1eTF<;)qe} zwZ%m&Czek{37x-2N6A*Tu-jK06FQA!jaqafFTioK`)(dC88F%)5X1tpMmPN<8F<_5 ze39{4GsmGJMw)}3QwEx`b1qW3+5P5(Sbh#07p5^4{&_+4-3SD`GgFLorm_@4qLF6p zXhDx@nO44795Ho3OPcZr2>WIo+%;lH^=yZRIf35CuMh}KCIlp5b zL{4t*oqPAn>+0OM=X=m^VqnL%V{&zru+?w(epJov?d|2Z{N3H%t*EU%a#kjMJb?q* zYnP_m%F3#|yqqs73^}>ugt|2%NXZhrm7(&*#l<*1Pff|x;o;#*>(LsQty!rkx)sQ& z!xdIb1BLYMB2SCNJPQ-~UNFH1p{JL~?u&_zz9r;db#}ikjLgE^eDiqTz8Ztd&d!b` z^if8S9)drt~eSLjT zBS)<(9XM}dUaU`&&$g6M-V#`Ito3vK7Qy~Vx3@YG3JH5RDFPvh`1(j({1Vl(iDtiK z!AqAeJeEd~nbE6jY%T1!+6Gq~gC=nz*?p2)CL*?`T%_=6%C%Nr z5csrXmi3$WFYPo}=oVILFnfe=3h1e-mOuOYrmBj!OFlTgq@?8Aw{Nc>8LF!G@2(6F zc1F|4MzogXS#qj;8EUt{m)!nstKQ0=JV$$i^K!!X`Cd`%RhkX!^iPz= zfzEmPQa6n#i_Inq+S@1j2iK+N-#@^(Z$I4*_{C55_9twy-s9I(yc0LyiERV~X5{Cs z1P@0PsC;#xWIGs$Lk7Lv5}*i1=YzZkCGEE(Us7>#u}3($fU|A0FQ$u&3qY8iWmyFU zy;{foB0;BB?KA~tFC`_V-q72|#97(d^xWLPIDd**$B&&T$$qPRlO;sD8tiORI!Npv z6dsP_Buctou2e!u~t67BjZw+ zzAQNi7n(oVt)^VTN)~ID+@x}Sx+(4*57y$^YQtFWb)G1iNM3i+spCxO?CI%AW>cZM zZI70em^jkiO=($KRz^dAHr(N{G5HzFc_S2sTW!_a1)oER27dm;XuN15px0=DbNkAl3sZ3hg3*>RD}Xs;;Ypa}_2baX~XMg&|orwd#g8I_S`|9&boO+8=H&knuZO4wld|GA?}bxd<^csV4QqbU02& z?^vDEWV5Wl|4?^WsdSuE_3*Bgi!iBuKb*m{Z*T@X`qO|QcU(Q-?8cKIns0Mo^r6DL z@1yoX#o|}qhmRlA8JL8Hy=K3^Yd#GQ4xUSPW98&5^@?2R%dRXhS5;H%@20$|DTBJ?=xHP{*-|GL!{?k49CjO&MqkUVS|hCj>Lw}`_sA;^a#-4CMMoWl2=z&w%=c$ zXpngFqy=>`gIhu!o=X7??;Ahz&4e?iM2C)WvG)I~;7j2=_2 z-fO`#ygw#v=NCInAqWMu5^?Z-0!mfR!8hMt4k7dnJn z0?yqwxHy2jM=wgo8j)QOP|LlxBg!PuQR9Xt5VdX{+D!iGgS4tj4pGNb%~&H%*#rzq zK3FZv`1xrw{M8c*CDD!7TfG*Q!FX60RMpkh(E9;~gMOf(u#k<332&E&n>$_>8q)WI zZoAKnjBaB4zq*2BY-Du6z=2nlAJ-_Lc0G1(Tz@N}?A6n~w*dSL9wfPX2P2HC<81YfZ_o*XzsM{ZRXdiw1Yii7rsn z`D8JCo3WQ7(AL2JVO;80#YV)^)J_^U83W0mFi0~vt%=igQ{Ktz_MKqNVbNT( z{4bWJjfTnKx9EIKOwu)eO~n2S3kyM^q5aTq>NMXWA{%CLl+9Fz4fr{1F`(1fkeF_J z;1X=zCMAh*QjeoY#pyfT4b*Bmf!WqYpPs-pCK_ zW{UbP1jBE{0MhvuD=R-G_MhU-?PpRt_UYzgag_~D7xlV5t+$mVL!h0n<`x@$Sb2h{ zgM%jVA_ezuJe}j4z#e$_BVH+@Z^eU_TykxnKTA1b7TzMcM(g-JCnu+S977zcn3C>u zZ7C|B%Lv4Jv#U{f$1#qQ=zab$sXYvQgeVTC!@gYIo@&0NMg9xViqC_d+R=&##O=gP zm&(ANXp--b(b?T8eXa{<{>lj^p_OKE@V+qsGzqXx%r|88_4Uon7OwUAt_@cfLN-`& zoSU7Ejf=Y)GII#Y1VM?Pmz%K_az=26r0cnXUoZ;$*8L;30QAw)8uGtJNSmZOU*vf_Bh$H#X_p2Tg1%0v)az-(FednW@u&AY0 z%(lB?`&qb~q*T6=@#RYnsBMjOWD32@YSf_7GZa>UcSl7GqU(>2rKKgRMPG5?tN(E^ z9;hu~`P9|bA3rX&oBARWjPWQG&*XQG`gs}4xcl?r>8MtIeMV-sU3TDILqo%BQc~2H zw?qC>&Z;1E6m^LZ2ngM;HbxxjoS#;2lb$65fNVoiSjB(_V3ZObA3%J;Ocz6IuS=3lu z-1CfsmX>y9u$2DJosOsMkRjRO8;Qus+e{OrQq>mXn4e2kWFCHCNE1;$XXT`!7a3e# zU4^Q+z&a801b2YeQPxis_t255c2r(TWxnt#`!ebbIIcDo8@2%_^pXh;>B_O>pE#*J zCIRImc_Z;n8%vQ6PEL)7i@C!4O*kKOb1yPer+ z%@i-Jl&i)#v47-Y4ZuDu@tnE0-~W}z-26fzhp}jtF+@7u%0XyV)K5<6zJ z>YVMMkV+<3Q8MX&n|7hNVsG3>TKW0CyT$TPlgt7A$% z22Y^Lnoqxcd6eB(ZQlP8XrY~cb-k1RLeG1S%fI2Dkf5)toVVH{{$ieRL6a}PfB*g| z1a&-T!gee?6tx0$%)&zALOF(7x_1+<7Zu?+J`o0;Tzr|wk>fZdhsmlMp|ito(a4ul zwLkA8#0o^zBB~r$v|hZ}>0oPQrs>uVc}j~#%*8x&4KdkGKboePbDTU|;jyxMDq!5q zLntk5=x8X1V`e}fq{5FN7CJ7V+-SbamMGxzCY@niya?|SHVF!XNQnLlN4uYYGbc^)$Z{? zTOG(XKh0mLs6@x1N&;M?2-bxH%85!zZ#$aKF5a*y7oparsz@&uDtgvfqlc(Eq9;m& z^3HI=xtoK^=UXxKf?ig53~n~qL0E234 zu8YW+-L_iWH=?SlYW*i~9#?S`U8fLn`?~=W&(xqUlBm*eXCF>yt$b6_OXgdb3L94| z+XHois23_;1Pv-233j@!y!sJk@uhQ!jF7))?JJX29kFT%_FtH3yzd1e0fB51pXzUG zb8~4qIa=TUXyvgATV9#QuksHURDtXT@V0;*du3qkR<{`wnNnMyPm=7g<-?E4>!$Iu zE@N~vFETPRB%Us{vZn@1D~cabtY-&HQ~T!ZOmW?%Tew3AGMR*b4km59@3QRxn%Kj> zGKVHVsYsgoRz-}cYdu_@jMEwqsSFJ@)oO?oKd5|EIaN=@je|w@l_&9y0J?g4r20AJ zLto^7H1&QbJbzqtgE5T+n=q-EJEVCe`n#nLv9Kf8%_z-w_Hlo05sG-D^Kpn}=WibS zz0wz1Y&79G3t>I(=qUI1MaCKdktEin%A`6E`LgeYX8tb#lcj@o&x*iUd zTli%>pZh`RD!vEIQ#o)-{l=OVwYB_obdPFeu$73Ym|~cObhB6npzfqI465N!+KbDg ztvJ?ZS~TOIrt>GsFOX0NNWL}Fspxtt+AU3tkAGW76yNpD4-H0HMv6nJyBDXGb1|s^ zFEQocvS{C`8?_!VFV{8s5w899>(^`7t~EQJE!3FC>o$6NI668S8D-89$-VV@I8O}9 z&pi@{iA#w6>_Dm1dnBO_6yw+}RioBP^7O-vNbAZcx&7a`X-kGz{?Qo(O+*V`^i5tf zYm`sqO&eGO=znx$VSXOAPg^X@6A&V<-{MtNR78dacO==Fhtf$mhYKMhP)DcjO!57L zEd-4%6X)`S*z4hxA8&wbUiA zV7rJinSbB@&2LU%{w^#K&@WDmbs613g7gcAsyo#D5aN{YRcd)0lAKI$v$F^yiudpO}(3k{;ScA|79)?XZoYrSqE&d$%A z|AuayY23jZthCY7(McL!`O(?Q!p1hR;NTkpyazN!SoA}&?@8IF#9ZDFZ$Xh#$C9@o1FbMqR1)$oF zbgCVNo$nAtHR+P9Pdw4#k6p~%asIKv!B`s@m&ZF9fy#UW>AKEk>%CMI6zyWG;fkH5 z0er6PPwg3MxtVUcrOYx)(EyTBy_P{Bh{9U=*FDZUK2?ueOXUXO@Daa*lZRNCBT_9K zc)}ceI;UM_I}xL@$S3X>7Pw^W*< z?;k>9t_j1(=e+eP{(N$BGS8Uv)Zxw&Xrar{ubhV3xVN+w8vF~41GGL$iTW>a9MBZh zPpklt7w!mrSyJewiv0(~dNe3BJ-@ivyWpTpuN-+Xq4Nv7th>8AY$-ZezW>V4b}~XF zA$yK#x=~mNE`gt)e|Tsp*<*K*;`q-M?u3>6$}wpvsSQ_8;1wP|d{s2s+xrG6#JzbC z&#zr>$V1goef&ZKPv{^#2q8=PDWp3=%d>@Xe`*I zZ&sX?^!pKmYT?M{l050mHwFEqD+>rjzp;da>w?#nkgMZ+*KffFBVZIUnk!+PCt*8Gqj8sxpebMp*`YbHcbNp}Gb4`K>m9U#$dM{o@GQsWow?gvZ zIaqo=N&cbt@tjW!0LkOeLXq9-NHxXTejA9UQ4IzN{aJ{5uveh;k7HJ1Y=2PV)9%BE zKc!LJUkw}_9zJTn9qztA5x^xE4vP+2XQTxA!B)x{^Y8-Y zhX^1OS5nJ;0or=WN^{TP;7#c3SZ~>XDzS8Os%(1NZC;KdJVA&86{JEiYuS-sTq!6h zXrcfEyWP07hl^#HF#-1bX9Foo$%vId*GdO(;p5{UR{uV6ns5eob9Ll?Mh`Ez z2cFo}-{ZP>Zu*I!62^3}v0H31-}X~$xt$`KHkR{1qS=En%a#TH*d*VdY@Gr zNOiZ`zB-D4J;`~7e}dO>Spy^|=+A*fad9~SG5X}j1q`BCBR$uJOx0X9P{FKz7p1|g zs_OS%j|90(E9b^M(5@T5p4eb!R1XaenOj)+&BSh85BPN8QkZz)1l}7Z*gvkWe00ue zh(JnF>0)5%SB5L~>YRH@zh$M?*Ly(N0w(8oT$YrVAFHrR7^g<)JNyS{tKTRA`W;AB zrd-mQB^4EF&b`dcghWtdZ@pQOwW56JnJl94j$_7O(D2LagT9ng8ch$V@b1acFOkZ? z`p$Q!H7G3qrD)yG6BPyl7b*ZSFU>ji^`p-?Fo)@)K4fIvUeACn53&^;h3dbZ%@YFOKb=;Vc_z&cZlC#e2-^`jcpG6L@#GX_21*m8q zf3R7|Mum52&P6B?{SaI-4J|0I6SWExF_)ao-Y%Z56O^MlCw95Mk`sTDmu%h8@7tfQ zT#C3qjv3H>AsPwlRwTHouXTN+ulp2vzY=RMdGv4O zkBtUqZ(C2e(4pyMYfv(yD`@{cgDxvCsSzPH&1KPvZl4TLSp4OMkH=i=N)8Fz% z=Jso;sv2=8@K_B+zj=cviR+`5OJ@4nJ8g>hhe0tA;HF$8L9BPhZiI;Et3eML07&G1 zl6-vDwac#@;xJ@7pemJQKlc2K_V$(-2Y1Txv3pl|^D(LD94$({s=V1AvF9GC{}wsW z!j`GbxMTAH^0yV59EK88Oi6yS@`q_&c__z-am*|KE^oPO?&!2W?8Pxjdmfl5oCw{; zci}`#s*?P%)S1~?HFb3!9v+2cf$D~ahMXM9-{Zf3n{vFn%qOh`evWL<{T2$>Ne2f9 z*tLcou`E(jQsDMlKiWoqYB|bIHh&693^as9DnU9eD~q100%pf|!kChS(cS3_FZln!D8Z`Nusk?r%S#6?#M$pR z7nW}D{f!~G#~oh0Sa9GQtiT(x> zNgz#^tlYh43XX;G3MjH`PFiD$ZcE}7qT+Z538oa|rCg-@_AUPlS6!sS;F zDnf98-Ll|{_c^TeP5O7KOI(a%zG&M4Ct}btEGP)mgTfRNED(62Y0jHp>EW8IUo5GC z*Gg0KV0YMNyhv34{X;ZCG09Y;OPJe=*i-0ycvL>*)HL0j0qCxQ%`qZJ3q(6#=~I@+ z8yl;t_Q5wJ3+^5;2*_unK&3@t{f+p;bBNv^oPw@ZIB@lGU1oN6ilCb#@D5PMH5kdC z1~T6WadID4V#=;?WZv+zSdXi?QD0E(jJg280D zezG@CanJlG_#en7wa$xEyYC+QA+XT0va;Gx^E1MQ_@Er=U*G-x`#1E8-D)WQ2O*+c z=QP3Vv^t{Txfz9mq~H#t;IY=$)EorzjXnH}T4 z(RpJMK35osI*OBdi2xjm8<%^|3+!tVPvZ&pcd}49;056VR><*Mr!_cZd_24Yy+$F$ zNI*zGfBw{9j%{vk?(J31+#I*x_Bh%Fp$RU3WMpJ>(>_Ult`cQ@KzO^O$A84)Q~<&U zP<@(AnL2Yv!*;I>?6hGJBtgOkJ>Zc1U%iyZKygHpkqJV{Iyu@yB_yF_K{u>;SvvjUXB;ma9JU4d&V_-jo!wpCYWta2 zI6@kA&c)-@ANcELj);etobd@lRD@_yxIyLt?y-`yD3gG!DN(dr0 ztD|oP*RDW&kfku3ooJUQTtqupn_`YwoNG(yM5ssazmiYF3~cVzRnvy zJ5zb0<>n*GHOy@ga~pT^Z9ccPT_I)V=2n}3`vAl4+z)Zm^|cH2Dg>L+hYy2Qc7~MV z7*u>o^2Bxwm;CiX3xUM_C?j$n@8QqU(fqyzfpMZu*tZvkdiK39N6^FPA6c_a zdvVy1M{g4nrz5#=7I$3Tg<3GC1${hW+g~AK1q&u8R?+{1bPyQuzA;7A)=!jbOW}eF z4r2OIzS_~sD37V=z&#KY`ps!;T9KF+mkbRIP*x&9l5KV+`MU3mwDNmB{7|w&)!3LW z%B^BMrIxGu!)p@Wg{sX}k1{rfa34-9)I&&u@C_cwuTk^^0|P{agqTNQF_NQutgPG% zcN`Kg_T?6EIF^=_xD#Mz{$QO;z9_dv@ts&$zS$%P?jh1{a&q$hRqN70)A-mjOecnO z>>3mj^7wL!mO$|@Bywfn3wJ{~?WrvE=K$^+QTBB#rR8&<*i=MBI)i-}ZiJ2@~1d@M+ z@y+IVFVr6*9z>W=U-`uT$1U=}uq_NIP{$W90Q`U=7fvoXbRP7?m)8f##6F!&@t#$_ znkevVcW2`m9~*0c(*VmIxI1X*>1~E9{@NkLKAY6^t12wgxwg1f+YX+I{Er_w5;_yOt)TtId><&`?q0`LPB*P*5iZ5I zb*2c+TT`sP*ALG%Uz>@ zlrn8N=Y43=Yw z7A!$0ooSD}7c{bTS-y9X%Iz{SR%28&ikK0-!Kyt!*!SOYQ=+PRkkO-Fi2jO`&Ln9~ zbq>NaRX8$kXCMeJ(&iDt@_R`y258ay6FuWzDgzKjxp{ftO}W%mRjtMwbl$GjotgE@ zC9srP4_a~$dioio6w1MZCp65tknmVWX|XR~%*yk@WiUV~D8yx`!$|(iGd2QLmYbj) zI3IaTxZCUq#6R?#4`!LN#>r$Vf8E`E1RV3Yi8aF-;sgsk0yI|1|)K|Np5%N{6Nneq+fLGT00{azJj__fpnJE)7`R`P@5 zhAG7UU(Q|XptT3Zy5X*51pJD(5RE8D6X;_>;}42Y{{ErA7ut$#ZUhyShxski$9Ilg&gkZFJe}@cZQ0* zI~xxb^AsaR`O8J_C_mvo+EJZ56-@UHcIcHmkUza=mHj@B7)zf|HP&e6el9~BwDBmo zasisNc?t)}`qI?&-N~wVF{w~tc%5u9K?JZnH$6Q)3ri@H<1ZGW*W`tqoyBCDVg!0d z9PP8qWLEE$LP-njPvn(Edz8{oB*ggQI%r4p)sSfXu_kHB$<*iLkkrhXU!BTzOKwX!XmfpE@M=-w<)pfU-cEM2@ z34$NwwXlklZu~LFs~#Xsf@Dh0gBJPuWKdZ9%I=|X_*9_sf@f~nefRdY>c!W2^M2t$ ziuVygyvwcTv?xyR$|qZtTlIf5mh#z6`sx<4v9PQ>d7qI1K!xl{g{73V^k!ZGCW4Z6 z%v`^rE{~;3B5ixCUdt$+KvLxJJCU|q0?4P}a*`RS{XX#?$IHRWoR!nK%(vyTzbJ8% zLAh27z`^;(lNk3+rzL-uUL9&Wy2~uS=iZVdU7fAJ=+0ya;-bE%?8`&t9ZQSx2!wLr z!I-k2G%)~jY zr>%J4AE3y!Fg7+GTi@6G^WudZtTF;|ljKy!r6por;Q5ZsVhfHK=9db07U@LXT*o~# zR&N)jh8p9{k>wPDxBPg z{Vj^&GPgeSn^;b^EM?X{Q~ARHViG1~4?1wlqFWC}K-LTk-v2M)X(E{nabguJyz*$Ux8(mvgra=v6LQmWZmBgXB}$(4&ER!$Ll%Sb&UOs@U+il!XdredyoC06-A1J*+Du%6ng zOwl1DjVqtk@`(p=a(H-FoOtafVy;g=yrze@nK|BPESunqPV#IfY{V}7yA%=a&xPk? z*9yl+-(D8q#>_!WTJp&^+{RfoOg8KlYkOf+BZ*YV+l;&iLi zod5$rv?`x|^BG>&-^z7dG6#>AL=TZ#Rd!&p``k=okY=V;Lz{k&L=MQFvy&EKA4lE= z_0zfM#p#2~*2SXYSck_qn}fHOzQu2>+(ev)tJR(Eahy(F$F;HDLP$s2efj+PW++t> zXU~cwXi?B$4iey z(2HvGId}j_URkX_@Nqi{uQIRcEnoPI6X(H0&uJx#VNUqqb%HL&bXjuJ@WHIihVWU; z&z+kS1Oi^O?rrb3oFi~xhIfOS8^>|4M)^4O7a9WD!H$~V5J`4Ut{b)$&ogBrJhVk% zQ`C)qsi;7AW*r}F;<|SzsE`(}7MjA_8tg*pbD6mNfA{}=P+l;)5QdtVgdx0bW}~`u z!0B~L()E{g`W=grfHUjeW)@8d-m<~t0ljf6JX!*T@7otkH-1>|x{;Vv;(qHtT3!?} z_;PBSX+HU$O8uG$`nKP5n5w!c@XqBdV&>$br^4fGBa&nnN7J1}e7QUkL<{zRJK5ph zavwO)+=2qngPAx%Ob0+GR#y4)*|&Y2<*EYOxtiGT*(5TgX>iX!m_bl0GZE&d#M7yj zsp}Hv^GJ&Q;Tw`tiJtw1ZI`aeyc*T!?AjXoCXS#h>dS0F<*B1ov}yi|qtc{UY?Z17 z!7Gxc!IZ6?#`W~m{*bqz3v2psG^Tg`>E@Ed&?oj!Z@rmJ%a=T-85{F_2ZQRI1Mqjg zp7b|A@lWCRUzoULO{Z3ymE-ru5aM>I=!1sHWE!=yoE%&pKFz4unR0?Vgu{yGUV|NmWQ2!8&|pOoHqYh?KZD&5vE ztalF_q_Ey&_+C}OP*AGVPN4NcrYkbpblr4w`=Ozfu2XCMIfqa)==?gtuRT0;djCR2 z-@@zA9bqSre;7tqs-MpRL#5k%cmdrIsq^Oeh7Y?kQa4Q*zg*I*_5O9TRPk)Z2!bfP zFQb#MI|Mum4AJSjx9Ppq(TiHeD63dGdrZYKY0nLo|E{1ed#zs8KMgG_;}Q*olf|xk zR@U?s`62$H5j*ju!RKSyjgWMP+_A872g zqd@)WaR}G^Zc2~X>r3p3)BhuvUB}(z^j`>U6x2r{bFM&EsS7t?I&8ug{Rsslo~gh7 zWu+*pbJd=E+9QxKaldpPob-6dS9AK!jcVIDy&Yi2z&Ts_1I(pAR#g>OQt|XW{U>=1 z!>roI#`dJ%Vh99b4(ho8#%I*v;Iy%@fbQzO86O*)%|dTxT0X~q+urUvb-C*nHvWU~ z(aSxwjGw5%Yx9cu3`sVMZ;9IozPCrAB(&gvgeh0Z%9MrKRj#z{nlLuSH_b-rjZ-uD zoRH7%(d()+&*;Fz$WUlYL_od2B^Vw=o|6tmzrq% zx0pNNhJX%LJx?Pt;*XIzSwKtErAGT}U0YXh?vV-5%pMM34`?yQznkoZ>P5qlg*;#B z!ykLuXi}O$vyox2sPpl=;O@L)WdiTl~fjubl~_1i@}6_Y{~F%x%MQ=?t^8Od%n=`q5?g{icMAK{rYB4TvLasrTvJ6=3?{=hcd~ z);G&_h_0D7g=sYYcUMpQN$0yw2qdyRs^9_HkS+bw4s^|G@f68UNts;V)AmSbgRkENxtsAvQQJzx~Fxd)Od zR(<*rC-G%Y1&fKYeGz$!8iV4Yk-Z;PFOYE<7b=IXiZwtGu_UrwqZZ5PY5ja<+dM=P zT)EAA!$@2A8WF|JceJTn^_E{!&n?>BYD2k%9!tm%8~h%13zw?VyMgd7 z+Nzh$8pz<11944=pTD-Gq<2eJ3CwoR1=(P>n{ZYUHZw@ne*Ab{eENOs-^XVNE*U=I z+PxOvGC}FfoAe_&nH(fY2jF0cS1F&oX>bM0!Tc>8_FmI_AIpC3|9(61>*59f_PuZM zy1vh|9#a|* zcXk4l)iMX9UR!na%g<0;_%7d3z%2}qRFHaF`{@c&J+Kijl?PnO+?e|a(zA|+C-PVAXo(Da6iZ{FO z1FZ3|`?4*s3R8^bIE!^! z^-9Brk;_-}c4mT#1ObFd&3oI_7x~oDz(ZU6RW@*T`3Rgtr)kYPB zKBd_yjch#mVd2yTu#$1fb?km1?An6&Lmcp!%O&#&nZo#Ujg-A_;ggB@R34-#8q4q^ zXkBoq;l&GLtU&j{L7u!7O;cnbD6z7}f5QUMs!KrG^rj-n+8!4!ASjpFD_K#!qzG~y z9e8sBEI+OM*tsosANaB*P3^2re+NF~hmG;X0L*o-i_fN9zAY{0&f9U&2V&3HNmWdcNtAb3SND`S36A#yrDY13(NAV^{3d98DL4^%+4;3Ka}PbhPQ}&e}b{+8g>`YTTX(yMF6GFsr(Q z_UeJx#)p;g#;Z;&Ff2rc8k<5OFkZf#JFp$NfS8_v1}4%_&qZ*1kjRQ8bd&UEMm>3b zq3P!Ppht|kH5Gd|o}ZoNX_v8Q9AMH~ zf#M1SX&3xqVhV)1gnJgT0~yR6ANv;}VWAu*7sXA@O36;=JA$UB2*m6R*ELwE-Y?ki zh3emL$n1|l3ccIH=u@G`KfQRUjnA2OmX@=R{cEs^kKg)tR~6s=p_k}<%g#e`WG;H| zc%hqE^-{U#N!{oE;mot3KE@W93B-E%6~s+qn70>A+n-_c8g!b2Gz1Y$H4W$H6A&C4 zD(EoZEdmdLq4K@O@AzH9w}ryvV06Yt*_v)W#PJ1xW9@NgR7%A@uL-CP;A*_phACXa z3s~d0H(C#oyB@(t3I=ynSE?5k+ z?EBf#^nup}c4i2{2tTMt4f~TJB%!mDpF@(9z?RSlW0iuKWrLQUlR@-ffRwc!se&hm z)S;elvI2jEBe3q>WBR?L!wnu&1%0rMjSV;fz6J!5(YENnFQ!6TR);1L0VOomXXn6RUfYbhpNfv&!16d z2VYElh-7$#(_?)vE2|ZFjt2*L5Kzz9;7-W5!R;!SPZqcjBc(BS)Unu(;3-nV@T47h z!~xt%ur1&ajI21q-;PrVx;nsI3M|Qi(Ag`n!W1rEQ@LUq2*W1$BT?pKc(}~g+4xxf7p~$gJA_xj1uX$ZjUu!QL)2n<{mk>} zc`cDTT@(V4D7WKq+Ix^SSHcZEjn$*W~(254DUf zud}|?%AehE2E*ZO3qKzpOfSML4)~bBSOO6zil8xn z&>9{c9f3)Sr`U6{8V;|Pr=g^wp`orG2X0k(GSSAAgp<=A^c8ZB>!5nq)Bsa`1fCIS zT~1Fur?5Q_x4#3d7q7vzpNewx6E)NsoBo8B%X-b)) zId7f6;ruke%-r{N-SfG>_x<^PUaz;S6-iB|()7b=$BCur4Q!Io2pCQ&DGj-~29g&5 zLqL1L!m!IfWpY+1#0s$s5lCRU+}y5)Rez?hXUnhP-i!(&JFZ`!IsYae#F;=qvBebU zflL-~Eew!EeZoZTBztE?w@J_=hV;nRi$HTx@_)EQhlMf8+=PU;s!h={!od`FuUcI4 z_d7W%RnDC740VgdCdOK6OD}Rg|3HwW`?!b@5pbF`0elP)3eFb^TH)y zyjPue)i8Vtw|%X)MgqtIf*_d86YaT}#K5vPA&zBc!e2qcj=%phzhF2H1z$$3H3tC< zd>s|Gazq>Wv`R&nue$O6{oO2!y2?1~Tg|-8`|_d)_1l#ZgHa?pgZyt&nC}MRl6G5O z9)k}1z;*Yni?Y}ifNp@bZBJjrKh+*94v&J16&iZa*qP=bkS-xaJ~TA*`gNjbQK-sy zY;$C7a*18z?RJ5Oo9H29Xz^ls%_FXCV%&}q85!xaDiGd^`dV5sg-ouKNbLF6I{rvs z-#)roo-dDA@G~Yi{X&ZXNLJ{onwqu*%1!g)>T^#XKVHdN_s@{;JUmK(!xR;{@~X|c zoxgn|JIQ`_x4ziKnH?;x=sbU=yW`1(J}2k_tc_IpM<`Kf4XmX z_}rjfb*ZQQ!QUy_pBZ^+NPT|gJI&3_ul7!NbaeO$TIn%Pu<|2$$;q45ywK1Bh`$fx zLMj_Xq8W&7okz|v@A<}^+l~Ywc64-CLL!$N0jnu~{B73i(!C*-Dd3^7H-j6_D7PE~ z{|&;#fw~y*!+RoTocJ}rNd8n?cVltUP zwmlWgNoIcj{*&Y5z5V?!-f3|12U6*I^WuvEc=#PBa=gprN<@ong?6pD3-|79K>==) z`>~q>g00WzlHjoE07|qROaS zDX_-5AZzeP00#l{(2}OE_**T;V{#qD^6k+c!SJzSW0!cj%wtOtjhlDX?mN-?(yxr` zPN$!~xwn@ePH#FVq(X>5WT40(p>>-&R)Df(FKjP1y%K{6iH%Y~tKden8RgWr_=di99 z7W$I^M4`y{yMV~UP!Gj#n#Z4aAWDN$!42cxBgEX|tFJB~;SdQLLKs8P3g zVD56dt|-PSLgVvnSaHypWNBo$pTuZ4oLXrdbyP3CY|)}W*u2Xp`$FpW>sFIE+ol?Sm}=~JR&%92@*98c;e)M$>(#4=vKnqgdkyr=%N&=*Fn+0jSAShXZM^+a z8otBIQJYrZLLw!M+7e5B0ck}Nz|SNG!);q|p@B~OakBSAam)>wlX@<(aD6@<7nfk^^Z)RLT%DdW W|MKV0Q`HVjXZVX>kZ%pa`Q^ViCyTZK literal 0 HcmV?d00001 diff --git a/README_files/figure-commonmark/unnamed-chunk-4-1.png b/README_files/figure-commonmark/unnamed-chunk-4-1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5ff1eacabb12c46ddd84515aaf77f9c3c5de056 GIT binary patch literal 22030 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 W|MKV0Q`HVjXZVX>kZ%pa`Q^ViCyTZK literal 0 HcmV?d00001 diff --git a/docs/seaberry_final_pres_files/figure-revealjs/unnamed-chunk-3-1.png b/README_files/figure-revealjs/unnamed-chunk-3-1.png similarity index 100% rename from docs/seaberry_final_pres_files/figure-revealjs/unnamed-chunk-3-1.png rename to README_files/figure-revealjs/unnamed-chunk-3-1.png diff --git a/docs/seaberry_final_pres_files/figure-revealjs/unnamed-chunk-4-1.png b/README_files/figure-revealjs/unnamed-chunk-4-1.png similarity index 100% rename from docs/seaberry_final_pres_files/figure-revealjs/unnamed-chunk-4-1.png rename to README_files/figure-revealjs/unnamed-chunk-4-1.png diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reset.css b/README_files/libs/revealjs/dist/reset.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reset.css rename to README_files/libs/revealjs/dist/reset.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.css b/README_files/libs/revealjs/dist/reveal.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.css rename to README_files/libs/revealjs/dist/reveal.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.esm.js b/README_files/libs/revealjs/dist/reveal.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.esm.js rename to README_files/libs/revealjs/dist/reveal.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.esm.js.map b/README_files/libs/revealjs/dist/reveal.esm.js.map similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.esm.js.map rename to README_files/libs/revealjs/dist/reveal.esm.js.map diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.js b/README_files/libs/revealjs/dist/reveal.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.js rename to README_files/libs/revealjs/dist/reveal.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.js.map b/README_files/libs/revealjs/dist/reveal.js.map similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/reveal.js.map rename to README_files/libs/revealjs/dist/reveal.js.map diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE b/README_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE rename to README_files/libs/revealjs/dist/theme/fonts/league-gothic/LICENSE diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css b/README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css rename to README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot b/README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot rename to README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.eot diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf b/README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf rename to README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.ttf diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff b/README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff rename to README_files/libs/revealjs/dist/theme/fonts/league-gothic/league-gothic.woff diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/LICENSE diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.eot diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.ttf diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-italic.woff diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.eot diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.ttf diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-regular.woff diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.eot diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.ttf diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibold.woff diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.eot diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.ttf diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro-semibolditalic.woff diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css b/README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css rename to README_files/libs/revealjs/dist/theme/fonts/source-sans-pro/source-sans-pro.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/dist/theme/quarto.css b/README_files/libs/revealjs/dist/theme/quarto.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/dist/theme/quarto.css rename to README_files/libs/revealjs/dist/theme/quarto.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/highlight.esm.js b/README_files/libs/revealjs/plugin/highlight/highlight.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/highlight.esm.js rename to README_files/libs/revealjs/plugin/highlight/highlight.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/highlight.js b/README_files/libs/revealjs/plugin/highlight/highlight.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/highlight.js rename to README_files/libs/revealjs/plugin/highlight/highlight.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/monokai.css b/README_files/libs/revealjs/plugin/highlight/monokai.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/monokai.css rename to README_files/libs/revealjs/plugin/highlight/monokai.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/plugin.js b/README_files/libs/revealjs/plugin/highlight/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/plugin.js rename to README_files/libs/revealjs/plugin/highlight/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/zenburn.css b/README_files/libs/revealjs/plugin/highlight/zenburn.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/highlight/zenburn.css rename to README_files/libs/revealjs/plugin/highlight/zenburn.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/markdown.esm.js b/README_files/libs/revealjs/plugin/markdown/markdown.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/markdown.esm.js rename to README_files/libs/revealjs/plugin/markdown/markdown.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/markdown.js b/README_files/libs/revealjs/plugin/markdown/markdown.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/markdown.js rename to README_files/libs/revealjs/plugin/markdown/markdown.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/plugin.js b/README_files/libs/revealjs/plugin/markdown/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/markdown/plugin.js rename to README_files/libs/revealjs/plugin/markdown/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/katex.js b/README_files/libs/revealjs/plugin/math/katex.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/katex.js rename to README_files/libs/revealjs/plugin/math/katex.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/math.esm.js b/README_files/libs/revealjs/plugin/math/math.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/math.esm.js rename to README_files/libs/revealjs/plugin/math/math.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/math.js b/README_files/libs/revealjs/plugin/math/math.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/math.js rename to README_files/libs/revealjs/plugin/math/math.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/mathjax2.js b/README_files/libs/revealjs/plugin/math/mathjax2.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/mathjax2.js rename to README_files/libs/revealjs/plugin/math/mathjax2.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/mathjax3.js b/README_files/libs/revealjs/plugin/math/mathjax3.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/mathjax3.js rename to README_files/libs/revealjs/plugin/math/mathjax3.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/math/plugin.js b/README_files/libs/revealjs/plugin/math/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/math/plugin.js rename to README_files/libs/revealjs/plugin/math/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/notes.esm.js b/README_files/libs/revealjs/plugin/notes/notes.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/notes.esm.js rename to README_files/libs/revealjs/plugin/notes/notes.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/notes.js b/README_files/libs/revealjs/plugin/notes/notes.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/notes.js rename to README_files/libs/revealjs/plugin/notes/notes.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/plugin.js b/README_files/libs/revealjs/plugin/notes/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/plugin.js rename to README_files/libs/revealjs/plugin/notes/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/speaker-view.html b/README_files/libs/revealjs/plugin/notes/speaker-view.html similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/notes/speaker-view.html rename to README_files/libs/revealjs/plugin/notes/speaker-view.html diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/pdf-export/pdfexport.js b/README_files/libs/revealjs/plugin/pdf-export/pdfexport.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/pdf-export/pdfexport.js rename to README_files/libs/revealjs/plugin/pdf-export/pdfexport.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/pdf-export/plugin.yml b/README_files/libs/revealjs/plugin/pdf-export/plugin.yml similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/pdf-export/plugin.yml rename to README_files/libs/revealjs/plugin/pdf-export/plugin.yml diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css b/README_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css rename to README_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js b/README_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js rename to README_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml b/README_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml rename to README_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/footer.css b/README_files/libs/revealjs/plugin/quarto-support/footer.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/footer.css rename to README_files/libs/revealjs/plugin/quarto-support/footer.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/plugin.yml b/README_files/libs/revealjs/plugin/quarto-support/plugin.yml similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/plugin.yml rename to README_files/libs/revealjs/plugin/quarto-support/plugin.yml diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/support.js b/README_files/libs/revealjs/plugin/quarto-support/support.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/quarto-support/support.js rename to README_files/libs/revealjs/plugin/quarto-support/support.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/menu.css b/README_files/libs/revealjs/plugin/reveal-menu/menu.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/menu.css rename to README_files/libs/revealjs/plugin/reveal-menu/menu.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/menu.js b/README_files/libs/revealjs/plugin/reveal-menu/menu.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/menu.js rename to README_files/libs/revealjs/plugin/reveal-menu/menu.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/plugin.yml b/README_files/libs/revealjs/plugin/reveal-menu/plugin.yml similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/plugin.yml rename to README_files/libs/revealjs/plugin/reveal-menu/plugin.yml diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css b/README_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css rename to README_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js b/README_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js rename to README_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/search/plugin.js b/README_files/libs/revealjs/plugin/search/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/search/plugin.js rename to README_files/libs/revealjs/plugin/search/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/search/search.esm.js b/README_files/libs/revealjs/plugin/search/search.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/search/search.esm.js rename to README_files/libs/revealjs/plugin/search/search.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/search/search.js b/README_files/libs/revealjs/plugin/search/search.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/search/search.js rename to README_files/libs/revealjs/plugin/search/search.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/plugin.js b/README_files/libs/revealjs/plugin/zoom/plugin.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/plugin.js rename to README_files/libs/revealjs/plugin/zoom/plugin.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/zoom.esm.js b/README_files/libs/revealjs/plugin/zoom/zoom.esm.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/zoom.esm.js rename to README_files/libs/revealjs/plugin/zoom/zoom.esm.js diff --git a/docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/zoom.js b/README_files/libs/revealjs/plugin/zoom/zoom.js similarity index 100% rename from docs/seaberry_final_pres_files/libs/revealjs/plugin/zoom/zoom.js rename to README_files/libs/revealjs/plugin/zoom/zoom.js diff --git a/docs/seaberry_final_pres.html b/docs/index.html similarity index 93% rename from docs/seaberry_final_pres.html rename to docs/index.html index 79cdfe2..5990849 100644 --- a/docs/seaberry_final_pres.html +++ b/docs/index.html @@ -1,13 +1,13 @@ - - - - - - - - + + + + + + + + @@ -15,8 +15,8 @@ - - + + - - - - - + + + + + \n\t\n\n\t\n\n\t\t

Loading speaker view...
\n\n\t\t
\n\t\t
Upcoming
\n\t\t
\n\t\t\t
\n\t\t\t\t

Time Click to Reset

\n\t\t\t\t
\n\t\t\t\t\t0:00 AM\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t\t
\n\n\t\t\t\t

Pacing – Time to finish current slide

\n\t\t\t\t
\n\t\t\t\t\t00:00:00\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t

Notes

\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t
\n\n\t\t + + \ No newline at end of file diff --git a/docs/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js b/docs/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js new file mode 100644 index 0000000..bf9104c --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/pdf-export/pdfexport.js @@ -0,0 +1,111 @@ +var PdfExport = ( function( _Reveal ){ + + var Reveal = _Reveal; + var setStylesheet = null; + var installAltKeyBindings = null; + + function getRevealJsPath(){ + var regex = /\b[^/]+\/reveal.css$/i; + var script = Array.from( document.querySelectorAll( 'link' ) ).find( function( e ){ + return e.attributes.href && e.attributes.href.value.search( regex ) >= 0; + }); + if( !script ){ + console.error( 'reveal.css could not be found in included elements. Did you rename this file?' ); + return ''; + } + return script.attributes.href.value.replace( regex, '' ); + } + + function setStylesheet3( pdfExport ){ + var link = document.querySelector( '#print' ); + if( !link ){ + link = document.createElement( 'link' ); + link.rel = 'stylesheet'; + link.id = 'print'; + document.querySelector( 'head' ).appendChild( link ); + } + var style = 'paper'; + if( pdfExport ){ + style = 'pdf'; + } + link.href = getRevealJsPath() + 'css/print/' + style + '.css'; + } + + function setStylesheet4( pdfExport ){ + } + + function installAltKeyBindings3(){ + } + + function installAltKeyBindings4(){ + if( isPrintingPDF() ){ + var config = Reveal.getConfig(); + var shortcut = config.pdfExportShortcut || 'E'; + window.addEventListener( 'keydown', function( e ){ + if( e.target.nodeName.toUpperCase() == 'BODY' + && ( e.key.toUpperCase() == shortcut.toUpperCase() || e.keyCode == shortcut.toUpperCase().charCodeAt( 0 ) ) ){ + e.preventDefault(); + togglePdfExport(); + return false; + } + }, true ); + } + } + + function isPrintingPDF(){ + return ( /print-pdf/gi ).test( window.location.search ); + } + + function togglePdfExport(){ + var url_doc = new URL( document.URL ); + var query_doc = new URLSearchParams( url_doc.searchParams ); + if( isPrintingPDF() ){ + query_doc.delete( 'print-pdf' ); + }else{ + query_doc.set( 'print-pdf', '' ); + } + url_doc.search = ( query_doc.toString() ? '?' + query_doc.toString() : '' ); + window.location.href = url_doc.toString(); + } + + function installKeyBindings(){ + var config = Reveal.getConfig(); + var shortcut = config.pdfExportShortcut || 'E'; + Reveal.addKeyBinding({ + keyCode: shortcut.toUpperCase().charCodeAt( 0 ), + key: shortcut.toUpperCase(), + description: 'PDF export mode' + }, togglePdfExport ); + installAltKeyBindings(); + } + + function install(){ + installKeyBindings(); + setStylesheet( isPrintingPDF() ); + } + + var Plugin = { + } + + if( Reveal && Reveal.VERSION && Reveal.VERSION.length && Reveal.VERSION[ 0 ] == '3' ){ + // reveal 3.x + setStylesheet = setStylesheet3; + installAltKeyBindings = installAltKeyBindings3; + install(); + }else{ + // must be reveal 4.x + setStylesheet = setStylesheet4; + installAltKeyBindings = installAltKeyBindings4; + Plugin.id = 'pdf-export'; + Plugin.init = function( _Reveal ){ + Reveal = _Reveal; + install(); + }; + Plugin.togglePdfExport = function () { + togglePdfExport(); + }; + } + + return Plugin; + +})( Reveal ); diff --git a/docs/index_files/libs/revealjs/plugin/pdf-export/plugin.yml b/docs/index_files/libs/revealjs/plugin/pdf-export/plugin.yml new file mode 100644 index 0000000..f6db9d0 --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/pdf-export/plugin.yml @@ -0,0 +1,2 @@ +name: PdfExport +script: pdfexport.js diff --git a/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css new file mode 100644 index 0000000..e8410fe --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.css @@ -0,0 +1,31 @@ +.reveal + div.sourceCode + pre + code.has-line-highlights + > span:not(.highlight-line) { + opacity: 0.4; +} + +.reveal pre.numberSource { + padding-left: 0; +} + +.reveal pre.numberSource code > span { + left: -2.1em; +} + +pre.numberSource code > span > a:first-child::before { + left: -0.7em; +} + +.reveal pre > code:not(:first-child).fragment { + position: absolute; + top: 0; + left: 0; + width: 100%; + box-sizing: border-box; +} + +.reveal div.sourceCode pre code { + min-height: 100%; +} diff --git a/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js new file mode 100644 index 0000000..5bffdc7 --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/line-highlight.js @@ -0,0 +1,351 @@ +window.QuartoLineHighlight = function () { + function isPrintView() { + return /print-pdf/gi.test(window.location.search); + } + + const delimiters = { + step: "|", + line: ",", + lineRange: "-", + }; + + const regex = new RegExp( + "^[\\d" + Object.values(delimiters).join("") + "]+$" + ); + + function handleLinesSelector(deck, attr) { + // if we are in printview with pdfSeparateFragments: false + // then we'll also want to supress + if (regex.test(attr)) { + if (isPrintView() && deck.getConfig().pdfSeparateFragments !== true) { + return false; + } else { + return true; + } + } else { + return false; + } + } + + const kCodeLineNumbersAttr = "data-code-line-numbers"; + const kFragmentIndex = "data-fragment-index"; + + function initQuartoLineHighlight(deck) { + const divSourceCode = deck + .getRevealElement() + .querySelectorAll("div.sourceCode"); + // Process each div created by Pandoc highlighting - numbered line are already included. + divSourceCode.forEach((el) => { + if (el.hasAttribute(kCodeLineNumbersAttr)) { + const codeLineAttr = el.getAttribute(kCodeLineNumbersAttr); + el.removeAttribute("data-code-line-numbers"); + if (handleLinesSelector(deck, codeLineAttr)) { + // Only process if attr is a string to select lines to highlights + // e.g "1|3,6|8-11" + const codeBlock = el.querySelectorAll("pre code"); + codeBlock.forEach((code) => { + // move attributes on code block + code.setAttribute(kCodeLineNumbersAttr, codeLineAttr); + + const scrollState = { currentBlock: code }; + + // Check if there are steps and duplicate code block accordingly + const highlightSteps = splitLineNumbers(codeLineAttr); + if (highlightSteps.length > 1) { + // If the original code block has a fragment-index, + // each clone should follow in an incremental sequence + let fragmentIndex = parseInt( + code.getAttribute(kFragmentIndex), + 10 + ); + fragmentIndex = + typeof fragmentIndex !== "number" || isNaN(fragmentIndex) + ? null + : fragmentIndex; + + let stepN = 1; + highlightSteps.slice(1).forEach( + // Generate fragments for all steps except the original block + (step) => { + var fragmentBlock = code.cloneNode(true); + fragmentBlock.setAttribute( + "data-code-line-numbers", + joinLineNumbers([step]) + ); + fragmentBlock.classList.add("fragment"); + + // Pandoc sets id on spans we need to keep unique + fragmentBlock + .querySelectorAll(":scope > span") + .forEach((span) => { + if (span.hasAttribute("id")) { + span.setAttribute( + "id", + span.getAttribute("id").concat("-" + stepN) + ); + } + }); + stepN = ++stepN; + + // Add duplicated element after existing one + code.parentNode.appendChild(fragmentBlock); + + // Each new element is highlighted based on the new attributes value + highlightCodeBlock(fragmentBlock); + + if (typeof fragmentIndex === "number") { + fragmentBlock.setAttribute(kFragmentIndex, fragmentIndex); + fragmentIndex += 1; + } else { + fragmentBlock.removeAttribute(kFragmentIndex); + } + + // Scroll highlights into view as we step through them + fragmentBlock.addEventListener( + "visible", + scrollHighlightedLineIntoView.bind( + this, + fragmentBlock, + scrollState + ) + ); + fragmentBlock.addEventListener( + "hidden", + scrollHighlightedLineIntoView.bind( + this, + fragmentBlock.previousSibling, + scrollState + ) + ); + } + ); + code.removeAttribute(kFragmentIndex); + code.setAttribute( + kCodeLineNumbersAttr, + joinLineNumbers([highlightSteps[0]]) + ); + } + + // Scroll the first highlight into view when the slide becomes visible. + const slide = + typeof code.closest === "function" + ? code.closest("section:not(.stack)") + : null; + if (slide) { + const scrollFirstHighlightIntoView = function () { + scrollHighlightedLineIntoView(code, scrollState, true); + slide.removeEventListener( + "visible", + scrollFirstHighlightIntoView + ); + }; + slide.addEventListener("visible", scrollFirstHighlightIntoView); + } + + highlightCodeBlock(code); + }); + } + } + }); + } + + function highlightCodeBlock(codeBlock) { + const highlightSteps = splitLineNumbers( + codeBlock.getAttribute(kCodeLineNumbersAttr) + ); + + if (highlightSteps.length) { + // If we have at least one step, we generate fragments + highlightSteps[0].forEach((highlight) => { + // Add expected class on
 for reveal CSS
+        codeBlock.parentNode.classList.add("code-wrapper");
+
+        // Select lines to highlight
+        spanToHighlight = [];
+        if (typeof highlight.last === "number") {
+          spanToHighlight = [].slice.call(
+            codeBlock.querySelectorAll(
+              ":scope > span:nth-child(n+" +
+                highlight.first +
+                "):nth-child(-n+" +
+                highlight.last +
+                ")"
+            )
+          );
+        } else if (typeof highlight.first === "number") {
+          spanToHighlight = [].slice.call(
+            codeBlock.querySelectorAll(
+              ":scope > span:nth-child(" + highlight.first + ")"
+            )
+          );
+        }
+        if (spanToHighlight.length) {
+          // Add a class on  and  to select line to highlight
+          spanToHighlight.forEach((span) =>
+            span.classList.add("highlight-line")
+          );
+          codeBlock.classList.add("has-line-highlights");
+        }
+      });
+    }
+  }
+
+  /**
+   * Animates scrolling to the first highlighted line
+   * in the given code block.
+   */
+  function scrollHighlightedLineIntoView(block, scrollState, skipAnimation) {
+    window.cancelAnimationFrame(scrollState.animationFrameID);
+
+    // Match the scroll position of the currently visible
+    // code block
+    if (scrollState.currentBlock) {
+      block.scrollTop = scrollState.currentBlock.scrollTop;
+    }
+
+    // Remember the current code block so that we can match
+    // its scroll position when showing/hiding fragments
+    scrollState.currentBlock = block;
+
+    const highlightBounds = getHighlightedLineBounds(block);
+    let viewportHeight = block.offsetHeight;
+
+    // Subtract padding from the viewport height
+    const blockStyles = window.getComputedStyle(block);
+    viewportHeight -=
+      parseInt(blockStyles.paddingTop) + parseInt(blockStyles.paddingBottom);
+
+    // Scroll position which centers all highlights
+    const startTop = block.scrollTop;
+    let targetTop =
+      highlightBounds.top +
+      (Math.min(highlightBounds.bottom - highlightBounds.top, viewportHeight) -
+        viewportHeight) /
+        2;
+
+    // Make sure the scroll target is within bounds
+    targetTop = Math.max(
+      Math.min(targetTop, block.scrollHeight - viewportHeight),
+      0
+    );
+
+    if (skipAnimation === true || startTop === targetTop) {
+      block.scrollTop = targetTop;
+    } else {
+      // Don't attempt to scroll if there is no overflow
+      if (block.scrollHeight <= viewportHeight) return;
+
+      let time = 0;
+
+      const animate = function () {
+        time = Math.min(time + 0.02, 1);
+
+        // Update our eased scroll position
+        block.scrollTop =
+          startTop + (targetTop - startTop) * easeInOutQuart(time);
+
+        // Keep animating unless we've reached the end
+        if (time < 1) {
+          scrollState.animationFrameID = requestAnimationFrame(animate);
+        }
+      };
+
+      animate();
+    }
+  }
+
+  function getHighlightedLineBounds(block) {
+    const highlightedLines = block.querySelectorAll(".highlight-line");
+    if (highlightedLines.length === 0) {
+      return { top: 0, bottom: 0 };
+    } else {
+      const firstHighlight = highlightedLines[0];
+      const lastHighlight = highlightedLines[highlightedLines.length - 1];
+
+      return {
+        top: firstHighlight.offsetTop,
+        bottom: lastHighlight.offsetTop + lastHighlight.offsetHeight,
+      };
+    }
+  }
+
+  /**
+   * The easing function used when scrolling.
+   */
+  function easeInOutQuart(t) {
+    // easeInOutQuart
+    return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;
+  }
+
+  function splitLineNumbers(lineNumbersAttr) {
+    // remove space
+    lineNumbersAttr = lineNumbersAttr.replace("/s/g", "");
+    // seperate steps (for fragment)
+    lineNumbersAttr = lineNumbersAttr.split(delimiters.step);
+
+    // for each step, calculate first and last line, if any
+    return lineNumbersAttr.map((highlights) => {
+      // detect lines
+      const lines = highlights.split(delimiters.line);
+      return lines.map((range) => {
+        if (/^[\d-]+$/.test(range)) {
+          range = range.split(delimiters.lineRange);
+          const firstLine = parseInt(range[0], 10);
+          const lastLine = range[1] ? parseInt(range[1], 10) : undefined;
+          return {
+            first: firstLine,
+            last: lastLine,
+          };
+        } else {
+          return {};
+        }
+      });
+    });
+  }
+
+  function joinLineNumbers(splittedLineNumbers) {
+    return splittedLineNumbers
+      .map(function (highlights) {
+        return highlights
+          .map(function (highlight) {
+            // Line range
+            if (typeof highlight.last === "number") {
+              return highlight.first + delimiters.lineRange + highlight.last;
+            }
+            // Single line
+            else if (typeof highlight.first === "number") {
+              return highlight.first;
+            }
+            // All lines
+            else {
+              return "";
+            }
+          })
+          .join(delimiters.line);
+      })
+      .join(delimiters.step);
+  }
+
+  return {
+    id: "quarto-line-highlight",
+    init: function (deck) {
+      initQuartoLineHighlight(deck);
+
+      // If we're printing to PDF, scroll the code highlights of
+      // all blocks in the deck into view at once
+      deck.on("pdf-ready", function () {
+        [].slice
+          .call(
+            deck
+              .getRevealElement()
+              .querySelectorAll(
+                "pre code[data-code-line-numbers].current-fragment"
+              )
+          )
+          .forEach(function (block) {
+            scrollHighlightedLineIntoView(block, {}, true);
+          });
+      });
+    },
+  };
+};
diff --git a/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml
new file mode 100644
index 0000000..ca20686
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/quarto-line-highlight/plugin.yml
@@ -0,0 +1,4 @@
+# adapted from https://github.com/hakimel/reveal.js/tree/master/plugin/highlight
+name: QuartoLineHighlight
+script: line-highlight.js
+stylesheet: line-highlight.css
diff --git a/docs/index_files/libs/revealjs/plugin/quarto-support/footer.css b/docs/index_files/libs/revealjs/plugin/quarto-support/footer.css
new file mode 100644
index 0000000..390d5b3
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/quarto-support/footer.css
@@ -0,0 +1,110 @@
+.reveal .slide-logo {
+  display: block;
+  position: fixed;
+  bottom: 0;
+  right: 12px;
+  max-height: 2.2rem;
+  height: 100%;
+  width: auto;
+  z-index: 2;
+}
+
+.reveal .footer {
+  display: block;
+  position: fixed;
+  bottom: 18px;
+  width: 100%;
+  margin: 0 auto;
+  text-align: center;
+  font-size: 18px;
+  z-index: 2;
+}
+
+.reveal .footer > * {
+  margin-top: 0;
+  margin-bottom: 0;
+}
+
+.reveal .slide .footer {
+  display: none;
+}
+
+.reveal .slide-number {
+  bottom: 10px;
+  right: 10px;
+  font-size: 16px;
+  background-color: transparent;
+}
+
+.reveal.has-logo .slide-number {
+  bottom: initial;
+  top: 8px;
+  right: 8px;
+}
+
+.reveal .slide-number .slide-number-delimiter {
+  margin: 0;
+}
+
+.reveal .slide-menu-button {
+  left: 8px;
+  bottom: 8px;
+}
+
+.reveal .slide-chalkboard-buttons {
+  position: fixed;
+  left: 12px;
+  bottom: 8px;
+  z-index: 30;
+  font-size: 24px;
+}
+
+.reveal .slide-chalkboard-buttons.slide-menu-offset {
+  left: 54px;
+}
+
+.reveal .slide-chalkboard-buttons > span {
+  margin-right: 14px;
+  cursor: pointer;
+}
+
+@media screen and (max-width: 800px) {
+  .reveal .slide-logo {
+    max-height: 1.1rem;
+    bottom: -2px;
+    right: 10px;
+  }
+  .reveal .footer {
+    font-size: 14px;
+    bottom: 12px;
+  }
+  .reveal .slide-number {
+    font-size: 12px;
+    bottom: 7px;
+  }
+  .reveal .slide-menu-button .fas::before {
+    height: 1.3rem;
+    width: 1.3rem;
+    vertical-align: -0.125em;
+    background-size: 1.3rem 1.3rem;
+  }
+
+  .reveal .slide-chalkboard-buttons .fas::before {
+    height: 0.95rem;
+    width: 0.95rem;
+    background-size: 0.95rem 0.95rem;
+    vertical-align: -0em;
+  }
+
+  .reveal .slide-chalkboard-buttons.slide-menu-offset {
+    left: 36px;
+  }
+  .reveal .slide-chalkboard-buttons > span {
+    margin-right: 9px;
+  }
+}
+
+html.print-pdf .reveal .slide-menu-button,
+html.print-pdf .reveal .slide-chalkboard-buttons {
+  display: none;
+}
diff --git a/docs/index_files/libs/revealjs/plugin/quarto-support/plugin.yml b/docs/index_files/libs/revealjs/plugin/quarto-support/plugin.yml
new file mode 100644
index 0000000..546956e
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/quarto-support/plugin.yml
@@ -0,0 +1,5 @@
+name: QuartoSupport
+script: support.js
+stylesheet: footer.css
+config:
+  smaller: false
diff --git a/docs/index_files/libs/revealjs/plugin/quarto-support/support.js b/docs/index_files/libs/revealjs/plugin/quarto-support/support.js
new file mode 100644
index 0000000..9adc921
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/quarto-support/support.js
@@ -0,0 +1,290 @@
+// catch all plugin for various quarto features
+window.QuartoSupport = function () {
+  function isPrintView() {
+    return /print-pdf/gi.test(window.location.search);
+  }
+
+  // implement controlsAudo
+  function controlsAuto(deck) {
+    const config = deck.getConfig();
+    if (config.controlsAuto === true) {
+      const iframe = window.location !== window.parent.location;
+      const localhost =
+        window.location.hostname === "localhost" ||
+        window.location.hostname === "127.0.0.1";
+      deck.configure({
+        controls:
+          (iframe && !localhost) ||
+          (deck.hasVerticalSlides() && config.navigationMode !== "linear"),
+      });
+    }
+  }
+
+  // helper to provide event handlers for all links in a container
+  function handleLinkClickEvents(deck, container) {
+    Array.from(container.querySelectorAll("a")).forEach((el) => {
+      const url = el.getAttribute("href");
+      if (/^(http|www)/gi.test(url)) {
+        el.addEventListener(
+          "click",
+          (ev) => {
+            const fullscreen = !!window.document.fullscreen;
+            const dataPreviewLink = el.getAttribute("data-preview-link");
+
+            // if there is a local specifcation then use that
+            if (dataPreviewLink) {
+              if (
+                dataPreviewLink === "true" ||
+                (dataPreviewLink === "auto" && fullscreen)
+              ) {
+                ev.preventDefault();
+                deck.showPreview(url);
+                return false;
+              }
+            } else {
+              const previewLinks = !!deck.getConfig().previewLinks;
+              const previewLinksAuto =
+                deck.getConfig().previewLinksAuto === true;
+              if (previewLinks == true || (previewLinksAuto && fullscreen)) {
+                ev.preventDefault();
+                deck.showPreview(url);
+                return false;
+              }
+            }
+
+            // if the deck is in an iframe we want to open it externally
+            // (don't do this when in vscode though as it has its own
+            // handler for opening links externally that will be play)
+            const iframe = window.location !== window.parent.location;
+            if (
+              iframe &&
+              !window.location.search.includes("quartoPreviewReqId=")
+            ) {
+              ev.preventDefault();
+              ev.stopImmediatePropagation();
+              window.open(url, "_blank");
+              return false;
+            }
+
+            // if the user has set data-preview-link to "auto" we need to handle the event
+            // (because reveal will interpret "auto" as true)
+            if (dataPreviewLink === "auto") {
+              ev.preventDefault();
+              ev.stopImmediatePropagation();
+              const target =
+                el.getAttribute("target") ||
+                (ev.ctrlKey || ev.metaKey ? "_blank" : "");
+              if (target) {
+                window.open(url, target);
+              } else {
+                window.location.href = url;
+              }
+              return false;
+            }
+          },
+          false
+        );
+      }
+    });
+  }
+
+  // implement previewLinksAuto
+  function previewLinksAuto(deck) {
+    handleLinkClickEvents(deck, deck.getRevealElement());
+  }
+
+  // apply styles
+  function applyGlobalStyles(deck) {
+    if (deck.getConfig()["smaller"] === true) {
+      const revealParent = deck.getRevealElement();
+      revealParent.classList.add("smaller");
+    }
+  }
+
+  // add logo image
+  function addLogoImage(deck) {
+    const revealParent = deck.getRevealElement();
+    const logoImg = document.querySelector(".slide-logo");
+    if (logoImg) {
+      revealParent.appendChild(logoImg);
+      revealParent.classList.add("has-logo");
+    }
+  }
+
+  // add footer text
+  function addFooter(deck) {
+    const revealParent = deck.getRevealElement();
+    const defaultFooterDiv = document.querySelector(".footer-default");
+    if (defaultFooterDiv) {
+      revealParent.appendChild(defaultFooterDiv);
+      handleLinkClickEvents(deck, defaultFooterDiv);
+      if (!isPrintView()) {
+        deck.on("slidechanged", function (ev) {
+          const prevSlideFooter = document.querySelector(
+            ".reveal > .footer:not(.footer-default)"
+          );
+          if (prevSlideFooter) {
+            prevSlideFooter.remove();
+          }
+          const currentSlideFooter = ev.currentSlide.querySelector(".footer");
+          if (currentSlideFooter) {
+            defaultFooterDiv.style.display = "none";
+            const slideFooter = currentSlideFooter.cloneNode(true);
+            handleLinkClickEvents(deck, slideFooter);
+            deck.getRevealElement().appendChild(slideFooter);
+          } else {
+            defaultFooterDiv.style.display = "block";
+          }
+        });
+      }
+    }
+  }
+
+  // add chalkboard buttons
+  function addChalkboardButtons(deck) {
+    const chalkboard = deck.getPlugin("RevealChalkboard");
+    if (chalkboard && !isPrintView()) {
+      const revealParent = deck.getRevealElement();
+      const chalkboardDiv = document.createElement("div");
+      chalkboardDiv.classList.add("slide-chalkboard-buttons");
+      if (document.querySelector(".slide-menu-button")) {
+        chalkboardDiv.classList.add("slide-menu-offset");
+      }
+      // add buttons
+      const buttons = [
+        {
+          icon: "easel2",
+          title: "Toggle Chalkboard (b)",
+          onclick: chalkboard.toggleChalkboard,
+        },
+        {
+          icon: "brush",
+          title: "Toggle Notes Canvas (c)",
+          onclick: chalkboard.toggleNotesCanvas,
+        },
+      ];
+      buttons.forEach(function (button) {
+        const span = document.createElement("span");
+        span.title = button.title;
+        const icon = document.createElement("i");
+        icon.classList.add("fas");
+        icon.classList.add("fa-" + button.icon);
+        span.appendChild(icon);
+        span.onclick = function (event) {
+          event.preventDefault();
+          button.onclick();
+        };
+        chalkboardDiv.appendChild(span);
+      });
+      revealParent.appendChild(chalkboardDiv);
+      const config = deck.getConfig();
+      if (!config.chalkboard.buttons) {
+        chalkboardDiv.classList.add("hidden");
+      }
+
+      // show and hide chalkboard buttons on slidechange
+      deck.on("slidechanged", function (ev) {
+        const config = deck.getConfig();
+        let buttons = !!config.chalkboard.buttons;
+        const slideButtons = ev.currentSlide.getAttribute(
+          "data-chalkboard-buttons"
+        );
+        if (slideButtons) {
+          if (slideButtons === "true" || slideButtons === "1") {
+            buttons = true;
+          } else if (slideButtons === "false" || slideButtons === "0") {
+            buttons = false;
+          }
+        }
+        if (buttons) {
+          chalkboardDiv.classList.remove("hidden");
+        } else {
+          chalkboardDiv.classList.add("hidden");
+        }
+      });
+    }
+  }
+
+  function handleTabbyClicks() {
+    const tabs = document.querySelectorAll(".panel-tabset-tabby > li > a");
+    for (let i = 0; i < tabs.length; i++) {
+      const tab = tabs[i];
+      tab.onclick = function (ev) {
+        ev.preventDefault();
+        ev.stopPropagation();
+        return false;
+      };
+    }
+  }
+
+  function fixupForPrint(deck) {
+    if (isPrintView()) {
+      const slides = deck.getSlides();
+      slides.forEach(function (slide) {
+        slide.removeAttribute("data-auto-animate");
+      });
+      window.document.querySelectorAll(".hljs").forEach(function (el) {
+        el.classList.remove("hljs");
+      });
+      window.document.querySelectorAll(".hljs-ln-code").forEach(function (el) {
+        el.classList.remove("hljs-ln-code");
+      });
+    }
+  }
+
+  function handleSlideChanges(deck) {
+    // dispatch for htmlwidgets
+    const fireSlideEnter = () => {
+      const event = window.document.createEvent("Event");
+      event.initEvent("slideenter", true, true);
+      window.document.dispatchEvent(event);
+    };
+
+    const fireSlideChanged = (previousSlide, currentSlide) => {
+      fireSlideEnter();
+
+      // dispatch for shiny
+      if (window.jQuery) {
+        if (previousSlide) {
+          window.jQuery(previousSlide).trigger("hidden");
+        }
+        if (currentSlide) {
+          window.jQuery(currentSlide).trigger("shown");
+        }
+      }
+    };
+
+    // fire slideEnter for tabby tab activations (for htmlwidget resize behavior)
+    document.addEventListener("tabby", fireSlideEnter, false);
+
+    deck.on("slidechanged", function (event) {
+      fireSlideChanged(event.previousSlide, event.currentSlide);
+    });
+  }
+
+  function workaroundMermaidDistance(deck) {
+    if (window.document.querySelector("pre.mermaid-js")) {
+      const slideCount = deck.getTotalSlides();
+      deck.configure({
+        mobileViewDistance: slideCount,
+        viewDistance: slideCount,
+      });
+    }
+  }
+
+  return {
+    id: "quarto-support",
+    init: function (deck) {
+      controlsAuto(deck);
+      previewLinksAuto(deck);
+      fixupForPrint(deck);
+      applyGlobalStyles(deck);
+      addLogoImage(deck);
+      addFooter(deck);
+      addChalkboardButtons(deck);
+      handleTabbyClicks();
+      handleSlideChanges(deck);
+      workaroundMermaidDistance(deck);
+    },
+  };
+};
diff --git a/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.css b/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.css
new file mode 100644
index 0000000..5a300fd
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.css
@@ -0,0 +1,346 @@
+.slide-menu-wrapper {
+  font-family: 'Source Sans Pro', Helvetica, sans-serif;
+}
+
+.slide-menu-wrapper .slide-menu {
+  background-color: #333;
+  z-index: 200;
+  position: fixed;
+  top: 0;
+  width: 300px;
+  height: 100%;
+  /*overflow-y: scroll;*/
+  transition: transform 0.3s;
+  font-size: 16px;
+  font-weight: normal;
+}
+
+.slide-menu-wrapper .slide-menu.slide-menu--wide {
+  width: 500px;
+}
+
+.slide-menu-wrapper .slide-menu.slide-menu--third {
+  width: 33%;
+}
+
+.slide-menu-wrapper .slide-menu.slide-menu--half {
+  width: 50%;
+}
+
+.slide-menu-wrapper .slide-menu.slide-menu--full {
+  width: 95%;
+}
+
+/*
+ * Slides menu
+ */
+
+.slide-menu-wrapper .slide-menu-items {
+  margin: 0;
+  padding: 0;
+  width: 100%;
+  border-bottom: solid 1px #555;
+}
+
+.slide-menu-wrapper .slide-menu-item,
+.slide-menu-wrapper .slide-menu-item-vertical {
+  display: block;
+  text-align: left;
+  padding: 10px 18px;
+  color: #aaa;
+  cursor: pointer;
+}
+
+.slide-menu-wrapper .slide-menu-item-vertical {
+  padding-left: 30px;
+}
+
+.slide-menu-wrapper .slide-menu--wide .slide-menu-item-vertical,
+.slide-menu-wrapper .slide-menu--third .slide-menu-item-vertical,
+.slide-menu-wrapper .slide-menu--half .slide-menu-item-vertical,
+.slide-menu-wrapper .slide-menu--full .slide-menu-item-vertical,
+.slide-menu-wrapper .slide-menu--custom .slide-menu-item-vertical {
+  padding-left: 50px;
+}
+
+.slide-menu-wrapper .slide-menu-item {
+  border-top: solid 1px #555;
+}
+
+.slide-menu-wrapper .active-menu-panel li.selected {
+  background-color: #222;
+  color: white;
+}
+
+.slide-menu-wrapper .active-menu-panel li.active {
+  color: #eee;
+}
+
+.slide-menu-wrapper .slide-menu-item.no-title .slide-menu-item-title,
+.slide-menu-wrapper .slide-menu-item-vertical.no-title .slide-menu-item-title {
+  font-style: italic;
+}
+
+.slide-menu-wrapper .slide-menu-item-number {
+  color: #999;
+  padding-right: 6px;
+}
+
+.slide-menu-wrapper .slide-menu-item i.far,
+.slide-menu-wrapper .slide-menu-item i.fas,
+.slide-menu-wrapper .slide-menu-item-vertical i.far,
+.slide-menu-wrapper .slide-menu-item-vertical i.fas,
+.slide-menu-wrapper .slide-menu-item svg.svg-inline--fa,
+.slide-menu-wrapper .slide-menu-item-vertical svg.svg-inline--fa {
+  padding-right: 12px;
+  display: none;
+}
+
+.slide-menu-wrapper .slide-menu-item.past i.fas.past,
+.slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
+.slide-menu-wrapper .slide-menu-item.active i.fas.active,
+.slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
+.slide-menu-wrapper .slide-menu-item.future i.far.future,
+.slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
+.slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
+.slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
+.slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
+.slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active,
+.slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
+.slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
+  display: inline-block;
+}
+
+.slide-menu-wrapper .slide-menu-item.past i.fas.past,
+.slide-menu-wrapper .slide-menu-item-vertical.past i.fas.past,
+.slide-menu-wrapper .slide-menu-item.future i.far.future,
+.slide-menu-wrapper .slide-menu-item-vertical.future i.far.future,
+.slide-menu-wrapper .slide-menu-item.past svg.svg-inline--fa.past,
+.slide-menu-wrapper .slide-menu-item-vertical.past svg.svg-inline--fa.past,
+.slide-menu-wrapper .slide-menu-item.future svg.svg-inline--fa.future,
+.slide-menu-wrapper .slide-menu-item-vertical.future svg.svg-inline--fa.future {
+  opacity: 0.4;
+}
+
+.slide-menu-wrapper .slide-menu-item.active i.fas.active,
+.slide-menu-wrapper .slide-menu-item-vertical.active i.fas.active,
+.slide-menu-wrapper .slide-menu-item.active svg.svg-inline--fa.active,
+.slide-menu-wrapper .slide-menu-item-vertical.active svg.svg-inline--fa.active {
+  opacity: 0.8;
+}
+
+.slide-menu-wrapper .slide-menu--left {
+  left: 0;
+  -webkit-transform: translateX(-100%);
+  -ms-transform: translateX(-100%);
+  transform: translateX(-100%);
+}
+
+.slide-menu-wrapper .slide-menu--left.active {
+  -webkit-transform: translateX(0);
+  -ms-transform: translateX(0);
+  transform: translateX(0);
+}
+
+.slide-menu-wrapper .slide-menu--right {
+  right: 0;
+  -webkit-transform: translateX(100%);
+  -ms-transform: translateX(100%);
+  transform: translateX(100%);
+}
+
+.slide-menu-wrapper .slide-menu--right.active {
+  -webkit-transform: translateX(0);
+  -ms-transform: translateX(0);
+  transform: translateX(0);
+}
+
+.slide-menu-wrapper {
+  transition: transform 0.3s;
+}
+
+/*
+ * Toolbar
+ */
+.slide-menu-wrapper .slide-menu-toolbar {
+  height: 60px;
+  width: 100%;
+  font-size: 12px;
+  display: table;
+  table-layout: fixed; /* ensures equal width */
+  margin: 0;
+  padding: 0;
+  border-bottom: solid 2px #666;
+}
+
+.slide-menu-wrapper .slide-menu-toolbar > li {
+  display: table-cell;
+  line-height: 150%;
+  text-align: center;
+  vertical-align: middle;
+  cursor: pointer;
+  color: #aaa;
+  border-radius: 3px;
+}
+
+.slide-menu-wrapper .slide-menu-toolbar > li.toolbar-panel-button i,
+.slide-menu-wrapper
+  .slide-menu-toolbar
+  > li.toolbar-panel-button
+  svg.svg-inline--fa {
+  font-size: 1.7em;
+}
+
+.slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button {
+  color: white;
+  text-shadow: 0 1px black;
+  text-decoration: underline;
+}
+
+.slide-menu-toolbar > li.toolbar-panel-button:hover {
+  color: white;
+}
+
+.slide-menu-toolbar
+  > li.toolbar-panel-button:hover
+  span.slide-menu-toolbar-label,
+.slide-menu-wrapper
+  .slide-menu-toolbar
+  > li.active-toolbar-button
+  span.slide-menu-toolbar-label {
+  visibility: visible;
+}
+
+/*
+ * Panels
+ */
+.slide-menu-wrapper .slide-menu-panel {
+  position: absolute;
+  width: 100%;
+  visibility: hidden;
+  height: calc(100% - 60px);
+  overflow-x: hidden;
+  overflow-y: auto;
+  color: #aaa;
+}
+
+.slide-menu-wrapper .slide-menu-panel.active-menu-panel {
+  visibility: visible;
+}
+
+.slide-menu-wrapper .slide-menu-panel h1,
+.slide-menu-wrapper .slide-menu-panel h2,
+.slide-menu-wrapper .slide-menu-panel h3,
+.slide-menu-wrapper .slide-menu-panel h4,
+.slide-menu-wrapper .slide-menu-panel h5,
+.slide-menu-wrapper .slide-menu-panel h6 {
+  margin: 20px 0 10px 0;
+  color: #fff;
+  line-height: 1.2;
+  letter-spacing: normal;
+  text-shadow: none;
+}
+
+.slide-menu-wrapper .slide-menu-panel h1 {
+  font-size: 1.6em;
+}
+.slide-menu-wrapper .slide-menu-panel h2 {
+  font-size: 1.4em;
+}
+.slide-menu-wrapper .slide-menu-panel h3 {
+  font-size: 1.3em;
+}
+.slide-menu-wrapper .slide-menu-panel h4 {
+  font-size: 1.1em;
+}
+.slide-menu-wrapper .slide-menu-panel h5 {
+  font-size: 1em;
+}
+.slide-menu-wrapper .slide-menu-panel h6 {
+  font-size: 0.9em;
+}
+
+.slide-menu-wrapper .slide-menu-panel p {
+  margin: 10px 0 5px 0;
+}
+
+.slide-menu-wrapper .slide-menu-panel a {
+  color: #ccc;
+  text-decoration: underline;
+}
+
+.slide-menu-wrapper .slide-menu-panel a:hover {
+  color: white;
+}
+
+.slide-menu-wrapper .slide-menu-item a {
+  text-decoration: none;
+}
+
+.slide-menu-wrapper .slide-menu-custom-panel {
+  width: calc(100% - 20px);
+  padding-left: 10px;
+  padding-right: 10px;
+}
+
+.slide-menu-wrapper .slide-menu-custom-panel .slide-menu-items {
+  width: calc(100% + 20px);
+  margin-left: -10px;
+  margin-right: 10px;
+}
+
+/*
+ * Theme and Transitions buttons
+ */
+
+.slide-menu-wrapper div[data-panel='Themes'] li,
+.slide-menu-wrapper div[data-panel='Transitions'] li {
+  display: block;
+  text-align: left;
+  cursor: pointer;
+  color: #848484;
+}
+
+/*
+ * Menu controls
+ */
+.reveal .slide-menu-button {
+  position: fixed;
+  left: 30px;
+  bottom: 30px;
+  z-index: 30;
+  font-size: 24px;
+}
+
+/*
+ * Menu overlay
+ */
+
+.slide-menu-wrapper .slide-menu-overlay {
+  position: fixed;
+  z-index: 199;
+  top: 0;
+  left: 0;
+  overflow: hidden;
+  width: 0;
+  height: 0;
+  background-color: #000;
+  opacity: 0;
+  transition: opacity 0.3s, width 0s 0.3s, height 0s 0.3s;
+}
+
+.slide-menu-wrapper .slide-menu-overlay.active {
+  width: 100%;
+  height: 100%;
+  opacity: 0.7;
+  transition: opacity 0.3s;
+}
+
+/*
+ * Hide menu for pdf printing
+ */
+body.print-pdf .slide-menu-wrapper .slide-menu,
+body.print-pdf .reveal .slide-menu-button,
+body.print-pdf .slide-menu-wrapper .slide-menu-overlay {
+  display: none;
+}
diff --git a/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.js b/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.js
new file mode 100644
index 0000000..5369df3
--- /dev/null
+++ b/docs/index_files/libs/revealjs/plugin/reveal-menu/menu.js
@@ -0,0 +1 @@
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).RevealMenu=t()}(this,(function(){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function t(e,t,n){return e(n={path:t,exports:{},require:function(e,t){return function(){throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs")}(null==t&&n.path)}},n.exports),n.exports}var n=function(e){return e&&e.Math==Math&&e},r=n("object"==typeof globalThis&&globalThis)||n("object"==typeof window&&window)||n("object"==typeof self&&self)||n("object"==typeof e&&e)||Function("return this")(),i=function(e){try{return!!e()}catch(e){return!0}},a=!i((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),o={}.propertyIsEnumerable,s=Object.getOwnPropertyDescriptor,l={f:s&&!o.call({1:2},1)?function(e){var t=s(this,e);return!!t&&t.enumerable}:o},c=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},u={}.toString,f=function(e){return u.call(e).slice(8,-1)},d="".split,p=i((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==f(e)?d.call(e,""):Object(e)}:Object,h=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},m=function(e){return p(h(e))},v=function(e){return"object"==typeof e?null!==e:"function"==typeof e},g=function(e,t){if(!v(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!v(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!v(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},y={}.hasOwnProperty,b=function(e,t){return y.call(e,t)},S=r.document,E=v(S)&&v(S.createElement),x=!a&&!i((function(){return 7!=Object.defineProperty((e="div",E?S.createElement(e):{}),"a",{get:function(){return 7}}).a;var e})),w=Object.getOwnPropertyDescriptor,L={f:a?w:function(e,t){if(e=m(e),t=g(t,!0),x)try{return w(e,t)}catch(e){}if(b(e,t))return c(!l.f.call(e,t),e[t])}},T=function(e){if(!v(e))throw TypeError(String(e)+" is not an object");return e},C=Object.defineProperty,O={f:a?C:function(e,t,n){if(T(e),t=g(t,!0),T(n),x)try{return C(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e}},A=a?function(e,t,n){return O.f(e,t,c(1,n))}:function(e,t,n){return e[t]=n,e},k=function(e,t){try{A(r,e,t)}catch(n){r[e]=t}return t},I=r["__core-js_shared__"]||k("__core-js_shared__",{}),P=Function.toString;"function"!=typeof I.inspectSource&&(I.inspectSource=function(e){return P.call(e)});var M,R,j,N,_=I.inspectSource,F=r.WeakMap,W="function"==typeof F&&/native code/.test(_(F)),H=t((function(e){(e.exports=function(e,t){return I[e]||(I[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.6.5",mode:"global",copyright:"© 2020 Denis Pushkarev (zloirock.ru)"})})),U=0,$=Math.random(),D=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++U+$).toString(36)},q=H("keys"),B={},G=r.WeakMap;if(W){var V=new G,K=V.get,z=V.has,X=V.set;M=function(e,t){return X.call(V,e,t),t},R=function(e){return K.call(V,e)||{}},j=function(e){return z.call(V,e)}}else{var Y=q[N="state"]||(q[N]=D(N));B[Y]=!0,M=function(e,t){return A(e,Y,t),t},R=function(e){return b(e,Y)?e[Y]:{}},j=function(e){return b(e,Y)}}var J={set:M,get:R,has:j,enforce:function(e){return j(e)?R(e):M(e,{})},getterFor:function(e){return function(t){var n;if(!v(t)||(n=R(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Z=t((function(e){var t=J.get,n=J.enforce,i=String(String).split("String");(e.exports=function(e,t,a,o){var s=!!o&&!!o.unsafe,l=!!o&&!!o.enumerable,c=!!o&&!!o.noTargetGet;"function"==typeof a&&("string"!=typeof t||b(a,"name")||A(a,"name",t),n(a).source=i.join("string"==typeof t?t:"")),e!==r?(s?!c&&e[t]&&(l=!0):delete e[t],l?e[t]=a:A(e,t,a)):l?e[t]=a:k(t,a)})(Function.prototype,"toString",(function(){return"function"==typeof this&&t(this).source||_(this)}))})),Q=r,ee=function(e){return"function"==typeof e?e:void 0},te=function(e,t){return arguments.length<2?ee(Q[e])||ee(r[e]):Q[e]&&Q[e][t]||r[e]&&r[e][t]},ne=Math.ceil,re=Math.floor,ie=function(e){return isNaN(e=+e)?0:(e>0?re:ne)(e)},ae=Math.min,oe=function(e){return e>0?ae(ie(e),9007199254740991):0},se=Math.max,le=Math.min,ce=function(e,t){var n=ie(e);return n<0?se(n+t,0):le(n,t)},ue=function(e){return function(t,n,r){var i,a=m(t),o=oe(a.length),s=ce(r,o);if(e&&n!=n){for(;o>s;)if((i=a[s++])!=i)return!0}else for(;o>s;s++)if((e||s in a)&&a[s]===n)return e||s||0;return!e&&-1}},fe={includes:ue(!0),indexOf:ue(!1)},de=fe.indexOf,pe=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype"),he={f:Object.getOwnPropertyNames||function(e){return function(e,t){var n,r=m(e),i=0,a=[];for(n in r)!b(B,n)&&b(r,n)&&a.push(n);for(;t.length>i;)b(r,n=t[i++])&&(~de(a,n)||a.push(n));return a}(e,pe)}},me={f:Object.getOwnPropertySymbols},ve=te("Reflect","ownKeys")||function(e){var t=he.f(T(e)),n=me.f;return n?t.concat(n(e)):t},ge=function(e,t){for(var n=ve(t),r=O.f,i=L.f,a=0;ay;y++)if((o||y in m)&&(d=v(f=m[y],y,h),e))if(t)S[y]=d;else if(d)switch(e){case 3:return!0;case 5:return f;case 6:return y;case 2:We.call(S,f)}else if(i)return!1;return a?-1:r||i?i:S}},Ue={forEach:He(0),map:He(1),filter:He(2),some:He(3),every:He(4),find:He(5),findIndex:He(6)},$e=function(e,t){var n=[][e];return!!n&&i((function(){n.call(null,t||function(){throw 1},1)}))},De=Object.defineProperty,qe={},Be=function(e){throw e},Ge=function(e,t){if(b(qe,e))return qe[e];t||(t={});var n=[][e],r=!!b(t,"ACCESSORS")&&t.ACCESSORS,o=b(t,0)?t[0]:Be,s=b(t,1)?t[1]:void 0;return qe[e]=!!n&&!i((function(){if(r&&!a)return!0;var e={length:-1};r?De(e,1,{enumerable:!0,get:Be}):e[1]=1,n.call(e,o,s)}))},Ve=Ue.every,Ke=$e("every"),ze=Ge("every");Ce({target:"Array",proto:!0,forced:!Ke||!ze},{every:function(e){return Ve(this,e,arguments.length>1?arguments[1]:void 0)}});var Xe,Ye,Je=te("navigator","userAgent")||"",Ze=r.process,Qe=Ze&&Ze.versions,et=Qe&&Qe.v8;et?Ye=(Xe=et.split("."))[0]+Xe[1]:Je&&(!(Xe=Je.match(/Edge\/(\d+)/))||Xe[1]>=74)&&(Xe=Je.match(/Chrome\/(\d+)/))&&(Ye=Xe[1]);var tt=Ye&&+Ye,nt=Ne("species"),rt=function(e){return tt>=51||!i((function(){var t=[];return(t.constructor={})[nt]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},it=Ue.filter,at=rt("filter"),ot=Ge("filter");Ce({target:"Array",proto:!0,forced:!at||!ot},{filter:function(e){return it(this,e,arguments.length>1?arguments[1]:void 0)}});var st=Ue.forEach,lt=$e("forEach"),ct=Ge("forEach"),ut=lt&&ct?[].forEach:function(e){return st(this,e,arguments.length>1?arguments[1]:void 0)};Ce({target:"Array",proto:!0,forced:[].forEach!=ut},{forEach:ut});var ft=fe.indexOf,dt=[].indexOf,pt=!!dt&&1/[1].indexOf(1,-0)<0,ht=$e("indexOf"),mt=Ge("indexOf",{ACCESSORS:!0,1:0});Ce({target:"Array",proto:!0,forced:pt||!ht||!mt},{indexOf:function(e){return pt?dt.apply(this,arguments)||0:ft(this,e,arguments.length>1?arguments[1]:void 0)}}),Ce({target:"Array",stat:!0},{isArray:ke});var vt=[].join,gt=p!=Object,yt=$e("join",",");Ce({target:"Array",proto:!0,forced:gt||!yt},{join:function(e){return vt.call(m(this),void 0===e?",":e)}});var bt=Math.min,St=[].lastIndexOf,Et=!!St&&1/[1].lastIndexOf(1,-0)<0,xt=$e("lastIndexOf"),wt=Ge("indexOf",{ACCESSORS:!0,1:0}),Lt=Et||!xt||!wt?function(e){if(Et)return St.apply(this,arguments)||0;var t=m(this),n=oe(t.length),r=n-1;for(arguments.length>1&&(r=bt(r,ie(arguments[1]))),r<0&&(r=n+r);r>=0;r--)if(r in t&&t[r]===e)return r||0;return-1}:St;Ce({target:"Array",proto:!0,forced:Lt!==[].lastIndexOf},{lastIndexOf:Lt});var Tt=Ue.map,Ct=rt("map"),Ot=Ge("map");Ce({target:"Array",proto:!0,forced:!Ct||!Ot},{map:function(e){return Tt(this,e,arguments.length>1?arguments[1]:void 0)}});var At=function(e,t,n){var r=g(t);r in e?O.f(e,r,c(0,n)):e[r]=n},kt=rt("slice"),It=Ge("slice",{ACCESSORS:!0,0:0,1:2}),Pt=Ne("species"),Mt=[].slice,Rt=Math.max;Ce({target:"Array",proto:!0,forced:!kt||!It},{slice:function(e,t){var n,r,i,a=m(this),o=oe(a.length),s=ce(e,o),l=ce(void 0===t?o:t,o);if(ke(a)&&("function"!=typeof(n=a.constructor)||n!==Array&&!ke(n.prototype)?v(n)&&null===(n=n[Pt])&&(n=void 0):n=void 0,n===Array||void 0===n))return Mt.call(a,s,l);for(r=new(void 0===n?Array:n)(Rt(l-s,0)),i=0;s>>0||(Qt.test(n)?16:10))}:Zt;Ce({global:!0,forced:parseInt!=en},{parseInt:en});var tn=function(){var e=T(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t};function nn(e,t){return RegExp(e,t)}var rn,an,on={UNSUPPORTED_Y:i((function(){var e=nn("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),BROKEN_CARET:i((function(){var e=nn("^r","gy");return e.lastIndex=2,null!=e.exec("str")}))},sn=RegExp.prototype.exec,ln=String.prototype.replace,cn=sn,un=(rn=/a/,an=/b*/g,sn.call(rn,"a"),sn.call(an,"a"),0!==rn.lastIndex||0!==an.lastIndex),fn=on.UNSUPPORTED_Y||on.BROKEN_CARET,dn=void 0!==/()??/.exec("")[1];(un||dn||fn)&&(cn=function(e){var t,n,r,i,a=this,o=fn&&a.sticky,s=tn.call(a),l=a.source,c=0,u=e;return o&&(-1===(s=s.replace("y","")).indexOf("g")&&(s+="g"),u=String(e).slice(a.lastIndex),a.lastIndex>0&&(!a.multiline||a.multiline&&"\n"!==e[a.lastIndex-1])&&(l="(?: "+l+")",u=" "+u,c++),n=new RegExp("^(?:"+l+")",s)),dn&&(n=new RegExp("^"+l+"$(?!\\s)",s)),un&&(t=a.lastIndex),r=sn.call(o?n:a,u),o?r?(r.input=r.input.slice(c),r[0]=r[0].slice(c),r.index=a.lastIndex,a.lastIndex+=r[0].length):a.lastIndex=0:un&&r&&(a.lastIndex=a.global?r.index+r[0].length:t),dn&&r&&r.length>1&&ln.call(r[0],n,(function(){for(i=1;i1?arguments[1]:void 0,r=oe(t.length),i=void 0===n?r:xn(oe(n),r),a=String(e);return En?En.call(t,a,i):t.slice(i-a.length,i)===a}});var Ln=Ne("species"),Tn=!i((function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")})),Cn="$0"==="a".replace(/./,"$0"),On=Ne("replace"),An=!!/./[On]&&""===/./[On]("a","$0"),kn=!i((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),In=function(e,t,n,r){var a=Ne(e),o=!i((function(){var t={};return t[a]=function(){return 7},7!=""[e](t)})),s=o&&!i((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[Ln]=function(){return n},n.flags="",n[a]=/./[a]),n.exec=function(){return t=!0,null},n[a](""),!t}));if(!o||!s||"replace"===e&&(!Tn||!Cn||An)||"split"===e&&!kn){var l=/./[a],c=n(a,""[e],(function(e,t,n,r,i){return t.exec===pn?o&&!i?{done:!0,value:l.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Cn,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:An}),u=c[0],f=c[1];Z(String.prototype,e,u),Z(RegExp.prototype,a,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&A(RegExp.prototype[a],"sham",!0)},Pn=function(e){return function(t,n){var r,i,a=String(h(t)),o=ie(n),s=a.length;return o<0||o>=s?e?"":void 0:(r=a.charCodeAt(o))<55296||r>56319||o+1===s||(i=a.charCodeAt(o+1))<56320||i>57343?e?a.charAt(o):r:e?a.slice(o,o+2):i-56320+(r-55296<<10)+65536}},Mn={codeAt:Pn(!1),charAt:Pn(!0)}.charAt,Rn=function(e,t,n){return t+(n?Mn(e,t).length:1)},jn=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==f(e))throw TypeError("RegExp#exec called on incompatible receiver");return pn.call(e,t)},Nn=Math.max,_n=Math.min,Fn=Math.floor,Wn=/\$([$&'`]|\d\d?|<[^>]*>)/g,Hn=/\$([$&'`]|\d\d?)/g;In("replace",2,(function(e,t,n,r){var i=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,a=r.REPLACE_KEEPS_$0,o=i?"$":"$0";return[function(n,r){var i=h(this),a=null==n?void 0:n[e];return void 0!==a?a.call(n,i,r):t.call(String(i),n,r)},function(e,r){if(!i&&a||"string"==typeof r&&-1===r.indexOf(o)){var l=n(t,e,this,r);if(l.done)return l.value}var c=T(e),u=String(this),f="function"==typeof r;f||(r=String(r));var d=c.global;if(d){var p=c.unicode;c.lastIndex=0}for(var h=[];;){var m=jn(c,u);if(null===m)break;if(h.push(m),!d)break;""===String(m[0])&&(c.lastIndex=Rn(u,oe(c.lastIndex),p))}for(var v,g="",y=0,b=0;b=y&&(g+=u.slice(y,E)+O,y=E+S.length)}return g+u.slice(y)}];function s(e,n,r,i,a,o){var s=r+e.length,l=i.length,c=Hn;return void 0!==a&&(a=Ae(a),c=Wn),t.call(o,c,(function(t,o){var c;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return n.slice(0,r);case"'":return n.slice(s);case"<":c=a[o.slice(1,-1)];break;default:var u=+o;if(0===u)return t;if(u>l){var f=Fn(u/10);return 0===f?t:f<=l?void 0===i[f-1]?o.charAt(1):i[f-1]+o.charAt(1):t}c=i[u-1]}return void 0===c?"":c}))}}));var Un=Object.is||function(e,t){return e===t?0!==e||1/e==1/t:e!=e&&t!=t};In("search",1,(function(e,t,n){return[function(t){var n=h(this),r=null==t?void 0:t[e];return void 0!==r?r.call(t,n):new RegExp(t)[e](String(n))},function(e){var r=n(t,e,this);if(r.done)return r.value;var i=T(e),a=String(this),o=i.lastIndex;Un(o,0)||(i.lastIndex=0);var s=jn(i,a);return Un(i.lastIndex,o)||(i.lastIndex=o),null===s?-1:s.index}]}));var $n=Ne("species"),Dn=[].push,qn=Math.min,Bn=!i((function(){return!RegExp(4294967295,"y")}));In("split",2,(function(e,t,n){var r;return r="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,n){var r=String(h(this)),i=void 0===n?4294967295:n>>>0;if(0===i)return[];if(void 0===e)return[r];if(!vn(e))return t.call(r,e,i);for(var a,o,s,l=[],c=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),u=0,f=new RegExp(e.source,c+"g");(a=pn.call(f,r))&&!((o=f.lastIndex)>u&&(l.push(r.slice(u,a.index)),a.length>1&&a.index=i));)f.lastIndex===a.index&&f.lastIndex++;return u===r.length?!s&&f.test("")||l.push(""):l.push(r.slice(u)),l.length>i?l.slice(0,i):l}:"0".split(void 0,0).length?function(e,n){return void 0===e&&0===n?[]:t.call(this,e,n)}:t,[function(t,n){var i=h(this),a=null==t?void 0:t[e];return void 0!==a?a.call(t,i,n):r.call(String(i),t,n)},function(e,i){var a=n(r,e,this,i,r!==t);if(a.done)return a.value;var o=T(e),s=String(this),l=function(e,t){var n,r=T(e).constructor;return void 0===r||null==(n=T(r)[$n])?t:Oe(n)}(o,RegExp),c=o.unicode,u=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(Bn?"y":"g"),f=new l(Bn?o:"^(?:"+o.source+")",u),d=void 0===i?4294967295:i>>>0;if(0===d)return[];if(0===s.length)return null===jn(f,s)?[s]:[];for(var p=0,h=0,m=[];h1?arguments[1]:void 0,t.length)),r=String(e);return Vn?Vn.call(t,r,n):t.slice(n,n+r.length)===r}});var Xn,Yn=Kt.trim;Ce({target:"String",proto:!0,forced:(Xn="trim",i((function(){return!!Dt[Xn]()||"​…᠎"!="​…᠎"[Xn]()||Dt[Xn].name!==Xn})))},{trim:function(){return Yn(this)}});for(var Jn in{CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}){var Zn=r[Jn],Qn=Zn&&Zn.prototype;if(Qn&&Qn.forEach!==ut)try{A(Qn,"forEach",ut)}catch(e){Qn.forEach=ut}}var er=[].slice,tr=function(e){return function(t,n){var r=arguments.length>2,i=r?er.call(arguments,2):void 0;return e(r?function(){("function"==typeof t?t:Function(t)).apply(this,i)}:t,n)}};Ce({global:!0,bind:!0,forced:/MSIE .\./.test(Je)},{setTimeout:tr(r.setTimeout),setInterval:tr(r.setInterval)});return String.prototype.startsWith||(String.prototype.startsWith=function(e,t){return this.substr(t||0,e.length)===e}),String.prototype.endsWith||(String.prototype.endsWith=function(e,t){return(void 0===t||t>this.length)&&(t=this.length),this.substring(t-e.length,t)===e}),function(){var e,t,n,r,i=(e=/(msie) ([\w.]+)/.exec(window.navigator.userAgent.toLowerCase()))&&"msie"===e[1]?parseFloat(e[2]):null,a=!1;function o(e){(r=e.menu||{}).path=r.path||function(){var e;if(document.querySelector('script[src$="menu.js"]')){var t=document.querySelector('script[src$="menu.js"]');t&&(e=t.src.slice(0,-7))}else e=("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("menu.js",document.baseURI).href).slice(0,("undefined"==typeof document?new(require("url").URL)("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("menu.js",document.baseURI).href).lastIndexOf("/")+1);return e}()||"plugin/menu/",r.path.endsWith("/")||(r.path+="/"),void 0===r.side&&(r.side="left"),void 0===r.numbers&&(r.numbers=!1),"string"!=typeof r.titleSelector&&(r.titleSelector="h1, h2, h3, h4, h5"),void 0===r.hideMissingTitles&&(r.hideMissingTitles=!1),void 0===r.useTextContentForMissingTitles&&(r.useTextContentForMissingTitles=!1),void 0===r.markers&&(r.markers=!0),"string"!=typeof r.themesPath&&(r.themesPath="dist/theme/"),r.themesPath.endsWith("/")||(r.themesPath+="/"),O("link#theme")||(r.themes=!1),!0===r.themes?r.themes=[{name:"Black",theme:r.themesPath+"black.css"},{name:"White",theme:r.themesPath+"white.css"},{name:"League",theme:r.themesPath+"league.css"},{name:"Sky",theme:r.themesPath+"sky.css"},{name:"Beige",theme:r.themesPath+"beige.css"},{name:"Simple",theme:r.themesPath+"simple.css"},{name:"Serif",theme:r.themesPath+"serif.css"},{name:"Blood",theme:r.themesPath+"blood.css"},{name:"Night",theme:r.themesPath+"night.css"},{name:"Moon",theme:r.themesPath+"moon.css"},{name:"Solarized",theme:r.themesPath+"solarized.css"}]:Array.isArray(r.themes)||(r.themes=!1),void 0===r.transitions&&(r.transitions=!1),!0===r.transitions?r.transitions=["None","Fade","Slide","Convex","Concave","Zoom"]:!1===r.transitions||Array.isArray(r.transitions)&&r.transitions.every((function(e){return"string"==typeof e}))||(console.error("reveal.js-menu error: transitions config value must be 'true' or an array of strings, eg ['None', 'Fade', 'Slide')"),r.transitions=!1),i&&i<=9&&(r.transitions=!1),void 0===r.openButton&&(r.openButton=!0),void 0===r.openSlideNumber&&(r.openSlideNumber=!1),void 0===r.keyboard&&(r.keyboard=!0),void 0===r.sticky&&(r.sticky=!1),void 0===r.autoOpen&&(r.autoOpen=!0),void 0===r.delayInit&&(r.delayInit=!1),void 0===r.openOnInit&&(r.openOnInit=!1)}var s=!0;function l(){s=!1}function c(){O("nav.slide-menu").addEventListener("mousemove",(function e(t){O("nav.slide-menu").removeEventListener("mousemove",e),s=!0}))}function u(e){var t=function(e){for(var t=0,n=0;e&&!isNaN(e.offsetLeft)&&!isNaN(e.offsetTop);)t+=e.offsetLeft-e.scrollLeft,n+=e.offsetTop-e.scrollTop,e=e.offsetParent;return{top:n,left:t}}(e).top-e.offsetParent.offsetTop;if(t<0)return-t;var n=e.offsetParent.offsetHeight-(e.offsetTop-e.offsetParent.scrollTop+e.offsetHeight);return n<0?n:0}function f(e){var t=u(e);t&&(l(),e.scrollIntoView(t>0),c())}function d(e){l(),e.offsetParent.scrollTop=e.offsetTop,c()}function p(e){l(),e.offsetParent.scrollTop=e.offsetTop-e.offsetParent.offsetHeight+e.offsetHeight,c()}function h(e){e.classList.add("selected"),f(e),r.sticky&&r.autoOpen&&E(e)}function m(e){if(b())switch(e.stopImmediatePropagation(),e.keyCode){case 72:case 37:!function(){var e=parseInt(O(".active-toolbar-button").getAttribute("data-button"))-1;e<0&&(e=T-1);S(null,O('.toolbar-panel-button[data-button="'+e+'"]').getAttribute("data-panel"))}();break;case 76:case 39:l=(parseInt(O(".active-toolbar-button").getAttribute("data-button"))+1)%T,S(null,O('.toolbar-panel-button[data-button="'+l+'"]').getAttribute("data-panel"));break;case 75:case 38:if(s=O(".active-menu-panel .slide-menu-items li.selected")||O(".active-menu-panel .slide-menu-items li.active"))A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(O('.active-menu-panel .slide-menu-items li[data-item="'+(parseInt(s.getAttribute("data-item"))-1)+'"]')||s);else(o=O(".active-menu-panel .slide-menu-items li.slide-menu-item"))&&h(o);break;case 74:case 40:if(s=O(".active-menu-panel .slide-menu-items li.selected")||O(".active-menu-panel .slide-menu-items li.active"))A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(O('.active-menu-panel .slide-menu-items li[data-item="'+(parseInt(s.getAttribute("data-item"))+1)+'"]')||s);else(o=O(".active-menu-panel .slide-menu-items li.slide-menu-item"))&&h(o);break;case 33:case 85:var t=A(".active-menu-panel .slide-menu-items li").filter((function(e){return u(e)>0})),n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})),r=t.length>0&&Math.abs(u(t[t.length-1]))0&&(p(r),r=(n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})))[0]==r?t[t.length-1]:n[0]),A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(r),d(r));break;case 34:case 68:n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)}));var i=A(".active-menu-panel .slide-menu-items li").filter((function(e){return u(e)<0})),a=i.length>0&&Math.abs(u(i[0]))0&&(d(a),a=(n=A(".active-menu-panel .slide-menu-items li").filter((function(e){return 0==u(e)})))[n.length-1]==a?i[0]:n[n.length-1]),A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),h(a),p(a));break;case 36:A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),(o=O(".active-menu-panel .slide-menu-items li:first-of-type"))&&(o.classList.add("selected"),f(o));break;case 35:var o;A(".active-menu-panel .slide-menu-items li").forEach((function(e){e.classList.remove("selected")})),(o=O(".active-menu-panel .slide-menu-items:last-of-type li:last-of-type"))&&(o.classList.add("selected"),f(o));break;case 32:case 13:var s;(s=O(".active-menu-panel .slide-menu-items li.selected"))&&E(s,!0);break;case 27:g(null,!0)}var l}function v(e){(e&&e.preventDefault(),b())||(O("body").classList.add("slide-menu-active"),O(".reveal").classList.add("has-"+r.effect+"-"+r.side),O(".slide-menu").classList.add("active"),O(".slide-menu-overlay").classList.add("active"),r.themes&&(A('div[data-panel="Themes"] li').forEach((function(e){e.classList.remove("active")})),A('li[data-theme="'+O("link#theme").getAttribute("href")+'"]').forEach((function(e){e.classList.add("active")}))),r.transitions&&(A('div[data-panel="Transitions"] li').forEach((function(e){e.classList.remove("active")})),A('li[data-transition="'+n.transition+'"]').forEach((function(e){e.classList.add("active")}))),A(".slide-menu-panel li.active").forEach((function(e){e.classList.add("selected"),f(e)})))}function g(e,t){e&&e.preventDefault(),r.sticky&&!t||(O("body").classList.remove("slide-menu-active"),O(".reveal").classList.remove("has-"+r.effect+"-"+r.side),O(".slide-menu").classList.remove("active"),O(".slide-menu-overlay").classList.remove("active"),A(".slide-menu-panel li.selected").forEach((function(e){e.classList.remove("selected")})))}function y(e){b()?g(e,!0):v(e)}function b(){return O("body").classList.contains("slide-menu-active")}function S(e,t){v(e);var n=t;"string"!=typeof t&&(n=e.currentTarget.getAttribute("data-panel")),O(".slide-menu-toolbar > li.active-toolbar-button").classList.remove("active-toolbar-button"),O('li[data-panel="'+n+'"]').classList.add("active-toolbar-button"),O(".slide-menu-panel.active-menu-panel").classList.remove("active-menu-panel"),O('div[data-panel="'+n+'"]').classList.add("active-menu-panel")}function E(e,n){var i=parseInt(e.getAttribute("data-slide-h")),a=parseInt(e.getAttribute("data-slide-v")),o=e.getAttribute("data-theme"),s=e.getAttribute("data-highlight-theme"),l=e.getAttribute("data-transition");isNaN(i)||isNaN(a)||t.slide(i,a),o&&I("theme",o),s&&I("highlight-theme",s),l&&t.configure({transition:l});var c=O("a",e);c&&(n||!r.sticky||r.autoOpen&&c.href.startsWith("#")||c.href.startsWith(window.location.origin+window.location.pathname+"#"))&&c.click(),g()}function x(e){"A"!==e.target.nodeName&&e.preventDefault(),E(e.currentTarget)}function w(){var e=t.getState();A("li.slide-menu-item, li.slide-menu-item-vertical").forEach((function(t){t.classList.remove("past"),t.classList.remove("active"),t.classList.remove("future");var n=parseInt(t.getAttribute("data-slide-h")),r=parseInt(t.getAttribute("data-slide-v"));n",s.appendChild(k("br"),O("i",s)),s.appendChild(k("span",{class:"slide-menu-toolbar-label"},e),O("i",s)),s.onclick=i,d.appendChild(s),s},i=function(e,i,a,o,s){function l(e,t){if(""===e)return null;var n=t?O(e,i):O(e);return n?n.textContent:null}var c=i.getAttribute("data-menu-title")||l(".menu-title",i)||l(r.titleSelector,i);if(!c&&r.useTextContentForMissingTitles&&(c=i.textContent.trim())&&(c=c.split("\n").map((function(e){return e.trim()})).join(" ").trim().replace(/^(.{16}[^\s]*).*/,"$1").replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")+"..."),!c){if(r.hideMissingTitles)return"";e+=" no-title",c="Slide "+(a+1)}var u=k("li",{class:e,"data-item":a,"data-slide-h":o,"data-slide-v":void 0===s?0:s});if(r.markers&&(u.appendChild(k("i",{class:"fas fa-check-circle fa-fw past"})),u.appendChild(k("i",{class:"fas fa-arrow-alt-circle-right fa-fw active"})),u.appendChild(k("i",{class:"far fa-circle fa-fw future"}))),r.numbers){var f=[],d="h.v";switch("string"==typeof r.numbers?d=r.numbers:"string"==typeof n.slideNumber&&(d=n.slideNumber),d){case"c":f.push(a+1);break;case"c/t":f.push(a+1,"/",t.getTotalSlides());break;case"h/v":f.push(o+1),"number"!=typeof s||isNaN(s)||f.push("/",s+1);break;default:f.push(o+1),"number"!=typeof s||isNaN(s)||f.push(".",s+1)}u.appendChild(k("span",{class:"slide-menu-item-number"},f.join("")+". "))}return u.appendChild(k("span",{class:"slide-menu-item-title"},c)),u},o=function(e){s&&(A(".active-menu-panel .slide-menu-items li.selected").forEach((function(e){e.classList.remove("selected")})),e.currentTarget.classList.add("selected"))},l=O(".reveal").parentElement,c=k("div",{class:"slide-menu-wrapper"});l.appendChild(c);var u=k("nav",{class:"slide-menu slide-menu--"+r.side});"string"==typeof r.width&&(-1!=["normal","wide","third","half","full"].indexOf(r.width)?u.classList.add("slide-menu--"+r.width):(u.classList.add("slide-menu--custom"),u.style.width=r.width)),c.appendChild(u),L();var f=k("div",{class:"slide-menu-overlay"});c.appendChild(f),f.onclick=function(){g(null,!0)};var d=k("ol",{class:"slide-menu-toolbar"});O(".slide-menu").appendChild(d),e("Slides","Slides","fa-images","fas",S,!0),r.custom&&r.custom.forEach((function(t,n,r){e(t.title,"Custom"+n,t.icon,null,S)})),r.themes&&e("Themes","Themes","fa-adjust","fas",S),r.transitions&&e("Transitions","Transitions","fa-sticky-note","fas",S);var p=k("li",{id:"close",class:"toolbar-panel-button"});if(p.appendChild(k("i",{class:"fas fa-times"})),p.appendChild(k("br")),p.appendChild(k("span",{class:"slide-menu-toolbar-label"},"Close")),p.onclick=function(){g(null,!0)},d.appendChild(p),function e(){if(document.querySelector("section[data-markdown]:not([data-markdown-parsed])"))setTimeout(e,100);else{var t=k("div",{"data-panel":"Slides",class:"slide-menu-panel active-menu-panel"});t.appendChild(k("ul",{class:"slide-menu-items"})),u.appendChild(t);var n=O('.slide-menu-panel[data-panel="Slides"] > .slide-menu-items'),r=0;A(".slides > section").forEach((function(e,t){var a=A("section",e);if(a.length>0)a.forEach((function(e,a){var o=i(0===a?"slide-menu-item":"slide-menu-item-vertical",e,r,t,a);o&&n.appendChild(o),r++}));else{var o=i("slide-menu-item",e,r,t);o&&n.appendChild(o),r++}})),A(".slide-menu-item, .slide-menu-item-vertical").forEach((function(e){e.onclick=x})),w()}}(),t.addEventListener("slidechanged",w),r.custom){var h=function(){this.status>=200&&this.status<300?(this.panel.innerHTML=this.responseText,C(this.panel)):I(this)},E=function(){I(this)},C=function(e){A("ul.slide-menu-items li.slide-menu-item",e).forEach((function(e,t){e.setAttribute("data-item",t+1),e.onclick=x,e.addEventListener("mouseenter",o)}))},I=function(e){var t="

ERROR: The attempt to fetch "+e.responseURL+" failed with HTTP status "+e.status+" ("+e.statusText+").

Remember that you need to serve the presentation HTML from a HTTP server.

";e.panel.innerHTML=t};r.custom.forEach((function(e,t,n){var r=k("div",{"data-panel":"Custom"+t,class:"slide-menu-panel slide-menu-custom-panel"});e.content?(r.innerHTML=e.content,C(r)):e.src&&function(e,t){var n=new XMLHttpRequest;n.panel=e,n.arguments=Array.prototype.slice.call(arguments,2),n.onload=h,n.onerror=E,n.open("get",t,!0),n.send(null)}(r,e.src),u.appendChild(r)}))}if(r.themes){var P=k("div",{class:"slide-menu-panel","data-panel":"Themes"});u.appendChild(P);var M=k("ul",{class:"slide-menu-items"});P.appendChild(M),r.themes.forEach((function(e,t){var n={class:"slide-menu-item","data-item":""+(t+1)};e.theme&&(n["data-theme"]=e.theme),e.highlightTheme&&(n["data-highlight-theme"]=e.highlightTheme);var r=k("li",n,e.name);M.appendChild(r),r.onclick=x}))}if(r.transitions){P=k("div",{class:"slide-menu-panel","data-panel":"Transitions"});u.appendChild(P);M=k("ul",{class:"slide-menu-items"});P.appendChild(M),r.transitions.forEach((function(e,t){var n=k("li",{class:"slide-menu-item","data-transition":e.toLowerCase(),"data-item":""+(t+1)},e);M.appendChild(n),n.onclick=x}))}if(r.openButton){var R=k("div",{class:"slide-menu-button"}),j=k("a",{href:"#"});j.appendChild(k("i",{class:"fas fa-bars"})),R.appendChild(j),O(".reveal").appendChild(R),R.onclick=v}if(r.openSlideNumber)O("div.slide-number").onclick=v;A(".slide-menu-panel .slide-menu-items li").forEach((function(e){e.addEventListener("mouseenter",o)}))}if(r.keyboard){if(document.addEventListener("keydown",m,!1),window.addEventListener("message",(function(e){var t;try{t=JSON.parse(e.data)}catch(e){}t&&"triggerKey"===t.method&&m({keyCode:t.args[0],stopImmediatePropagation:function(){}})})),n.keyboardCondition&&"function"==typeof n.keyboardCondition){var N=n.keyboardCondition;n.keyboardCondition=function(e){return N(e)&&(!b()||77==e.keyCode)}}else n.keyboardCondition=function(e){return!b()||77==e.keyCode};t.addKeyBinding({keyCode:77,key:"M",description:"Toggle menu"},y)}r.openOnInit&&v(),a=!0}function O(e,t){return t||(t=document),t.querySelector(e)}function A(e,t){return t||(t=document),Array.prototype.slice.call(t.querySelectorAll(e))}function k(e,t,n){var r=document.createElement(e);return t&&Object.getOwnPropertyNames(t).forEach((function(e){r.setAttribute(e,t[e])})),n&&(r.innerHTML=n),r}function I(e,t){var n=O("link#"+e),r=n.parentElement,i=n.nextElementSibling;n.remove();var a=n.cloneNode();a.setAttribute("href",t),a.onload=function(){L()},r.insertBefore(a,i)}function P(e,t,n){n.call()}function M(){var e,a,o,s=!i||i>=9;t.isSpeakerNotes()&&window.location.search.endsWith("controls=false")&&(s=!1),s&&(r.delayInit||C(),e="menu-ready",(o=document.createEvent("HTMLEvents",1,2)).initEvent(e,!0,!0),function(e,t){for(var n in t)e[n]=t[n]}(o,a),document.querySelector(".reveal").dispatchEvent(o),n.postMessageEvents&&window.parent!==window.self&&window.parent.postMessage(JSON.stringify({namespace:"reveal",eventName:e,state:t.getState()}),"*"))}return{id:"menu",init:function(e){o(n=(t=e).getConfig()),P(r.path+"menu.css","stylesheet",(function(){void 0===r.loadIcons||r.loadIcons?P(r.path+"font-awesome/css/all.css","stylesheet",M):M()}))},toggle:y,openMenu:v,closeMenu:g,openPanel:S,isOpen:b,initialiseMenu:C,isMenuInitialised:function(){return a}}}})); diff --git a/docs/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml b/docs/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml new file mode 100644 index 0000000..3f4b90a --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/reveal-menu/plugin.yml @@ -0,0 +1,9 @@ +name: RevealMenu +script: [menu.js, quarto-menu.js] +stylesheet: [menu.css, quarto-menu.css] +config: + menu: + side: "left" + useTextContentForMissingTitles: true + markers: false + loadIcons: false diff --git a/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css b/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css new file mode 100644 index 0000000..eec145c --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.css @@ -0,0 +1,68 @@ +.slide-menu-wrapper .slide-tool-item { + display: block; + text-align: left; + padding: 10px 18px; + color: #aaa; + cursor: pointer; + border-top: solid 1px #555; +} + +.slide-menu-wrapper .slide-tool-item a { + text-decoration: none; +} + +.slide-menu-wrapper .slide-tool-item kbd { + font-family: monospace; + margin-right: 10px; + padding: 3px 8px; + color: inherit; + border: 1px solid; + border-radius: 5px; + border-color: #555; +} + +.slide-menu-wrapper .slide-menu-toolbar > li.active-toolbar-button { + text-decoration: none; +} + +.reveal .slide-menu-button { + left: 8px; + bottom: 8px; +} + +.reveal .slide-menu-button .fas::before, +.reveal .slide-chalkboard-buttons .fas::before, +.slide-menu-wrapper .slide-menu-toolbar .fas::before { + display: inline-block; + height: 2.2rem; + width: 2.2rem; + content: ""; + vertical-align: -0.125em; + background-repeat: no-repeat; + background-size: 2.2rem 2.2rem; +} + +.reveal .slide-chalkboard-buttons .fas::before { + height: 1.45rem; + width: 1.45rem; + background-size: 1.45rem 1.45rem; + vertical-align: 0.1em; +} + +.slide-menu-wrapper .slide-menu-toolbar .fas::before { + height: 1.8rem; + width: 1.8rem; + background-size: 1.8rem 1.8rem; +} + +.slide-menu-wrapper .slide-menu-toolbar .fa-images::before { + background-image: url('data:image/svg+xml,'); +} + +.slide-menu-wrapper .slide-menu-toolbar .fa-gear::before { + background-image: url('data:image/svg+xml,'); +} + +.slide-menu-wrapper .slide-menu-toolbar .fa-times::before { + background-image: url('data:image/svg+xml,'); +} diff --git a/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js b/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js new file mode 100644 index 0000000..9674053 --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/reveal-menu/quarto-menu.js @@ -0,0 +1,43 @@ +window.revealMenuToolHandler = function (handler) { + return function (event) { + event.preventDefault(); + handler(); + Reveal.getPlugin("menu").closeMenu(); + }; +}; + +window.RevealMenuToolHandlers = { + fullscreen: revealMenuToolHandler(function () { + const element = document.documentElement; + const requestMethod = + element.requestFullscreen || + element.webkitRequestFullscreen || + element.webkitRequestFullScreen || + element.mozRequestFullScreen || + element.msRequestFullscreen; + if (requestMethod) { + requestMethod.apply(element); + } + }), + speakerMode: revealMenuToolHandler(function () { + Reveal.getPlugin("notes").open(); + }), + keyboardHelp: revealMenuToolHandler(function () { + Reveal.toggleHelp(true); + }), + overview: revealMenuToolHandler(function () { + Reveal.toggleOverview(true); + }), + toggleChalkboard: revealMenuToolHandler(function () { + RevealChalkboard.toggleChalkboard(); + }), + toggleNotesCanvas: revealMenuToolHandler(function () { + RevealChalkboard.toggleNotesCanvas(); + }), + downloadDrawings: revealMenuToolHandler(function () { + RevealChalkboard.download(); + }), + togglePdfExport: revealMenuToolHandler(function () { + PdfExport.togglePdfExport(); + }), +}; diff --git a/docs/index_files/libs/revealjs/plugin/search/plugin.js b/docs/index_files/libs/revealjs/plugin/search/plugin.js new file mode 100644 index 0000000..5d09ce6 --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/search/plugin.js @@ -0,0 +1,243 @@ +/*! + * Handles finding a text string anywhere in the slides and showing the next occurrence to the user + * by navigatating to that slide and highlighting it. + * + * @author Jon Snyder , February 2013 + */ + +const Plugin = () => { + + // The reveal.js instance this plugin is attached to + let deck; + + let searchElement; + let searchButton; + let searchInput; + + let matchedSlides; + let currentMatchedIndex; + let searchboxDirty; + let hilitor; + + function render() { + + searchElement = document.createElement( 'div' ); + searchElement.classList.add( 'searchbox' ); + searchElement.style.position = 'absolute'; + searchElement.style.top = '10px'; + searchElement.style.right = '10px'; + searchElement.style.zIndex = 10; + + //embedded base64 search icon Designed by Sketchdock - http://www.sketchdock.com/: + searchElement.innerHTML = ` +
`; + + searchInput = searchElement.querySelector( '.searchinput' ); + searchInput.style.width = '240px'; + searchInput.style.fontSize = '14px'; + searchInput.style.padding = '4px 6px'; + searchInput.style.color = '#000'; + searchInput.style.background = '#fff'; + searchInput.style.borderRadius = '2px'; + searchInput.style.border = '0'; + searchInput.style.outline = '0'; + searchInput.style.boxShadow = '0 2px 18px rgba(0, 0, 0, 0.2)'; + searchInput.style['-webkit-appearance'] = 'none'; + + deck.getRevealElement().appendChild( searchElement ); + + // searchButton.addEventListener( 'click', function(event) { + // doSearch(); + // }, false ); + + searchInput.addEventListener( 'keyup', function( event ) { + switch (event.keyCode) { + case 13: + event.preventDefault(); + doSearch(); + searchboxDirty = false; + break; + default: + searchboxDirty = true; + } + }, false ); + + closeSearch(); + + } + + function openSearch() { + if( !searchElement ) render(); + + searchElement.style.display = 'inline'; + searchInput.focus(); + searchInput.select(); + } + + function closeSearch() { + if( !searchElement ) render(); + + searchElement.style.display = 'none'; + if(hilitor) hilitor.remove(); + } + + function toggleSearch() { + if( !searchElement ) render(); + + if (searchElement.style.display !== 'inline') { + openSearch(); + } + else { + closeSearch(); + } + } + + function doSearch() { + //if there's been a change in the search term, perform a new search: + if (searchboxDirty) { + var searchstring = searchInput.value; + + if (searchstring === '') { + if(hilitor) hilitor.remove(); + matchedSlides = null; + } + else { + //find the keyword amongst the slides + hilitor = new Hilitor("slidecontent"); + matchedSlides = hilitor.apply(searchstring); + currentMatchedIndex = 0; + } + } + + if (matchedSlides) { + //navigate to the next slide that has the keyword, wrapping to the first if necessary + if (matchedSlides.length && (matchedSlides.length <= currentMatchedIndex)) { + currentMatchedIndex = 0; + } + if (matchedSlides.length > currentMatchedIndex) { + deck.slide(matchedSlides[currentMatchedIndex].h, matchedSlides[currentMatchedIndex].v); + currentMatchedIndex++; + } + } + } + + // Original JavaScript code by Chirp Internet: www.chirp.com.au + // Please acknowledge use of this code by including this header. + // 2/2013 jon: modified regex to display any match, not restricted to word boundaries. + function Hilitor(id, tag) { + + var targetNode = document.getElementById(id) || document.body; + var hiliteTag = tag || "EM"; + var skipTags = new RegExp("^(?:" + hiliteTag + "|SCRIPT|FORM)$"); + var colors = ["#ff6", "#a0ffff", "#9f9", "#f99", "#f6f"]; + var wordColor = []; + var colorIdx = 0; + var matchRegex = ""; + var matchingSlides = []; + + this.setRegex = function(input) + { + input = input.replace(/^[^\w]+|[^\w]+$/g, "").replace(/[^\w'-]+/g, "|"); + matchRegex = new RegExp("(" + input + ")","i"); + } + + this.getRegex = function() + { + return matchRegex.toString().replace(/^\/\\b\(|\)\\b\/i$/g, "").replace(/\|/g, " "); + } + + // recursively apply word highlighting + this.hiliteWords = function(node) + { + if(node == undefined || !node) return; + if(!matchRegex) return; + if(skipTags.test(node.nodeName)) return; + + if(node.hasChildNodes()) { + for(var i=0; i < node.childNodes.length; i++) + this.hiliteWords(node.childNodes[i]); + } + if(node.nodeType == 3) { // NODE_TEXT + var nv, regs; + if((nv = node.nodeValue) && (regs = matchRegex.exec(nv))) { + //find the slide's section element and save it in our list of matching slides + var secnode = node; + while (secnode != null && secnode.nodeName != 'SECTION') { + secnode = secnode.parentNode; + } + + var slideIndex = deck.getIndices(secnode); + var slidelen = matchingSlides.length; + var alreadyAdded = false; + for (var i=0; i < slidelen; i++) { + if ( (matchingSlides[i].h === slideIndex.h) && (matchingSlides[i].v === slideIndex.v) ) { + alreadyAdded = true; + } + } + if (! alreadyAdded) { + matchingSlides.push(slideIndex); + } + + if(!wordColor[regs[0].toLowerCase()]) { + wordColor[regs[0].toLowerCase()] = colors[colorIdx++ % colors.length]; + } + + var match = document.createElement(hiliteTag); + match.appendChild(document.createTextNode(regs[0])); + match.style.backgroundColor = wordColor[regs[0].toLowerCase()]; + match.style.fontStyle = "inherit"; + match.style.color = "#000"; + + var after = node.splitText(regs.index); + after.nodeValue = after.nodeValue.substring(regs[0].length); + node.parentNode.insertBefore(match, after); + } + } + }; + + // remove highlighting + this.remove = function() + { + var arr = document.getElementsByTagName(hiliteTag); + var el; + while(arr.length && (el = arr[0])) { + el.parentNode.replaceChild(el.firstChild, el); + } + }; + + // start highlighting at target node + this.apply = function(input) + { + if(input == undefined || !input) return; + this.remove(); + this.setRegex(input); + this.hiliteWords(targetNode); + return matchingSlides; + }; + + } + + return { + + id: 'search', + + init: reveal => { + + deck = reveal; + deck.registerKeyboardShortcut( 'CTRL + Shift + F', 'Search' ); + + document.addEventListener( 'keydown', function( event ) { + if( event.key == "F" && (event.ctrlKey || event.metaKey) ) { //Control+Shift+f + event.preventDefault(); + toggleSearch(); + } + }, false ); + + }, + + open: openSearch + + } +}; + +export default Plugin; \ No newline at end of file diff --git a/docs/index_files/libs/revealjs/plugin/search/search.esm.js b/docs/index_files/libs/revealjs/plugin/search/search.esm.js new file mode 100644 index 0000000..b401a70 --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/search/search.esm.js @@ -0,0 +1,7 @@ +var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},t=function(e){try{return!!e()}catch(e){return!0}},n=!t((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),r=function(e){return e&&e.Math==Math&&e},o=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||function(){return this}()||Function("return this")(),i=t,c=/#|\.prototype\./,a=function(e,t){var n=l[u(e)];return n==s||n!=f&&("function"==typeof t?i(t):!!t)},u=a.normalize=function(e){return String(e).replace(c,".").toLowerCase()},l=a.data={},f=a.NATIVE="N",s=a.POLYFILL="P",p=a,g=function(e){return"object"==typeof e?null!==e:"function"==typeof e},d=g,h=function(e){if(!d(e))throw TypeError(String(e)+" is not an object");return e},y=g,v=h,x=function(e){if(!y(e)&&null!==e)throw TypeError("Can't set "+String(e)+" as a prototype");return e},b=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,n={};try{(e=Object.getOwnPropertyDescriptor(Object.prototype,"__proto__").set).call(n,[]),t=n instanceof Array}catch(e){}return function(n,r){return v(n),x(r),t?e.call(n,r):n.__proto__=r,n}}():void 0),E=g,m=b,S={},w=g,O=o.document,R=w(O)&&w(O.createElement),T=function(e){return R?O.createElement(e):{}},_=!n&&!t((function(){return 7!=Object.defineProperty(T("div"),"a",{get:function(){return 7}}).a})),j=g,P=function(e,t){if(!j(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!j(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!j(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!j(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")},I=n,C=_,N=h,A=P,k=Object.defineProperty;S.f=I?k:function(e,t,n){if(N(e),t=A(t,!0),N(n),C)try{return k(e,t,n)}catch(e){}if("get"in n||"set"in n)throw TypeError("Accessors not supported");return"value"in n&&(e[t]=n.value),e};var $={},L=function(e){if(null==e)throw TypeError("Can't call method on "+e);return e},M=L,U=function(e){return Object(M(e))},D=U,F={}.hasOwnProperty,z=function(e,t){return F.call(D(e),t)},K={}.toString,B=function(e){return K.call(e).slice(8,-1)},W=B,G="".split,V=t((function(){return!Object("z").propertyIsEnumerable(0)}))?function(e){return"String"==W(e)?G.call(e,""):Object(e)}:Object,Y=L,q=function(e){return V(Y(e))},X=Math.ceil,H=Math.floor,J=function(e){return isNaN(e=+e)?0:(e>0?H:X)(e)},Q=J,Z=Math.min,ee=function(e){return e>0?Z(Q(e),9007199254740991):0},te=J,ne=Math.max,re=Math.min,oe=q,ie=ee,ce=function(e,t){var n=te(e);return n<0?ne(n+t,0):re(n,t)},ae=function(e){return function(t,n,r){var o,i=oe(t),c=ie(i.length),a=ce(r,c);if(e&&n!=n){for(;c>a;)if((o=i[a++])!=o)return!0}else for(;c>a;a++)if((e||a in i)&&i[a]===n)return e||a||0;return!e&&-1}},ue={includes:ae(!0),indexOf:ae(!1)},le={},fe=z,se=q,pe=ue.indexOf,ge=le,de=function(e,t){var n,r=se(e),o=0,i=[];for(n in r)!fe(ge,n)&&fe(r,n)&&i.push(n);for(;t.length>o;)fe(r,n=t[o++])&&(~pe(i,n)||i.push(n));return i},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");$.f=Object.getOwnPropertyNames||function(e){return de(e,he)};var ye={exports:{}},ve=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},xe=S,be=ve,Ee=n?function(e,t,n){return xe.f(e,t,be(1,n))}:function(e,t,n){return e[t]=n,e},me=o,Se=Ee,we=function(e,t){try{Se(me,e,t)}catch(n){me[e]=t}return t},Oe=we,Re=o["__core-js_shared__"]||Oe("__core-js_shared__",{}),Te=Re;(ye.exports=function(e,t){return Te[e]||(Te[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var _e,je,Pe=0,Ie=Math.random(),Ce=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Pe+Ie).toString(36)},Ne=o,Ae=o,ke=function(e){return"function"==typeof e?e:void 0},$e=function(e,t){return arguments.length<2?ke(Ne[e])||ke(Ae[e]):Ne[e]&&Ne[e][t]||Ae[e]&&Ae[e][t]},Le=$e("navigator","userAgent")||"",Me=o.process,Ue=Me&&Me.versions,De=Ue&&Ue.v8;De?je=(_e=De.split("."))[0]<4?1:_e[0]+_e[1]:Le&&(!(_e=Le.match(/Edge\/(\d+)/))||_e[1]>=74)&&(_e=Le.match(/Chrome\/(\d+)/))&&(je=_e[1]);var Fe=je&&+je,ze=t,Ke=!!Object.getOwnPropertySymbols&&!ze((function(){return!String(Symbol())||!Symbol.sham&&Fe&&Fe<41})),Be=Ke&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,We=o,Ge=ye.exports,Ve=z,Ye=Ce,qe=Ke,Xe=Be,He=Ge("wks"),Je=We.Symbol,Qe=Xe?Je:Je&&Je.withoutSetter||Ye,Ze=function(e){return Ve(He,e)&&(qe||"string"==typeof He[e])||(qe&&Ve(Je,e)?He[e]=Je[e]:He[e]=Qe("Symbol."+e)),He[e]},et=g,tt=B,nt=Ze("match"),rt=h,ot=function(){var e=rt(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},it={},ct=t;function at(e,t){return RegExp(e,t)}it.UNSUPPORTED_Y=ct((function(){var e=at("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),it.BROKEN_CARET=ct((function(){var e=at("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var ut={exports:{}},lt=Re,ft=Function.toString;"function"!=typeof lt.inspectSource&&(lt.inspectSource=function(e){return ft.call(e)});var st,pt,gt,dt=lt.inspectSource,ht=dt,yt=o.WeakMap,vt="function"==typeof yt&&/native code/.test(ht(yt)),xt=ye.exports,bt=Ce,Et=xt("keys"),mt=vt,St=g,wt=Ee,Ot=z,Rt=Re,Tt=function(e){return Et[e]||(Et[e]=bt(e))},_t=le,jt=o.WeakMap;if(mt||Rt.state){var Pt=Rt.state||(Rt.state=new jt),It=Pt.get,Ct=Pt.has,Nt=Pt.set;st=function(e,t){if(Ct.call(Pt,e))throw new TypeError("Object already initialized");return t.facade=e,Nt.call(Pt,e,t),t},pt=function(e){return It.call(Pt,e)||{}},gt=function(e){return Ct.call(Pt,e)}}else{var At=Tt("state");_t[At]=!0,st=function(e,t){if(Ot(e,At))throw new TypeError("Object already initialized");return t.facade=e,wt(e,At,t),t},pt=function(e){return Ot(e,At)?e[At]:{}},gt=function(e){return Ot(e,At)}}var kt={set:st,get:pt,has:gt,enforce:function(e){return gt(e)?pt(e):st(e,{})},getterFor:function(e){return function(t){var n;if(!St(t)||(n=pt(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},$t=o,Lt=Ee,Mt=z,Ut=we,Dt=dt,Ft=kt.get,zt=kt.enforce,Kt=String(String).split("String");(ut.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||Mt(n,"name")||Lt(n,"name",t),(o=zt(n)).source||(o.source=Kt.join("string"==typeof t?t:""))),e!==$t?(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:Lt(e,t,n)):c?e[t]=n:Ut(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&Ft(this).source||Dt(this)}));var Bt=$e,Wt=S,Gt=n,Vt=Ze("species"),Yt=n,qt=o,Xt=p,Ht=function(e,t,n){var r,o;return m&&"function"==typeof(r=t.constructor)&&r!==n&&E(o=r.prototype)&&o!==n.prototype&&m(e,o),e},Jt=S.f,Qt=$.f,Zt=function(e){var t;return et(e)&&(void 0!==(t=e[nt])?!!t:"RegExp"==tt(e))},en=ot,tn=it,nn=ut.exports,rn=t,on=kt.enforce,cn=function(e){var t=Bt(e),n=Wt.f;Gt&&t&&!t[Vt]&&n(t,Vt,{configurable:!0,get:function(){return this}})},an=Ze("match"),un=qt.RegExp,ln=un.prototype,fn=/a/g,sn=/a/g,pn=new un(fn)!==fn,gn=tn.UNSUPPORTED_Y;if(Yt&&Xt("RegExp",!pn||gn||rn((function(){return sn[an]=!1,un(fn)!=fn||un(sn)==sn||"/a/i"!=un(fn,"i")})))){for(var dn=function(e,t){var n,r=this instanceof dn,o=Zt(e),i=void 0===t;if(!r&&o&&e.constructor===dn&&i)return e;pn?o&&!i&&(e=e.source):e instanceof dn&&(i&&(t=en.call(e)),e=e.source),gn&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=Ht(pn?new un(e,t):un(e,t),r?this:ln,dn);gn&&n&&(on(c).sticky=!0);return c},hn=function(e){e in dn||Jt(dn,e,{configurable:!0,get:function(){return un[e]},set:function(t){un[e]=t}})},yn=Qt(un),vn=0;yn.length>vn;)hn(yn[vn++]);ln.constructor=dn,dn.prototype=ln,nn(qt,"RegExp",dn)}cn("RegExp");var xn={},bn={},En={}.propertyIsEnumerable,mn=Object.getOwnPropertyDescriptor,Sn=mn&&!En.call({1:2},1);bn.f=Sn?function(e){var t=mn(this,e);return!!t&&t.enumerable}:En;var wn=n,On=bn,Rn=ve,Tn=q,_n=P,jn=z,Pn=_,In=Object.getOwnPropertyDescriptor;xn.f=wn?In:function(e,t){if(e=Tn(e),t=_n(t,!0),Pn)try{return In(e,t)}catch(e){}if(jn(e,t))return Rn(!On.f.call(e,t),e[t])};var Cn={};Cn.f=Object.getOwnPropertySymbols;var Nn=$,An=Cn,kn=h,$n=$e("Reflect","ownKeys")||function(e){var t=Nn.f(kn(e)),n=An.f;return n?t.concat(n(e)):t},Ln=z,Mn=$n,Un=xn,Dn=S,Fn=o,zn=xn.f,Kn=Ee,Bn=ut.exports,Wn=we,Gn=function(e,t){for(var n=Mn(t),r=Dn.f,o=Un.f,i=0;i0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(u="(?: "+u+")",f=" "+f,l++),n=new RegExp("^(?:"+u+")",a)),tr&&(n=new RegExp("^"+u+"$(?!\\s)",a)),Zn&&(t=i.lastIndex),r=Hn.call(c?n:i,f),c?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:Zn&&r&&(i.lastIndex=i.global?r.index+r[0].length:t),tr&&r&&r.length>1&&Jn.call(r[0],n,(function(){for(o=1;o")})),br="$0"==="a".replace(/./,"$0"),Er=dr("replace"),mr=!!/./[Er]&&""===/./[Er]("a","$0"),Sr=!gr((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),wr=J,Or=L,Rr=function(e){return function(t,n){var r,o,i=String(Or(t)),c=wr(n),a=i.length;return c<0||c>=a?e?"":void 0:(r=i.charCodeAt(c))<55296||r>56319||c+1===a||(o=i.charCodeAt(c+1))<56320||o>57343?e?i.charAt(c):r:e?i.slice(c,c+2):o-56320+(r-55296<<10)+65536}},Tr={codeAt:Rr(!1),charAt:Rr(!0)}.charAt,_r=U,jr=Math.floor,Pr="".replace,Ir=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,Cr=/\$([$&'`]|\d{1,2})/g,Nr=B,Ar=nr,kr=function(e,t,n,r){var o=dr(e),i=!gr((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),c=i&&!gr((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[yr]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return t=!0,null},n[o](""),!t}));if(!i||!c||"replace"===e&&(!xr||!br||mr)||"split"===e&&!Sr){var a=/./[o],u=n(o,""[e],(function(e,t,n,r,o){var c=t.exec;return c===pr||c===vr.exec?i&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:br,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:mr}),l=u[0],f=u[1];sr(String.prototype,e,l),sr(vr,o,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&hr(vr[o],"sham",!0)},$r=h,Lr=ee,Mr=J,Ur=L,Dr=function(e,t,n){return t+(n?Tr(e,t).length:1)},Fr=function(e,t,n,r,o,i){var c=n+e.length,a=r.length,u=Cr;return void 0!==o&&(o=_r(o),u=Ir),Pr.call(i,u,(function(i,u){var l;switch(u.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(c);case"<":l=o[u.slice(1,-1)];break;default:var f=+u;if(0===f)return i;if(f>a){var s=jr(f/10);return 0===s?i:s<=a?void 0===r[s-1]?u.charAt(1):r[s-1]+u.charAt(1):i}l=r[f-1]}return void 0===l?"":l}))},zr=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==Nr(e))throw TypeError("RegExp#exec called on incompatible receiver");return Ar.call(e,t)},Kr=Math.max,Br=Math.min;kr("replace",2,(function(e,t,n,r){var o=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=r.REPLACE_KEEPS_$0,c=o?"$":"$0";return[function(n,r){var o=Ur(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!o&&i||"string"==typeof r&&-1===r.indexOf(c)){var a=n(t,e,this,r);if(a.done)return a.value}var u=$r(e),l=String(this),f="function"==typeof r;f||(r=String(r));var s=u.global;if(s){var p=u.unicode;u.lastIndex=0}for(var g=[];;){var d=zr(u,l);if(null===d)break;if(g.push(d),!s)break;""===String(d[0])&&(u.lastIndex=Dr(l,Lr(u.lastIndex),p))}for(var h,y="",v=0,x=0;x=v&&(y+=l.slice(v,E)+R,v=E+b.length)}return y+l.slice(v)}]}));var Wr={};Wr[Ze("toStringTag")]="z";var Gr="[object z]"===String(Wr),Vr=Gr,Yr=B,qr=Ze("toStringTag"),Xr="Arguments"==Yr(function(){return arguments}()),Hr=Vr?Yr:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),qr))?n:Xr?Yr(t):"Object"==(r=Yr(t))&&"function"==typeof t.callee?"Arguments":r},Jr=Gr?{}.toString:function(){return"[object "+Hr(this)+"]"},Qr=Gr,Zr=ut.exports,eo=Jr;Qr||Zr(Object.prototype,"toString",eo,{unsafe:!0}) +/*! + * Handles finding a text string anywhere in the slides and showing the next occurrence to the user + * by navigatating to that slide and highlighting it. + * + * @author Jon Snyder , February 2013 + */;export default function(){var e,t,n,r,o,i,c;function a(){(t=document.createElement("div")).classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',(n=t.querySelector(".searchinput")).style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){switch(t.keyCode){case 13:t.preventDefault(),function(){if(i){var t=n.value;""===t?(c&&c.remove(),r=null):(c=new f("slidecontent"),r=c.apply(t),o=0)}r&&(r.length&&r.length<=o&&(o=0),r.length>o&&(e.slide(r[o].h,r[o].v),o++))}(),i=!1;break;default:i=!0}}),!1),l()}function u(){t||a(),t.style.display="inline",n.focus(),n.select()}function l(){t||a(),t.style.display="none",c&&c.remove()}function f(t,n){var r=document.getElementById(t)||document.body,o=n||"EM",i=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),c=["#ff6","#a0ffff","#9f9","#f99","#f6f"],a=[],u=0,l="",f=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),l=new RegExp("("+e+")","i")},this.getRegex=function(){return l.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&l&&!i.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n0?H:X)(e)},Q=J,Z=Math.min,ee=function(e){return e>0?Z(Q(e),9007199254740991):0},te=J,ne=Math.max,re=Math.min,oe=q,ie=ee,ce=function(e,t){var n=te(e);return n<0?ne(n+t,0):re(n,t)},ae=function(e){return function(t,n,r){var o,i=oe(t),c=ie(i.length),a=ce(r,c);if(e&&n!=n){for(;c>a;)if((o=i[a++])!=o)return!0}else for(;c>a;a++)if((e||a in i)&&i[a]===n)return e||a||0;return!e&&-1}},ue={includes:ae(!0),indexOf:ae(!1)},le={},fe=z,se=q,pe=ue.indexOf,de=le,ge=function(e,t){var n,r=se(e),o=0,i=[];for(n in r)!fe(de,n)&&fe(r,n)&&i.push(n);for(;t.length>o;)fe(r,n=t[o++])&&(~pe(i,n)||i.push(n));return i},he=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");$.f=Object.getOwnPropertyNames||function(e){return ge(e,he)};var ye={exports:{}},ve=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},xe=S,be=ve,me=n?function(e,t,n){return xe.f(e,t,be(1,n))}:function(e,t,n){return e[t]=n,e},Ee=o,Se=me,we=function(e,t){try{Se(Ee,e,t)}catch(n){Ee[e]=t}return t},Oe=we,Re="__core-js_shared__",Te=o[Re]||Oe(Re,{}),_e=Te;(ye.exports=function(e,t){return _e[e]||(_e[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.12.1",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var je,Pe,Ie=0,Ce=Math.random(),Ne=function(e){return"Symbol("+String(void 0===e?"":e)+")_"+(++Ie+Ce).toString(36)},Ae=o,ke=o,$e=function(e){return"function"==typeof e?e:void 0},Le=function(e,t){return arguments.length<2?$e(Ae[e])||$e(ke[e]):Ae[e]&&Ae[e][t]||ke[e]&&ke[e][t]},Me=Le("navigator","userAgent")||"",Ue=o.process,De=Ue&&Ue.versions,Fe=De&&De.v8;Fe?Pe=(je=Fe.split("."))[0]<4?1:je[0]+je[1]:Me&&(!(je=Me.match(/Edge\/(\d+)/))||je[1]>=74)&&(je=Me.match(/Chrome\/(\d+)/))&&(Pe=je[1]);var ze=Pe&&+Pe,Ke=t,Be=!!Object.getOwnPropertySymbols&&!Ke((function(){return!String(Symbol())||!Symbol.sham&&ze&&ze<41})),We=Be&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,Ge=o,Ve=ye.exports,Ye=z,qe=Ne,Xe=Be,He=We,Je=Ve("wks"),Qe=Ge.Symbol,Ze=He?Qe:Qe&&Qe.withoutSetter||qe,et=function(e){return Ye(Je,e)&&(Xe||"string"==typeof Je[e])||(Xe&&Ye(Qe,e)?Je[e]=Qe[e]:Je[e]=Ze("Symbol."+e)),Je[e]},tt=d,nt=B,rt=et("match"),ot=h,it=function(){var e=ot(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t},ct={},at=t;function ut(e,t){return RegExp(e,t)}ct.UNSUPPORTED_Y=at((function(){var e=ut("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),ct.BROKEN_CARET=at((function(){var e=ut("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));var lt={exports:{}},ft=Te,st=Function.toString;"function"!=typeof ft.inspectSource&&(ft.inspectSource=function(e){return st.call(e)});var pt,dt,gt,ht=ft.inspectSource,yt=ht,vt=o.WeakMap,xt="function"==typeof vt&&/native code/.test(yt(vt)),bt=ye.exports,mt=Ne,Et=bt("keys"),St=xt,wt=d,Ot=me,Rt=z,Tt=Te,_t=function(e){return Et[e]||(Et[e]=mt(e))},jt=le,Pt="Object already initialized",It=o.WeakMap;if(St||Tt.state){var Ct=Tt.state||(Tt.state=new It),Nt=Ct.get,At=Ct.has,kt=Ct.set;pt=function(e,t){if(At.call(Ct,e))throw new TypeError(Pt);return t.facade=e,kt.call(Ct,e,t),t},dt=function(e){return Nt.call(Ct,e)||{}},gt=function(e){return At.call(Ct,e)}}else{var $t=_t("state");jt[$t]=!0,pt=function(e,t){if(Rt(e,$t))throw new TypeError(Pt);return t.facade=e,Ot(e,$t,t),t},dt=function(e){return Rt(e,$t)?e[$t]:{}},gt=function(e){return Rt(e,$t)}}var Lt={set:pt,get:dt,has:gt,enforce:function(e){return gt(e)?dt(e):pt(e,{})},getterFor:function(e){return function(t){var n;if(!wt(t)||(n=dt(t)).type!==e)throw TypeError("Incompatible receiver, "+e+" required");return n}}},Mt=o,Ut=me,Dt=z,Ft=we,zt=ht,Kt=Lt.get,Bt=Lt.enforce,Wt=String(String).split("String");(lt.exports=function(e,t,n,r){var o,i=!!r&&!!r.unsafe,c=!!r&&!!r.enumerable,a=!!r&&!!r.noTargetGet;"function"==typeof n&&("string"!=typeof t||Dt(n,"name")||Ut(n,"name",t),(o=Bt(n)).source||(o.source=Wt.join("string"==typeof t?t:""))),e!==Mt?(i?!a&&e[t]&&(c=!0):delete e[t],c?e[t]=n:Ut(e,t,n)):c?e[t]=n:Ft(t,n)})(Function.prototype,"toString",(function(){return"function"==typeof this&&Kt(this).source||zt(this)}));var Gt=Le,Vt=S,Yt=n,qt=et("species"),Xt=n,Ht=o,Jt=p,Qt=function(e,t,n){var r,o;return E&&"function"==typeof(r=t.constructor)&&r!==n&&m(o=r.prototype)&&o!==n.prototype&&E(e,o),e},Zt=S.f,en=$.f,tn=function(e){var t;return tt(e)&&(void 0!==(t=e[rt])?!!t:"RegExp"==nt(e))},nn=it,rn=ct,on=lt.exports,cn=t,an=Lt.enforce,un=function(e){var t=Gt(e),n=Vt.f;Yt&&t&&!t[qt]&&n(t,qt,{configurable:!0,get:function(){return this}})},ln=et("match"),fn=Ht.RegExp,sn=fn.prototype,pn=/a/g,dn=/a/g,gn=new fn(pn)!==pn,hn=rn.UNSUPPORTED_Y;if(Xt&&Jt("RegExp",!gn||hn||cn((function(){return dn[ln]=!1,fn(pn)!=pn||fn(dn)==dn||"/a/i"!=fn(pn,"i")})))){for(var yn=function(e,t){var n,r=this instanceof yn,o=tn(e),i=void 0===t;if(!r&&o&&e.constructor===yn&&i)return e;gn?o&&!i&&(e=e.source):e instanceof yn&&(i&&(t=nn.call(e)),e=e.source),hn&&(n=!!t&&t.indexOf("y")>-1)&&(t=t.replace(/y/g,""));var c=Qt(gn?new fn(e,t):fn(e,t),r?this:sn,yn);hn&&n&&(an(c).sticky=!0);return c},vn=function(e){e in yn||Zt(yn,e,{configurable:!0,get:function(){return fn[e]},set:function(t){fn[e]=t}})},xn=en(fn),bn=0;xn.length>bn;)vn(xn[bn++]);sn.constructor=yn,yn.prototype=sn,on(Ht,"RegExp",yn)}un("RegExp");var mn={},En={},Sn={}.propertyIsEnumerable,wn=Object.getOwnPropertyDescriptor,On=wn&&!Sn.call({1:2},1);En.f=On?function(e){var t=wn(this,e);return!!t&&t.enumerable}:Sn;var Rn=n,Tn=En,_n=ve,jn=q,Pn=P,In=z,Cn=_,Nn=Object.getOwnPropertyDescriptor;mn.f=Rn?Nn:function(e,t){if(e=jn(e),t=Pn(t,!0),Cn)try{return Nn(e,t)}catch(e){}if(In(e,t))return _n(!Tn.f.call(e,t),e[t])};var An={};An.f=Object.getOwnPropertySymbols;var kn=$,$n=An,Ln=h,Mn=Le("Reflect","ownKeys")||function(e){var t=kn.f(Ln(e)),n=$n.f;return n?t.concat(n(e)):t},Un=z,Dn=Mn,Fn=mn,zn=S,Kn=o,Bn=mn.f,Wn=me,Gn=lt.exports,Vn=we,Yn=function(e,t){for(var n=Dn(t),r=zn.f,o=Fn.f,i=0;i0&&(!i.multiline||i.multiline&&"\n"!==e[i.lastIndex-1])&&(u="(?: "+u+")",f=" "+f,l++),n=new RegExp("^(?:"+u+")",a)),rr&&(n=new RegExp("^"+u+"$(?!\\s)",a)),tr&&(t=i.lastIndex),r=Qn.call(c?n:i,f),c?r?(r.input=r.input.slice(l),r[0]=r[0].slice(l),r.index=i.lastIndex,i.lastIndex+=r[0].length):i.lastIndex=0:tr&&r&&(i.lastIndex=i.global?r.index+r[0].length:t),rr&&r&&r.length>1&&Zn.call(r[0],n,(function(){for(o=1;o")})),Sr="$0"==="a".replace(/./,"$0"),wr=vr("replace"),Or=!!/./[wr]&&""===/./[wr]("a","$0"),Rr=!yr((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2!==n.length||"a"!==n[0]||"b"!==n[1]})),Tr=J,_r=L,jr=function(e){return function(t,n){var r,o,i=String(_r(t)),c=Tr(n),a=i.length;return c<0||c>=a?e?"":void 0:(r=i.charCodeAt(c))<55296||r>56319||c+1===a||(o=i.charCodeAt(c+1))<56320||o>57343?e?i.charAt(c):r:e?i.slice(c,c+2):o-56320+(r-55296<<10)+65536}},Pr={codeAt:jr(!1),charAt:jr(!0)}.charAt,Ir=U,Cr=Math.floor,Nr="".replace,Ar=/\$([$&'`]|\d{1,2}|<[^>]*>)/g,kr=/\$([$&'`]|\d{1,2})/g,$r=B,Lr=or,Mr=function(e,t,n,r){var o=vr(e),i=!yr((function(){var t={};return t[o]=function(){return 7},7!=""[e](t)})),c=i&&!yr((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[br]=function(){return n},n.flags="",n[o]=/./[o]),n.exec=function(){return t=!0,null},n[o](""),!t}));if(!i||!c||"replace"===e&&(!Er||!Sr||Or)||"split"===e&&!Rr){var a=/./[o],u=n(o,""[e],(function(e,t,n,r,o){var c=t.exec;return c===hr||c===mr.exec?i&&!o?{done:!0,value:a.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),{REPLACE_KEEPS_$0:Sr,REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE:Or}),l=u[0],f=u[1];gr(String.prototype,e,l),gr(mr,o,2==t?function(e,t){return f.call(e,this,t)}:function(e){return f.call(e,this)})}r&&xr(mr[o],"sham",!0)},Ur=h,Dr=ee,Fr=J,zr=L,Kr=function(e,t,n){return t+(n?Pr(e,t).length:1)},Br=function(e,t,n,r,o,i){var c=n+e.length,a=r.length,u=kr;return void 0!==o&&(o=Ir(o),u=Ar),Nr.call(i,u,(function(i,u){var l;switch(u.charAt(0)){case"$":return"$";case"&":return e;case"`":return t.slice(0,n);case"'":return t.slice(c);case"<":l=o[u.slice(1,-1)];break;default:var f=+u;if(0===f)return i;if(f>a){var s=Cr(f/10);return 0===s?i:s<=a?void 0===r[s-1]?u.charAt(1):r[s-1]+u.charAt(1):i}l=r[f-1]}return void 0===l?"":l}))},Wr=function(e,t){var n=e.exec;if("function"==typeof n){var r=n.call(e,t);if("object"!=typeof r)throw TypeError("RegExp exec method returned something other than an Object or null");return r}if("RegExp"!==$r(e))throw TypeError("RegExp#exec called on incompatible receiver");return Lr.call(e,t)},Gr=Math.max,Vr=Math.min;Mr("replace",2,(function(e,t,n,r){var o=r.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,i=r.REPLACE_KEEPS_$0,c=o?"$":"$0";return[function(n,r){var o=zr(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,o,r):t.call(String(o),n,r)},function(e,r){if(!o&&i||"string"==typeof r&&-1===r.indexOf(c)){var a=n(t,e,this,r);if(a.done)return a.value}var u=Ur(e),l=String(this),f="function"==typeof r;f||(r=String(r));var s=u.global;if(s){var p=u.unicode;u.lastIndex=0}for(var d=[];;){var g=Wr(u,l);if(null===g)break;if(d.push(g),!s)break;""===String(g[0])&&(u.lastIndex=Kr(l,Dr(u.lastIndex),p))}for(var h,y="",v=0,x=0;x=v&&(y+=l.slice(v,m)+R,v=m+b.length)}return y+l.slice(v)}]}));var Yr={};Yr[et("toStringTag")]="z";var qr="[object z]"===String(Yr),Xr=qr,Hr=B,Jr=et("toStringTag"),Qr="Arguments"==Hr(function(){return arguments}()),Zr=Xr?Hr:function(e){var t,n,r;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(n=function(e,t){try{return e[t]}catch(e){}}(t=Object(e),Jr))?n:Qr?Hr(t):"Object"==(r=Hr(t))&&"function"==typeof t.callee?"Arguments":r},eo=qr?{}.toString:function(){return"[object "+Zr(this)+"]"},to=qr,no=lt.exports,ro=eo;to||no(Object.prototype,"toString",ro,{unsafe:!0}) +/*! + * Handles finding a text string anywhere in the slides and showing the next occurrence to the user + * by navigatating to that slide and highlighting it. + * + * @author Jon Snyder , February 2013 + */;return function(){var e,t,n,r,o,i,c;function a(){(t=document.createElement("div")).classList.add("searchbox"),t.style.position="absolute",t.style.top="10px",t.style.right="10px",t.style.zIndex=10,t.innerHTML='\n\t\t',(n=t.querySelector(".searchinput")).style.width="240px",n.style.fontSize="14px",n.style.padding="4px 6px",n.style.color="#000",n.style.background="#fff",n.style.borderRadius="2px",n.style.border="0",n.style.outline="0",n.style.boxShadow="0 2px 18px rgba(0, 0, 0, 0.2)",n.style["-webkit-appearance"]="none",e.getRevealElement().appendChild(t),n.addEventListener("keyup",(function(t){switch(t.keyCode){case 13:t.preventDefault(),function(){if(i){var t=n.value;""===t?(c&&c.remove(),r=null):(c=new f("slidecontent"),r=c.apply(t),o=0)}r&&(r.length&&r.length<=o&&(o=0),r.length>o&&(e.slide(r[o].h,r[o].v),o++))}(),i=!1;break;default:i=!0}}),!1),l()}function u(){t||a(),t.style.display="inline",n.focus(),n.select()}function l(){t||a(),t.style.display="none",c&&c.remove()}function f(t,n){var r=document.getElementById(t)||document.body,o=n||"EM",i=new RegExp("^(?:"+o+"|SCRIPT|FORM)$"),c=["#ff6","#a0ffff","#9f9","#f99","#f6f"],a=[],u=0,l="",f=[];this.setRegex=function(e){e=e.replace(/^[^\w]+|[^\w]+$/g,"").replace(/[^\w'-]+/g,"|"),l=new RegExp("("+e+")","i")},this.getRegex=function(){return l.toString().replace(/^\/\\b\(|\)\\b\/i$/g,"").replace(/\|/g," ")},this.hiliteWords=function(t){if(null!=t&&t&&l&&!i.test(t.nodeName)){if(t.hasChildNodes())for(var n=0;n { + + zoom.reset(); + + } + +}; + +export default () => Plugin; + +/*! + * zoom.js 0.3 (modified for use with reveal.js) + * http://lab.hakim.se/zoom-js + * MIT licensed + * + * Copyright (C) 2011-2014 Hakim El Hattab, http://hakim.se + */ +var zoom = (function(){ + + // The current zoom level (scale) + var level = 1; + + // The current mouse position, used for panning + var mouseX = 0, + mouseY = 0; + + // Timeout before pan is activated + var panEngageTimeout = -1, + panUpdateInterval = -1; + + // Check for transform support so that we can fallback otherwise + var supportsTransforms = 'transform' in document.body.style; + + if( supportsTransforms ) { + // The easing that will be applied when we zoom in/out + document.body.style.transition = 'transform 0.8s ease'; + } + + // Zoom out if the user hits escape + document.addEventListener( 'keyup', function( event ) { + if( level !== 1 && event.keyCode === 27 ) { + zoom.out(); + } + } ); + + // Monitor mouse movement for panning + document.addEventListener( 'mousemove', function( event ) { + if( level !== 1 ) { + mouseX = event.clientX; + mouseY = event.clientY; + } + } ); + + /** + * Applies the CSS required to zoom in, prefers the use of CSS3 + * transforms but falls back on zoom for IE. + * + * @param {Object} rect + * @param {Number} scale + */ + function magnify( rect, scale ) { + + var scrollOffset = getScrollOffset(); + + // Ensure a width/height is set + rect.width = rect.width || 1; + rect.height = rect.height || 1; + + // Center the rect within the zoomed viewport + rect.x -= ( window.innerWidth - ( rect.width * scale ) ) / 2; + rect.y -= ( window.innerHeight - ( rect.height * scale ) ) / 2; + + if( supportsTransforms ) { + // Reset + if( scale === 1 ) { + document.body.style.transform = ''; + } + // Scale + else { + var origin = scrollOffset.x +'px '+ scrollOffset.y +'px', + transform = 'translate('+ -rect.x +'px,'+ -rect.y +'px) scale('+ scale +')'; + + document.body.style.transformOrigin = origin; + document.body.style.transform = transform; + } + } + else { + // Reset + if( scale === 1 ) { + document.body.style.position = ''; + document.body.style.left = ''; + document.body.style.top = ''; + document.body.style.width = ''; + document.body.style.height = ''; + document.body.style.zoom = ''; + } + // Scale + else { + document.body.style.position = 'relative'; + document.body.style.left = ( - ( scrollOffset.x + rect.x ) / scale ) + 'px'; + document.body.style.top = ( - ( scrollOffset.y + rect.y ) / scale ) + 'px'; + document.body.style.width = ( scale * 100 ) + '%'; + document.body.style.height = ( scale * 100 ) + '%'; + document.body.style.zoom = scale; + } + } + + level = scale; + + if( document.documentElement.classList ) { + if( level !== 1 ) { + document.documentElement.classList.add( 'zoomed' ); + } + else { + document.documentElement.classList.remove( 'zoomed' ); + } + } + } + + /** + * Pan the document when the mosue cursor approaches the edges + * of the window. + */ + function pan() { + var range = 0.12, + rangeX = window.innerWidth * range, + rangeY = window.innerHeight * range, + scrollOffset = getScrollOffset(); + + // Up + if( mouseY < rangeY ) { + window.scroll( scrollOffset.x, scrollOffset.y - ( 1 - ( mouseY / rangeY ) ) * ( 14 / level ) ); + } + // Down + else if( mouseY > window.innerHeight - rangeY ) { + window.scroll( scrollOffset.x, scrollOffset.y + ( 1 - ( window.innerHeight - mouseY ) / rangeY ) * ( 14 / level ) ); + } + + // Left + if( mouseX < rangeX ) { + window.scroll( scrollOffset.x - ( 1 - ( mouseX / rangeX ) ) * ( 14 / level ), scrollOffset.y ); + } + // Right + else if( mouseX > window.innerWidth - rangeX ) { + window.scroll( scrollOffset.x + ( 1 - ( window.innerWidth - mouseX ) / rangeX ) * ( 14 / level ), scrollOffset.y ); + } + } + + function getScrollOffset() { + return { + x: window.scrollX !== undefined ? window.scrollX : window.pageXOffset, + y: window.scrollY !== undefined ? window.scrollY : window.pageYOffset + } + } + + return { + /** + * Zooms in on either a rectangle or HTML element. + * + * @param {Object} options + * - element: HTML element to zoom in on + * OR + * - x/y: coordinates in non-transformed space to zoom in on + * - width/height: the portion of the screen to zoom in on + * - scale: can be used instead of width/height to explicitly set scale + */ + to: function( options ) { + + // Due to an implementation limitation we can't zoom in + // to another element without zooming out first + if( level !== 1 ) { + zoom.out(); + } + else { + options.x = options.x || 0; + options.y = options.y || 0; + + // If an element is set, that takes precedence + if( !!options.element ) { + // Space around the zoomed in element to leave on screen + var padding = 20; + var bounds = options.element.getBoundingClientRect(); + + options.x = bounds.left - padding; + options.y = bounds.top - padding; + options.width = bounds.width + ( padding * 2 ); + options.height = bounds.height + ( padding * 2 ); + } + + // If width/height values are set, calculate scale from those values + if( options.width !== undefined && options.height !== undefined ) { + options.scale = Math.max( Math.min( window.innerWidth / options.width, window.innerHeight / options.height ), 1 ); + } + + if( options.scale > 1 ) { + options.x *= options.scale; + options.y *= options.scale; + + magnify( options, options.scale ); + + if( options.pan !== false ) { + + // Wait with engaging panning as it may conflict with the + // zoom transition + panEngageTimeout = setTimeout( function() { + panUpdateInterval = setInterval( pan, 1000 / 60 ); + }, 800 ); + + } + } + } + }, + + /** + * Resets the document zoom state to its default. + */ + out: function() { + clearTimeout( panEngageTimeout ); + clearInterval( panUpdateInterval ); + + magnify( { x: 0, y: 0 }, 1 ); + + level = 1; + }, + + // Alias + magnify: function( options ) { this.to( options ) }, + reset: function() { this.out() }, + + zoomLevel: function() { + return level; + } + } + +})(); diff --git a/docs/index_files/libs/revealjs/plugin/zoom/zoom.esm.js b/docs/index_files/libs/revealjs/plugin/zoom/zoom.esm.js new file mode 100644 index 0000000..c0e8d7b --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/zoom/zoom.esm.js @@ -0,0 +1,4 @@ +/*! + * reveal.js Zoom plugin + */ +var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(n){var o=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:o)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;n[i]&&!e.isOverview()&&(n.preventDefault(),t.to({x:n.clientX,y:n.clientY,scale:d,pan:!1}))}))},destroy:function(){t.reset()}},t=function(){var e=1,n=0,o=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,n){var o=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*n)/2,t.y-=(window.innerHeight-t.height*n)/2,l)if(1===n)document.body.style.transform="";else{var i=o.x+"px "+o.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+n+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===n?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(o.x+t.x)/n+"px",document.body.style.top=-(o.y+t.y)/n+"px",document.body.style.width=100*n+"%",document.body.style.height=100*n+"%",document.body.style.zoom=n);e=n,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();owindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-o)/i)*(14/e)),nwindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-n)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(n){1!==e&&27===n.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(n=t.clientX,o=t.clientY)})),{to:function(n){if(1!==e)t.out();else{if(n.x=n.x||0,n.y=n.y||0,n.element){var o=n.element.getBoundingClientRect();n.x=o.left-20,n.y=o.top-20,n.width=o.width+40,n.height=o.height+40}void 0!==n.width&&void 0!==n.height&&(n.scale=Math.max(Math.min(window.innerWidth/n.width,window.innerHeight/n.height),1)),n.scale>1&&(n.x*=n.scale,n.y*=n.scale,s(n,n.scale),!1!==n.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();export default function(){return e} diff --git a/docs/index_files/libs/revealjs/plugin/zoom/zoom.js b/docs/index_files/libs/revealjs/plugin/zoom/zoom.js new file mode 100644 index 0000000..b52804d --- /dev/null +++ b/docs/index_files/libs/revealjs/plugin/zoom/zoom.js @@ -0,0 +1,4 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).RevealZoom=t()}(this,(function(){"use strict"; +/*! + * reveal.js Zoom plugin + */var e={id:"zoom",init:function(e){e.getRevealElement().addEventListener("mousedown",(function(o){var n=/Linux/.test(window.navigator.platform)?"ctrl":"alt",i=(e.getConfig().zoomKey?e.getConfig().zoomKey:n)+"Key",d=e.getConfig().zoomLevel?e.getConfig().zoomLevel:2;o[i]&&!e.isOverview()&&(o.preventDefault(),t.to({x:o.clientX,y:o.clientY,scale:d,pan:!1}))}))},destroy:function(){t.reset()}},t=function(){var e=1,o=0,n=0,i=-1,d=-1,l="transform"in document.body.style;function s(t,o){var n=r();if(t.width=t.width||1,t.height=t.height||1,t.x-=(window.innerWidth-t.width*o)/2,t.y-=(window.innerHeight-t.height*o)/2,l)if(1===o)document.body.style.transform="";else{var i=n.x+"px "+n.y+"px",d="translate("+-t.x+"px,"+-t.y+"px) scale("+o+")";document.body.style.transformOrigin=i,document.body.style.transform=d}else 1===o?(document.body.style.position="",document.body.style.left="",document.body.style.top="",document.body.style.width="",document.body.style.height="",document.body.style.zoom=""):(document.body.style.position="relative",document.body.style.left=-(n.x+t.x)/o+"px",document.body.style.top=-(n.y+t.y)/o+"px",document.body.style.width=100*o+"%",document.body.style.height=100*o+"%",document.body.style.zoom=o);e=o,document.documentElement.classList&&(1!==e?document.documentElement.classList.add("zoomed"):document.documentElement.classList.remove("zoomed"))}function c(){var t=.12*window.innerWidth,i=.12*window.innerHeight,d=r();nwindow.innerHeight-i&&window.scroll(d.x,d.y+(1-(window.innerHeight-n)/i)*(14/e)),owindow.innerWidth-t&&window.scroll(d.x+(1-(window.innerWidth-o)/t)*(14/e),d.y)}function r(){return{x:void 0!==window.scrollX?window.scrollX:window.pageXOffset,y:void 0!==window.scrollY?window.scrollY:window.pageYOffset}}return l&&(document.body.style.transition="transform 0.8s ease"),document.addEventListener("keyup",(function(o){1!==e&&27===o.keyCode&&t.out()})),document.addEventListener("mousemove",(function(t){1!==e&&(o=t.clientX,n=t.clientY)})),{to:function(o){if(1!==e)t.out();else{if(o.x=o.x||0,o.y=o.y||0,o.element){var n=o.element.getBoundingClientRect();o.x=n.left-20,o.y=n.top-20,o.width=n.width+40,o.height=n.height+40}void 0!==o.width&&void 0!==o.height&&(o.scale=Math.max(Math.min(window.innerWidth/o.width,window.innerHeight/o.height),1)),o.scale>1&&(o.x*=o.scale,o.y*=o.scale,s(o,o.scale),!1!==o.pan&&(i=setTimeout((function(){d=setInterval(c,1e3/60)}),800)))}},out:function(){clearTimeout(i),clearInterval(d),s({x:0,y:0},1),e=1},magnify:function(e){this.to(e)},reset:function(){this.out()},zoomLevel:function(){return e}}}();return function(){return e}}));