From 6f373f7ea90c8c3e271c24dbbaa2058814302917 Mon Sep 17 00:00:00 2001 From: Jack Bond-Preston Date: Fri, 6 Jan 2023 03:02:54 +0000 Subject: [PATCH] jekyll -> zola --- .github/workflows/build-jekyll.yml | 33 -- .github/workflows/main.yml | 38 -- .gitignore | 10 +- .gitmodules | 3 + CNAME | 1 - Gemfile | 8 - Gemfile.lock | 87 ---- README.md | 1 - _config.yml | 13 - _layouts/default.html | 26 - _layouts/post-sensor-watch.html | 212 --------- _layouts/post.html | 13 - _plugins/header.rb | 6 - _sass/main.scss | 144 ------ assets/css/main.scss | 4 - assets/css/pygments.css | 447 ------------------ {_posts/cheri/code => code/cheri}/Makefile | 0 code/cheri/membug | Bin 0 -> 17408 bytes .../cheri/code => code/cheri}/membug-cheri.S | 0 code/cheri/membug-cheribsd | Bin 0 -> 20176 bytes {_posts/cheri/code => code/cheri}/membug.c | 0 code/cheri/ptrs_as_numbers | Bin 0 -> 17520 bytes code/cheri/ptrs_as_numbers-cheribsd | Bin 0 -> 20584 bytes .../code => code/cheri}/ptrs_as_numbers.c | 0 code/cheri/ptrtypes | Bin 0 -> 17152 bytes code/cheri/ptrtypes-cheribsd | Bin 0 -> 21832 bytes {_posts/cheri/code => code/cheri}/ptrtypes.c | 0 code/cheri/sizes | Bin 0 -> 17128 bytes code/cheri/sizes-cheribsd | Bin 0 -> 19040 bytes {_posts/cheri/code => code/cheri}/sizes.c | 0 config.toml | 14 + index.md => content/_index.md | 16 +- .../2022-11-19-cheri.md => content/cheri.md | 76 ++- .../sensor-watch.md | 24 +- cv.pdf | Bin 83108 -> 0 bytes cv/main.tex | 55 --- cv/sections/awards.tex | 20 - cv/sections/education.tex | 14 - cv/sections/experience.tex | 45 -- cv/sections/extracurricular.tex | 22 - cv/sections/languages.tex | 7 - cv/sections/projects.tex | 28 -- cv/sections/publications.tex | 9 - cv/sections/skills.tex | 11 - cv/sections/teaching.tex | 12 - cv/simplecv.sty | 149 ------ sass/style/_colours.scss | 5 + sass/style/article.scss | 79 ++++ sass/style/main.scss | 93 ++++ sass/style/sensor-watch.scss | 60 +++ ...urce-code-pro-v22-latin-ext_latin-700.woff | Bin ...rce-code-pro-v22-latin-ext_latin-700.woff2 | Bin ...ode-pro-v22-latin-ext_latin-700italic.woff | Bin ...de-pro-v22-latin-ext_latin-700italic.woff2 | Bin ...e-code-pro-v22-latin-ext_latin-italic.woff | Bin ...-code-pro-v22-latin-ext_latin-italic.woff2 | Bin ...-code-pro-v22-latin-ext_latin-regular.woff | Bin ...code-pro-v22-latin-ext_latin-regular.woff2 | Bin {assets => static}/images/link.svg | 0 .../images}/sensor-watch/c7c8.jpg | Bin .../images/sensor-watch/f91w-strap.svg | 0 .../images/sensor-watch/f91w.svg | 0 .../images}/sensor-watch/pcb.jpg | Bin .../images}/sensor-watch/watch1.jpg | Bin .../images}/sensor-watch/watch2.jpg | Bin .../images}/sensor-watch/wrist.jpg | Bin syntaxes/console | 1 + templates/anchor-link.html | 1 + templates/article-sw.html | 137 ++++++ templates/article.html | 17 + templates/base.html | 26 + templates/index.html | 13 + templates/shortcodes/code.md | 4 + templates/shortcodes/image.html | 5 + 74 files changed, 516 insertions(+), 1473 deletions(-) delete mode 100644 .github/workflows/build-jekyll.yml delete mode 100644 .github/workflows/main.yml create mode 100644 .gitmodules delete mode 100644 CNAME delete mode 100644 Gemfile delete mode 100644 Gemfile.lock delete mode 100644 README.md delete mode 100644 _config.yml delete mode 100644 _layouts/default.html delete mode 100644 _layouts/post-sensor-watch.html delete mode 100644 _layouts/post.html delete mode 100644 _plugins/header.rb delete mode 100644 _sass/main.scss delete mode 100644 assets/css/main.scss delete mode 100644 assets/css/pygments.css rename {_posts/cheri/code => code/cheri}/Makefile (100%) create mode 100755 code/cheri/membug rename {_posts/cheri/code => code/cheri}/membug-cheri.S (100%) create mode 100755 code/cheri/membug-cheribsd rename {_posts/cheri/code => code/cheri}/membug.c (100%) create mode 100755 code/cheri/ptrs_as_numbers create mode 100755 code/cheri/ptrs_as_numbers-cheribsd rename {_posts/cheri/code => code/cheri}/ptrs_as_numbers.c (100%) create mode 100755 code/cheri/ptrtypes create mode 100755 code/cheri/ptrtypes-cheribsd rename {_posts/cheri/code => code/cheri}/ptrtypes.c (100%) create mode 100755 code/cheri/sizes create mode 100755 code/cheri/sizes-cheribsd rename {_posts/cheri/code => code/cheri}/sizes.c (100%) create mode 100644 config.toml rename index.md => content/_index.md (83%) rename _posts/cheri/2022-11-19-cheri.md => content/cheri.md (96%) rename _posts/sensor_watch/2022-11-14-sensor-watch.md => content/sensor-watch.md (95%) delete mode 100644 cv.pdf delete mode 100644 cv/main.tex delete mode 100644 cv/sections/awards.tex delete mode 100644 cv/sections/education.tex delete mode 100644 cv/sections/experience.tex delete mode 100644 cv/sections/extracurricular.tex delete mode 100644 cv/sections/languages.tex delete mode 100644 cv/sections/projects.tex delete mode 100644 cv/sections/publications.tex delete mode 100644 cv/sections/skills.tex delete mode 100644 cv/sections/teaching.tex delete mode 100644 cv/simplecv.sty create mode 100644 sass/style/_colours.scss create mode 100644 sass/style/article.scss create mode 100644 sass/style/main.scss create mode 100644 sass/style/sensor-watch.scss rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-700.woff (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-700.woff2 (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2 (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-italic.woff (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-italic.woff2 (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-regular.woff (100%) rename {assets => static}/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 (100%) rename {assets => static}/images/link.svg (100%) rename {pictures => static/images}/sensor-watch/c7c8.jpg (100%) rename {assets => static}/images/sensor-watch/f91w-strap.svg (100%) rename {assets => static}/images/sensor-watch/f91w.svg (100%) rename {pictures => static/images}/sensor-watch/pcb.jpg (100%) rename {pictures => static/images}/sensor-watch/watch1.jpg (100%) rename {pictures => static/images}/sensor-watch/watch2.jpg (100%) rename {pictures => static/images}/sensor-watch/wrist.jpg (100%) create mode 160000 syntaxes/console create mode 100644 templates/anchor-link.html create mode 100644 templates/article-sw.html create mode 100644 templates/article.html create mode 100644 templates/base.html create mode 100644 templates/index.html create mode 100644 templates/shortcodes/code.md create mode 100644 templates/shortcodes/image.html diff --git a/.github/workflows/build-jekyll.yml b/.github/workflows/build-jekyll.yml deleted file mode 100644 index 83887f1..0000000 --- a/.github/workflows/build-jekyll.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: build and deploy jekyll - -on: - push: - branches: - - master - -jobs: - build_and_deploy: - runs-on: ubuntu-latest - steps: - - name: checkout - uses: actions/checkout@v3 - - - name: rubygems cache - uses: actions/cache@v3 - with: - path: vendor/bundle - key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }} - restore-keys: | - ${{ runner.os }}-gems- - - - name: jekyll deploy - uses: "jeffreytse/jekyll-deploy-action@v0.4.0" - with: - provider: "github" - token: ${{ secrets.GITHUB_TOKEN }} - branch: "gh-pages" - jekyll_src: "./" - jekyll_cfg: "_config.yml" - cname: "jackbondpreston.me" - actor: "jackbondpreston" - pre_build_commands: "pacman -S --noconfirm libvips lcms2 openjpeg2 libpng libwebp libheif imagemagick openslide libjxl poppler-glib" diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml deleted file mode 100644 index 0600ba0..0000000 --- a/.github/workflows/main.yml +++ /dev/null @@ -1,38 +0,0 @@ -# This is a basic workflow to help you get started with Actions - -name: cv-build - -# Controls when the workflow will run -on: - # Triggers the workflow on push or pull request events but only for the "master" branch - push: - branches: [ "master" ] - paths: cv/** - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - runs-on: ubuntu-latest - steps: - - name: Set up Git repository - uses: actions/checkout@v2 - - name: Compile LaTeX document - uses: xu-cheng/latex-action@v2 - with: - working_directory: cv - root_file: main.tex - - name: Move built .pdf - run: | - mv cv/main.pdf ./cv.pdf - - name: Commit built .pdf - uses: EndBug/add-and-commit@v9 - with: - add: 'cv.pdf' - author_name: 'Jack Bond-Preston' - author_email: 'jackbondpreston@outlook.com' - message: '[github action] update cv.pdf' - diff --git a/.gitignore b/.gitignore index d0bf2c5..2000f5d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,2 @@ -.jekyll-cache -_site/ - -# binaries -/**/code/* -!/**/code/*/ -!/**/code/*.* -!/**/code/Makefile \ No newline at end of file +public/ +static/processed_images/ \ No newline at end of file diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..a1932b9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "syntaxes/console"] + path = syntaxes/console + url = https://github.com/haraldh/Sublime-console.git diff --git a/CNAME b/CNAME deleted file mode 100644 index 27ccf4f..0000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -jackbondpreston.me \ No newline at end of file diff --git a/Gemfile b/Gemfile deleted file mode 100644 index d397986..0000000 --- a/Gemfile +++ /dev/null @@ -1,8 +0,0 @@ -source "https://rubygems.org" - -gem 'jekyll', '~> 4.0' - -group :jekyll_plugins do - gem 'jekyll_picture_tag', '~> 2.0' - gem 'jekyll-feed' -end \ No newline at end of file diff --git a/Gemfile.lock b/Gemfile.lock deleted file mode 100644 index 891f195..0000000 --- a/Gemfile.lock +++ /dev/null @@ -1,87 +0,0 @@ -GEM - remote: https://rubygems.org/ - specs: - addressable (2.8.1) - public_suffix (>= 2.0.2, < 6.0) - colorator (1.1.0) - concurrent-ruby (1.1.10) - em-websocket (0.5.3) - eventmachine (>= 0.12.9) - http_parser.rb (~> 0) - eventmachine (1.2.7) - ffi (1.15.5) - forwardable-extended (2.6.0) - http_parser.rb (0.8.0) - i18n (1.12.0) - concurrent-ruby (~> 1.0) - jekyll (4.3.1) - addressable (~> 2.4) - colorator (~> 1.0) - em-websocket (~> 0.5) - i18n (~> 1.0) - jekyll-sass-converter (>= 2.0, < 4.0) - jekyll-watch (~> 2.0) - kramdown (~> 2.3, >= 2.3.1) - kramdown-parser-gfm (~> 1.0) - liquid (~> 4.0) - mercenary (>= 0.3.6, < 0.5) - pathutil (~> 0.9) - rouge (>= 3.0, < 5.0) - safe_yaml (~> 1.0) - terminal-table (>= 1.8, < 4.0) - webrick (~> 1.7) - jekyll-feed (0.17.0) - jekyll (>= 3.7, < 5.0) - jekyll-sass-converter (2.2.0) - sassc (> 2.0.1, < 3.0) - jekyll-watch (2.2.1) - listen (~> 3.0) - jekyll_picture_tag (2.0.4) - addressable (~> 2.6) - jekyll (~> 4.0) - mime-types (~> 3.0) - objective_elements (~> 1.1) - rainbow (~> 3.0) - ruby-vips (~> 2.0.17) - kramdown (2.4.0) - rexml - kramdown-parser-gfm (1.1.0) - kramdown (~> 2.0) - liquid (4.0.3) - listen (3.7.1) - rb-fsevent (~> 0.10, >= 0.10.3) - rb-inotify (~> 0.9, >= 0.9.10) - mercenary (0.4.0) - mime-types (3.4.1) - mime-types-data (~> 3.2015) - mime-types-data (3.2022.0105) - objective_elements (1.1.2) - pathutil (0.16.2) - forwardable-extended (~> 2.6) - public_suffix (5.0.0) - rainbow (3.1.1) - rb-fsevent (0.11.2) - rb-inotify (0.10.1) - ffi (~> 1.0) - rexml (3.2.5) - rouge (4.0.0) - ruby-vips (2.0.17) - ffi (~> 1.9) - safe_yaml (1.0.5) - sassc (2.4.0) - ffi (~> 1.9) - terminal-table (3.0.2) - unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.3.0) - webrick (1.7.0) - -PLATFORMS - x86_64-linux - -DEPENDENCIES - jekyll (~> 4.0) - jekyll-feed - jekyll_picture_tag (~> 2.0) - -BUNDLED WITH - 2.3.26 diff --git a/README.md b/README.md deleted file mode 100644 index 5047eb6..0000000 --- a/README.md +++ /dev/null @@ -1 +0,0 @@ -# website \ No newline at end of file diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 024b9b8..0000000 --- a/_config.yml +++ /dev/null @@ -1,13 +0,0 @@ -url: "https://jackbondpreston.me" # the base hostname & protocol for your site, e.g. http://example.com -baseurl: "" # the subpath of your site, e.g. /blog -title: "jack bond-preston" # the name of your site, e.g. ACME Corp. - -show_dir_listing: true - -safe: false - -plugins: - - jekyll-feed - -picture: - source: "pictures/" \ No newline at end of file diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 34c9b22..0000000 --- a/_layouts/default.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - - {{ page.title }} - {{ site.title }} - - - - - - {{ content }} - - - \ No newline at end of file diff --git a/_layouts/post-sensor-watch.html b/_layouts/post-sensor-watch.html deleted file mode 100644 index 6f1ab5a..0000000 --- a/_layouts/post-sensor-watch.html +++ /dev/null @@ -1,212 +0,0 @@ - - - - - - - - - - {{ page.title }} - {{ site.title }} - - - - - -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-

{{ page.title }}[ homepage ]

- - {{ content }} - -
- -

email me to have a conversation

-
-
- \ No newline at end of file diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index faa8632..0000000 --- a/_layouts/post.html +++ /dev/null @@ -1,13 +0,0 @@ ---- -layout: default ---- - -
-

{{ page.title }}[ homepage ]

- - {{ content }} - -
- -

email me to have a conversation

-
\ No newline at end of file diff --git a/_plugins/header.rb b/_plugins/header.rb deleted file mode 100644 index b5bfe90..0000000 --- a/_plugins/header.rb +++ /dev/null @@ -1,6 +0,0 @@ -# https://stackoverflow.com/a/53893197/ -class Jekyll::MarkdownHeader < Jekyll::Converters::Markdown - def convert(content) - super.gsub(/(.*)<\/h(\d)>/, '\3[]') - end - end diff --git a/_sass/main.scss b/_sass/main.scss deleted file mode 100644 index b105867..0000000 --- a/_sass/main.scss +++ /dev/null @@ -1,144 +0,0 @@ -$background-color: rgb(12, 17, 20); -$body-color: rgb(252, 252, 252); -$heading-color: rgb(255, 182, 193); -$link-color: rgb(252, 169, 184); -$inl-code-color: rgb(165, 214, 255); - -@font-face { - font-family: 'Source Code Pro'; - font-style: normal; - font-weight: 400; - src: local(''), - url('../fonts/source-code-pro-v22-latin-ext_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/source-code-pro-v22-latin-ext_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -@font-face { - font-family: 'Source Code Pro'; - font-style: normal; - font-weight: 700; - src: local(''), - url('../fonts/source-code-pro-v22-latin-ext_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/source-code-pro-v22-latin-ext_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -@font-face { - font-family: 'Source Code Pro'; - font-style: italic; - font-weight: 400; - src: local(''), - url('../fonts/source-code-pro-v22-latin-ext_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/source-code-pro-v22-latin-ext_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -@font-face { - font-family: 'Source Code Pro'; - font-style: italic; - font-weight: 700; - src: local(''), - url('../fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+, Firefox 39+ */ - url('../fonts/source-code-pro-v22-latin-ext_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -body { - background-color: $background-color; - color: $body-color; - padding-left: 5vw; - padding-right: 5vw; - padding-top: 5vh; - font-family: 'Source Code Pro'; - font-size: 1.5rem; - - @media screen and (max-width: 600px) { - font-size: 1rem; - } -} - -h1 { - color: $heading-color; - margin: 0; -} - -h2 { - margin: 0; - margin-top: 3rem; - margin-bottom: 0.5rem; -} - -a { - color: $link-color; - font-weight: bold; - text-decoration: none; -} - -li { - line-height: 150%; -} - -.article { - p, li { - a { - font-weight: normal; - text-decoration: underline; - word-wrap: break-word; - } - - code { - color: #a5d6ff; - } - } - - picture img, p img { - max-width: 100%; - display: block; - } - - code, pre { - font-family: 'Source Code Pro'; - margin: 0; - padding: 0; - } - - .header-link { - display: inline-block; - } - - h1 { - display: flex; - justify-content: space-between; - - @media screen and (max-width: 450px) { - display: block; - - .home-link { - display: block; - } - } - - .home-link { - font-size: 0.5em; - color: $body-color; - } - } -} - -table { - border-spacing: 0; -} - -h2 { - a.header-link { - display: none; - - img { - height: 1.25rem; - margin-bottom: -4px; - } - } - - a.header-link, a.atom-link { - padding-left: 10px; - font-weight: normal; - font-size: 1.3rem; - } -} \ No newline at end of file diff --git a/assets/css/main.scss b/assets/css/main.scss deleted file mode 100644 index 9f41894..0000000 --- a/assets/css/main.scss +++ /dev/null @@ -1,4 +0,0 @@ ---- ---- - -@import "main"; diff --git a/assets/css/pygments.css b/assets/css/pygments.css deleted file mode 100644 index edd3089..0000000 --- a/assets/css/pygments.css +++ /dev/null @@ -1,447 +0,0 @@ -pre { - font-size: 1.25rem; - margin-top: 0; - vertical-align: top; -} - -figure.highlight { - margin: 0; - margin-left: 1.5rem; - display: block; - overflow-x: auto; -} - -@media screen and (max-width: 600px) { - pre { - font-size: 0.8rem; - } -} - -td.gutter { - padding-right: 10px; - border-right: 3px solid rgb(252, 169, 184); - border-radius: 3px; -} - -td.code { - padding-left: 15px; -} - -body .hll { - background-color: #6e7681 -} - -body .c { - color: #8b949e; - font-style: italic -} - -/* Comment */ -body .err { - color: #f85149 -} - -/* Error */ -body .esc { - color: #c9d1d9 -} - -/* Escape */ -body .g { - color: #c9d1d9 -} - -/* Generic */ -body .k { - color: #ff7b72 -} - -/* Keyword */ -body .l { - color: #a5d6ff -} - -/* Literal */ -body .n { - color: #c9d1d9 -} - -/* Name */ -body .o { - color: #ff7b72; - font-weight: bold -} - -/* Operator */ -body .x { - color: #c9d1d9 -} - -/* Other */ -body .p { - color: #c9d1d9 -} - -/* Punctuation */ -body .ch { - color: #8b949e; - font-style: italic -} - -/* Comment.Hashbang */ -body .cm { - color: #8b949e; - font-style: italic -} - -/* Comment.Multiline */ -body .cp { - color: #8b949e; - font-weight: bold; - font-style: italic -} - -/* Comment.Preproc */ -body .cpf { - color: #8b949e; - font-style: italic -} - -/* Comment.PreprocFile */ -body .c1 { - color: #8b949e; - font-style: italic -} - -/* Comment.Single */ -body .cs { - color: #8b949e; - font-weight: bold; - font-style: italic -} - -/* Comment.Special */ -body .gd { - color: #ffa198; - background-color: #490202 -} - -/* Generic.Deleted */ -body .ge { - color: #c9d1d9; - font-style: italic -} - -/* Generic.Emph */ -body .gr { - color: #ffa198 -} - -/* Generic.Error */ -body .gh { - color: #79c0ff; - font-weight: bold -} - -/* Generic.Heading */ -body .gi { - color: #56d364; - background-color: #0f5323 -} - -/* Generic.Inserted */ -body .go { - color: #8b949e -} - -/* Generic.Output */ -body .gp { - color: #8b949e -} - -/* Generic.Prompt */ -body .gs { - color: #c9d1d9; - font-weight: bold -} - -/* Generic.Strong */ -body .gu { - color: #79c0ff -} - -/* Generic.Subheading */ -body .gt { - color: #ff7b72 -} - -/* Generic.Traceback */ -body .g-Underline { - color: #c9d1d9; - text-decoration: underline -} - -/* Generic.Underline */ -body .kc { - color: #79c0ff -} - -/* Keyword.Constant */ -body .kd { - color: #ff7b72 -} - -/* Keyword.Declaration */ -body .kn { - color: #ff7b72 -} - -/* Keyword.Namespace */ -body .kp { - color: #79c0ff -} - -/* Keyword.Pseudo */ -body .kr { - color: #ff7b72 -} - -/* Keyword.Reserved */ -body .kt { - color: #ff7b72 -} - -/* Keyword.Type */ -body .ld { - color: #79c0ff -} - -/* Literal.Date */ -body .m { - color: #a5d6ff -} - -/* Literal.Number */ -body .s { - color: #a5d6ff -} - -/* Literal.String */ -body .na { - color: #c9d1d9 -} - -/* Name.Attribute */ -body .nb { - color: #c9d1d9 -} - -/* Name.Builtin */ -body .nc { - color: #f0883e; - font-weight: bold -} - -/* Name.Class */ -body .no { - color: #79c0ff; - font-weight: bold -} - -/* Name.Constant */ -body .nd { - color: #d2a8ff; - font-weight: bold -} - -/* Name.Decorator */ -body .ni { - color: #ffa657 -} - -/* Name.Entity */ -body .ne { - color: #f0883e; - font-weight: bold -} - -/* Name.Exception */ -body .nf { - color: #d2a8ff; - font-weight: bold -} - -/* Name.Function */ -body .nl { - color: #79c0ff; - font-weight: bold -} - -/* Name.Label */ -body .nn { - color: #ff7b72 -} - -/* Name.Namespace */ -body .nx { - color: #c9d1d9 -} - -/* Name.Other */ -body .py { - color: #79c0ff -} - -/* Name.Property */ -body .nt { - color: #7ee787 -} - -/* Name.Tag */ -body .nv { - color: #79c0ff -} - -/* Name.Variable */ -body .ow { - color: #ff7b72; - font-weight: bold -} - -/* Operator.Word */ -body .pm { - color: #c9d1d9 -} - -/* Punctuation.Marker */ -body .w { - color: #6e7681 -} - -/* Text.Whitespace */ -body .mb { - color: #a5d6ff -} - -/* Literal.Number.Bin */ -body .mf { - color: #a5d6ff -} - -/* Literal.Number.Float */ -body .mh { - color: #a5d6ff -} - -/* Literal.Number.Hex */ -body .mi { - color: #a5d6ff -} - -/* Literal.Number.Integer */ -body .mo { - color: #a5d6ff -} - -/* Literal.Number.Oct */ -body .sa { - color: #79c0ff -} - -/* Literal.String.Affix */ -body .sb { - color: #a5d6ff -} - -/* Literal.String.Backtick */ -body .sc { - color: #a5d6ff -} - -/* Literal.String.Char */ -body .dl { - color: #79c0ff -} - -/* Literal.String.Delimiter */ -body .sd { - color: #a5d6ff -} - -/* Literal.String.Doc */ -body .s2 { - color: #a5d6ff -} - -/* Literal.String.Double */ -body .se { - color: #79c0ff -} - -/* Literal.String.Escape */ -body .sh { - color: #79c0ff -} - -/* Literal.String.Heredoc */ -body .si { - color: #a5d6ff -} - -/* Literal.String.Interpol */ -body .sx { - color: #a5d6ff -} - -/* Literal.String.Other */ -body .sr { - color: #79c0ff -} - -/* Literal.String.Regex */ -body .s1 { - color: #a5d6ff -} - -/* Literal.String.Single */ -body .ss { - color: #a5d6ff -} - -/* Literal.String.Symbol */ -body .bp { - color: #c9d1d9 -} - -/* Name.Builtin.Pseudo */ -body .fm { - color: #d2a8ff; - font-weight: bold -} - -/* Name.Function.Magic */ -body .vc { - color: #79c0ff -} - -/* Name.Variable.Class */ -body .vg { - color: #79c0ff -} - -/* Name.Variable.Global */ -body .vi { - color: #79c0ff -} - -/* Name.Variable.Instance */ -body .vm { - color: #79c0ff -} - -/* Name.Variable.Magic */ -body .il { - color: #a5d6ff -} - -/* Literal.Number.Integer.Long */ \ No newline at end of file diff --git a/_posts/cheri/code/Makefile b/code/cheri/Makefile similarity index 100% rename from _posts/cheri/code/Makefile rename to code/cheri/Makefile diff --git a/code/cheri/membug b/code/cheri/membug new file mode 100755 index 0000000000000000000000000000000000000000..1f743a011ccc98cde4a569f5433f83b526a7ed90 GIT binary patch literal 17408 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 MvE>7bbE^FR0%O}`N&o-= literal 0 HcmV?d00001 diff --git a/_posts/cheri/code/ptrs_as_numbers.c b/code/cheri/ptrs_as_numbers.c similarity index 100% rename from _posts/cheri/code/ptrs_as_numbers.c rename to code/cheri/ptrs_as_numbers.c diff --git a/code/cheri/ptrtypes b/code/cheri/ptrtypes new file mode 100755 index 0000000000000000000000000000000000000000..118d4a84dab3c54ec434495d85dcc62ae5632eb2 GIT binary patch literal 17152 zcmeHOeQX@X6`#Ge<4c^Z&v77z5V9$W;1p7&6morU zcHVk#eOB^Eg;Z(hwEJd$@BQA)yq(*f*^e(p2m1q(#3%*W4u&N?q;tsLGd6W6FAA)i zH8P#8Whz?)NF8iC*Pyg>BvS!fK{6=pWRS=^A@nB#I+U=iqhPo2{hXv0qD0M<+IO!SXrNwk9`**W#8NQR{9T#%d*4I}C1VQfO0Z64ZT^GK?qzBVC= zhehP6f~N`|$+Mz9k`zzuHg40x-*iBS5|(uotdH;KB-&!S_kxwg{IrTClzNri#!HNm zB;I|%!**V8qOk83^(_>aSEW)<_Dph9CY>vdZyN9J+SJvl74zC=-tQIA z5FAsxcJE`A)!(f=6KcHa;$-n>zqs`$#?`?4-@$fc8_*xxU_yHeKjO5Z?s`)r7%s12 zj94u^47gguo(9~AG>&FRIcTPNzA-Kp~&9y{tg0#{r(#)VR=uJddI?9s2E{0R6F@FUk0*0Y3tM1pEm25%~X&!23`ghtHi#<7I1uAD_ho^(5d8aB{-Uhg` z{yglP*65JKatd|toU2qS$nW^aK>3XWvGUuo!{=x39U3?@b#S@PVrNdxHlsKb22r`; zE5Q5UINF~c(VEsg!QCH!F$@cg*mm4oEiWR5O;~&qfy%j&%GCcP4SO=d# ze|4@6NP&2%XQChR#-6NGbc?uSXF>fmS3g@z{Vu5Uo(g9GdkC;-$5c6bzOOt5$5Gwy3ik+)f8@czW7}J9 zXDsr-K>2r(eFNpok)cTWqkXYso9Y0*e{jRcI3{M^`WQNN>SNhj)A5IRcq?}Jv=qDJkEOriczI}l223Bj88ilZt=@PXVooF;jI?F+FLjZ7Fkn13-2mX(l!-VcV}K zEny{idO2nl42ydVkFVD@XT}}xSSl@H=vP>PY5}81^XcS9hq-_e1WH;ZZ|w$&&om!? zuTps&h$E-mS>YRw~~IdHbbGWg6tOAeX`eO?+;QNt)ctr16lnYH368IN>{0R6F@FUk0*0Y3tM1pEm25%5Mpg=e*xX2tu_^v);ArCbX;p-^az&Y72IQkR+UU zTXmg70ihs!S`Xs;u9#NZf~j>n&k;T=>Zf+&x)2k*Y|9h*gQu~)KWBwKJZ$D=N!Yg$-)EUi~s>SZOga+T67Er&r8&=_X)R#~~Tackp1%T5@X@;W9fI~p5tklYPh z9mBP`BuW2KmZ89Qz$P)ce}Okeidq5?NQ<2&tgNqJav|6f)PujrpL}ERcwjMbuhChT z!}e4@YqozOo_M7FF>|<>w#;^8EMK&W?TM6GNVg~QNt5ySz2QcRUHt-k8CrTGpwH9F za8GBtCN8s?ns^-x));>>{QKyC=B`ABJ1s|R+BdLQYvMsh;`=h*Bs*v8YK`oirM)`_kzFOrHWU9*OdTU#twOoqayIUn$b^S{{QP% z#JT6{-R1@G`-FdQy$1kSt6lI?7Vzf4O4jBX=aY!Dx&O6&#bK-rIQAD`QNzUVxq^HN zwh)Y;ZjYaDqkUi*8x!M@;`5;JqYJzpok4m5aP;Gi&r8DIeMv+6mjTE2d+oo0_JJDb zy+pw(S|xZpF2Ry!!5mE&Efa3KXN^QApEHZ_flxAUjArt~@r;qQ@`a)iFO9QAK0B5% zEivn@_bL_RU^~>pbFepeO(2yEar_=JeSOv%ox}M zR>^eEC>2fU##{@qgUm=~jDnfTC*qcg-mG-O7)t}q7%motdwz8{jG=paMR1r_oXA@7 zVURHM;4(!ym<5=HF{b76mZ^>AO4@KK4WGfKlLCtL3~aLEqm1iP@nVW;$%!2Jv!zwA zHDVrCRWLvYZH*&A3kLR_}dL-IJ-FQr}-5(%(Z~LDUe5V>! zw@p=BoU(=7;qC_*v{6BpP4DqvQBz z(4h(OX}vKkCNgA)J}?oV%rnf;&~go=4rA|A>2K#&KRTYyjfKuP~Sx9M|&-zo+k-rK<;MaP5Ai+I0`j-8wT cA}-`0y-pR`#d+~-2D}#k$Q?GJ^BVmB0(~N;2><{9 literal 0 HcmV?d00001 diff --git a/code/cheri/ptrtypes-cheribsd b/code/cheri/ptrtypes-cheribsd new file mode 100755 index 0000000000000000000000000000000000000000..782fe85e6732df4e3761828af52d081e324e4614 GIT binary patch literal 21832 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 JK-&ZG{{cF6KCJ)% literal 0 HcmV?d00001 diff --git a/code/cheri/sizes-cheribsd b/code/cheri/sizes-cheribsd new file mode 100755 index 0000000000000000000000000000000000000000..b7dba02efe47aee47f5b33c104125fe1d585f08e GIT binary patch literal 19040 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 E0;Hdmx&QzG literal 0 HcmV?d00001 diff --git a/_posts/cheri/code/sizes.c b/code/cheri/sizes.c similarity index 100% rename from _posts/cheri/code/sizes.c rename to code/cheri/sizes.c diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..4fec681 --- /dev/null +++ b/config.toml @@ -0,0 +1,14 @@ +base_url = "https://jackbondpreston.me" +compile_sass = true +build_search_index = false + +generate_feed = true + +[markdown] +highlight_code = true +extra_syntaxes_and_themes = ["syntaxes/console/Sublime-console/"] + +[slugify] +anchors = "on" + +[extra] diff --git a/index.md b/content/_index.md similarity index 83% rename from index.md rename to content/_index.md index 38303ce..be41bb9 100644 --- a/index.md +++ b/content/_index.md @@ -1,7 +1,9 @@ ---- -layout: default -title: jack bond-preston ---- ++++ +title = "home" +sort_by = "date" +template = "index.html" +insert_anchor_links = "right" ++++ # jack bond-preston @@ -21,8 +23,4 @@ some of my work at arm on [morello](https://www.arm.com/architecture/cpu/morello my [onload](https://www.xilinx.com/products/boards-and-kits/x2-series/onload.html) commits at amd can be found on [the github repo](https://github.com/Xilinx-CNS/onload/commits?author=jbondpre-amd) -

articles[atom feed]

- -{% for post in site.posts %}- [{{ post.date | date: "%d/%m/%Y" }}] [{{ post.title }}]({{ post.url }}) -{% endfor %} - +

articles[atom feed]

\ No newline at end of file diff --git a/_posts/cheri/2022-11-19-cheri.md b/content/cheri.md similarity index 96% rename from _posts/cheri/2022-11-19-cheri.md rename to content/cheri.md index 59c9be8..b0d966b 100644 --- a/_posts/cheri/2022-11-19-cheri.md +++ b/content/cheri.md @@ -1,7 +1,7 @@ ---- -layout: post -title: "CHERI" ---- ++++ +title = "CHERI" +date = 2022-11-19 ++++ ## preamble [CHERI](https://www.cl.cam.ac.uk/research/security/ctsrd/cheri/) is an acronym for Capability Hardware Enhanced RISC Instructions. it is a security-focussed project aimed at improving memory protection at the hardware level. the project is complex and it has many potential applications. @@ -18,29 +18,27 @@ to understand how CHERI tries to fix some simple issues, we'll first look at som ### a simple memory safety bug let's take a look at this C code: -{% highlight c linenos %} -{% include_relative code/membug.c %} -{% endhighlight %} +{{ code(path="cheri/membug.c", syntax="c", linenos=true) }} and try running the compiled output of said program: -{% highlight console %} +```console $ ./membug enter your name: jack hello jack my_perfect_string: what a beautiful string -{% endhighlight %} +``` works on my machine boss! code review +1, and merged... ...until our good friend [Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr.](https://en.wikipedia.org/wiki/Hubert_Blaine_Wolfeschlegelsteinhausenbergerdorff_Sr.) comes along. he emails me a strange error he's running into: -{% highlight console %} +```console $ ./membug enter your name: Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr. hello Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr. my_perfect_string: hausenbergerdorff Sr. -{% endhighlight %} +``` ***note:*** if you compile and run this on your machine, you may not get the same output. that's because we're invoking *undefined behaviour* here, so the compiler can kind of do whatever it wants. I'll always provide the output that demonstrates what I'm trying to show when giving examples like this. for what it's worth, I'm running `clang 10.0.0-4ubuntu1` with target `x86_64-pc-linux-gnu`. compilation options, the `Makefile`, and such are available [code subdirectory of this article's source](https://github.com/jackbondpreston/jackbondpreston.github.io/tree/master/_posts/cheri/code). @@ -53,7 +51,8 @@ that's not supposed to happen! his name has spilled over into our `my_perfect_st let's take a look at the stack in GDB to see how this happens: -{% highlight plaintext %} + +```gdb (gdb) b memdebug.c:7 (gdb) run Breakpoint 1, main () at membug.c:7 @@ -70,7 +69,7 @@ Breakpoint 1, main () at membug.c:7 0x7fffffffdc10: 119 'w' 104 'h' 97 'a' 116 't' 32 ' ' 97 'a' 32 ' ' 98 'b' 0x7fffffffdc18: 101 'e' 97 'a' 117 'u' 116 't' 105 'i' 102 'f' 117 'u' 108 'l' 0x7fffffffdc20: 32 ' ' 115 's' 116 't' 114 'r' 105 'i' 110 'n' 103 'g' 0 '\000' -{% endhighlight %} +``` we can see our two character arrays are right next to each other on the stack (`user_name` contains some gibberish as it is not zero-initialised). @@ -98,27 +97,25 @@ memory safety problems make up the vast majority of problematic security issues. ## pointers recap let's quickly recap a basic idea of what a pointer is. we're going to ignore things like [virtual memory](https://en.wikipedia.org/wiki/Virtual_memory) for brevity. we can think of a pointer in a normal 64-bit architecture (e.g. AArch64) simply as a 64-bit unsigned value that holds the memory address of something we care about. this is a simplification (as are most things), but it can help us reason about the general idea: -{% highlight c %} +```c int val = 1593; int *x = &val; // x points to val -{% endhighlight %} +``` int *x0x0000010000000004addressmem[0x0000010000000004]mem[0x0000010000000000]mem[0x0000010000000008]1593memory (as ints) and on these normal architectures, this pointer generally is just a number. we can do weird things with it, treating it as a number... -{% highlight c linenos %} -{% include_relative code/ptrs_as_numbers.c %} -{% endhighlight %} +{{ code(path="cheri/ptrs_as_numbers.c", syntax="c", linenos=true) }} ...and this code will often still work: -{% highlight console %} +```console $ ./ptrs_as_numbers *(7fff98640c20)=1234 *(7fff98640c24)=5678 *(7fff98640c28)=9999 -{% endhighlight %} +``` yikes! now, when you start messing with pointers like this, you're bound to run into a bunch of undefined behaviour. but C programmers write undefined behaviour all the time (and not always by accident), and my computer executes this program fine without complaining at all. doesn't it feel a bit weird that we can take a pointer to `arr[0]` and modify it to load `secret`? they're not even part of the same array... @@ -142,7 +139,7 @@ the idea behind CHERI is that we as the C programmer don't have to set up these ## playing with CHERI RISC-V unless you're lucky enough to have access to a physical Morello board, there is the issue of actually using a CHERI implementation. for this article I will be making use of the [QEMU](https://en.wikipedia.org/wiki/QEMU) emulator to emulate a [RISC-V](https://en.wikipedia.org/wiki/RISC-V) CHERI environment. running [CheriBSD](https://www.cheribsd.org/) on this emulator will allow us to have a nice [FreeBSD](https://www.freebsd.org/)-based capability-enabled environment to play around with. I'll use [cheribuild](https://github.com/CTSRD-CHERI/cheribuild) to easily get set up (the `cheribuild.py` step will take a very long time the first time): -{% highlight console %} +```console $ sudo apt install autoconf automake libtool pkg-config clang bison cmake \ ninja-build samba flex texinfo time libglib2.0-dev libpixman-1-dev \ libarchive-dev libarchive-tools libbz2-dev libattr1-dev libcap-ng-dev @@ -153,7 +150,7 @@ CheriBSD/riscv (cheribsd-riscv64-purecap) (ttyu0) login: root root@cheribsd-riscv64-purecap:~ # -{% endhighlight %} +``` now we have our shell inside our CheriBSD emulated platform, we can start to try things out. let's compile our `membug` program again, this time with the toolchain targetting CheriBSD RISC-V - this will have been built as part of the dependencies already. @@ -161,15 +158,15 @@ once our `membug-cheribsd` executable is built, we can `scp` it over to the Cher from a terminal on your host machine: -{% highlight console %} +```console $ ~/cheri/output/sdk/utils/cheribsd-riscv64-purecap-clang membug.c -Wall -g -fno-stack-protector -o membug-cheribsd $ scp -P 2222 ./membug-cheribsd root@localhost:~/ -{% endhighlight %} +``` and now we can see what happens when we explore our bug with CHERI: -{% highlight console %} -$./membug-cheribsd +```console +$ ./membug-cheribsd enter your name: jack hello jack my_perfect_string: what a beautiful string @@ -177,12 +174,12 @@ my_perfect_string: what a beautiful string $ ./membug-cheribsd enter your name: Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr. In-address space security exception (core dumped) -{% endhighlight %} +``` it's working! we are getting a capability fault as we exceed the bounds of the `user_name` capability bounds. we can use gdb to verify this is caused by the bounds fault: -{% highlight plaintext linenos %} +```gdb (gdb) run Starting program: /root/membug-cheribsd enter your name: Hubert Blaine Wolfeschlegelsteinhausenbergerdorff Sr. @@ -192,11 +189,12 @@ Capability bounds fault caused by register ca6. 0x0000000040314ce8 in memcpy (dst0=0x3fffdfff44, src0=, length=54) at /home/jack/cheri/cheribsd/lib/libc/string/bcopy.c:143 (gdb) p $ca6 $1 = () 0x3fffdfff78 [rwRW,0x3fffdfff44-0x3fffdfff64] -{% endhighlight %} +``` as we can see, the bounds for our `user_name` capability (which is stored in capability register `ca6`) are `0x3fffdfff44-0x3fffdfff64`, but the address is `0x3fffdfff78`. this is out of the bounds allowed by the capability, so the architecture throws a fault. if we look at the assembly generated by the compiler, we can see it set our capability bounds to a size of 32 to enforce this behaviour: -{% highlight armasm linenos %}0000000000001ce8
: +```asm +0000000000001ce8
: ; int main() { cincoffset csp, csp, -160 csc cra, 144 (csp) @@ -213,7 +211,7 @@ as we can see, the bounds for our `user_name` capability (which is stored in cap mv a1, zero csd a1, -104 (cs0) csw a1, 0 (ca2) -{% endhighlight %} +``` ### chains of capabilities at this point you may be thinking "okay, that's great, but if we can just set the bounds of a capability with an instruction then what's the point? surely I can just set global bounds on some random pointer and access whatever I want?" @@ -222,7 +220,7 @@ fundamental to the idea of capabilities is their *provenance* and *monotonicity* *provenance*, simply put, means we can only construct a capability from an existing capability, using specific instructions. we can't just create a capability from some random `size_t` and use it to load/store something. let's see what happens when we try to run our `ptrs_as_numbers` program on CheriBSD: -{% highlight plaintext %} +```gdb (gdb) run Starting program: /root/ptrs_as_numbers-cheribsd *x=1234 @@ -232,7 +230,7 @@ Capability tag fault caused by register ca1. printf("*x=%d\n", *x); (gdb) p $ca1 $1 = () 0x3fffdfff74 -{% endhighlight %} +``` we get a fault, because the tag isn't set. any capability with a tag not set to 1 cannot be dereferenced -- it is invalid. in fact, this capability has no capability metadata -- when we copied it into our `unsigned long`, we just copied the 64-bit address. @@ -245,13 +243,11 @@ one common issue is that a lot of existing C code assumes that `sizeof (*void) = let's make a program to see some differences in types, and demonstrate how `uintptr_t` can preserve capabilities: -{% highlight c linenos %} -{% include_relative code/ptrtypes.c %} -{% endhighlight %} +{{ code(path="cheri/ptrtypes.c", syntax="c", linenos=true) }} running this on our non-CHERI host will give us: -{% highlight terminal %} +```console $ ./ptrtypes type size (hex) size (dec) ===================================== @@ -259,11 +255,11 @@ uintptr_t 0x08 08 size_t 0x08 08 void* 0x08 08 ===================================== -{% endhighlight %} +``` running this on CHERI (64-bit): -{% highlight terminal %} +```console $ ./ptrtypes-cheribsd type size (hex) size (dec) ===================================== @@ -275,7 +271,7 @@ void* 0x10 16 *b: 888 *b: 111 *b: 999 -{% endhighlight %} +``` ## epilogue I appreciate this has been a fragmented and surface level introduction to CHERI. hopefully it has provided some education in some basic aims of CHERI regardless. potential benefits and uses for CHERI go much deeper than anything I've touched on here, so please, read more about everything - and get your hands dirty trying out messing about with qemu and CheriBSD! diff --git a/_posts/sensor_watch/2022-11-14-sensor-watch.md b/content/sensor-watch.md similarity index 95% rename from _posts/sensor_watch/2022-11-14-sensor-watch.md rename to content/sensor-watch.md index f7b966d..d334e87 100644 --- a/_posts/sensor_watch/2022-11-14-sensor-watch.md +++ b/content/sensor-watch.md @@ -1,7 +1,9 @@ ---- -layout: post-sensor-watch -title: "sensor watch" ---- ++++ +title = "sensor watch" +date = 2022-11-19 +template = "article-sw.html" ++++ + ## preamble some time back I was browsing [Crowd Supply](https://www.crowdsupply.com/) when I came across [the Sensor Watch project](https://www.crowdsupply.com/oddly-specific-objects/sensor-watch) by [Joey Castillo](https://github.com/joeycastillo). I had wanted some kind of "hackable" watch for a while, and had looked at things like [Watchy](https://www.crowdsupply.com/sqfmi/watchy), but this project hit the sweet spot for me. I love my existing F91-W, and this project was a good combination of open source with community software support. one key feature that was important to me is battery life - the Sensor Watch battery life in an average usage scenario is so long that [Joey's is still going strong](https://twitter.com/josecastillo/status/1590066358351298560)! @@ -22,7 +24,8 @@ this part was out of stock everywhere I initially looked (the usual contenders f ### PCB and stencil for the PCB I opted to go with [JLCPCB](https://jlcpcb.com/). I simply uploaded the relevant gerbers, and adjusted the necessary settings. notably, [the thickness should be 0.6mm](https://github.com/joeycastillo/Sensor-Watch/issues/14#issuecomment-922974276">) - this does narrow the choice of manufacturer (for example, OSH Park doesn't go this thin). I haven't yet ordered any sensor board PCBs, but [PCBWay](https://www.pcbway.com/) seems to be *the* option there. The PCB turned out great, although the silkscreen is a little hard to read at this size due to lack of sharpness: -{% picture jpt-webp sensor-watch/pcb.jpg --alt a closeup of a sensor watch PCB %} + +{{ image(path="images/sensor-watch/pcb.jpg", alt="a closeup of a green sensor watch PCB") }} ## assembly @@ -43,7 +46,8 @@ the assembly process is as follows: [removing the buzzer connector from your old PCB and soldering it onto the back of the Sensor Watch PCB.](https://youtu.be/Zr0pKeC2VFU?t=185) this will feel blissfully easy after the button! you also have to place the battery clip, but no soldering needed here :). one area I found particularly difficult was the area with the oscillator crystal and the two 0402 capacitors, C7 and C8. things are a bit cramped here, so extra care was needed: -{% picture jpt-webp sensor-watch/c7c8.jpg --alt a closeup of a sensor watch PCB, with an area circled. the area contains some small, and closely grouped pads %} + +{{ image(path="images/sensor-watch/c7c8.jpg", alt="a closeup of a green sensor watch PCB, with an area circled. the area contains some small, and closely grouped copper pads") }} ## software @@ -95,8 +99,6 @@ some summary thoughts: - if you have a Sensor Watch (or are planning to!) please go ahead and [contribute to movement](https://github.com/joeycastillo/Sensor-Watch) if you have a cool idea. I'm sure some reviews would be helpful to spot any issues on existing PRs before a maintainer gets to them to save some time. - the one issue I've had with using my Sensor Watch for TOTP is clock accuracy. the clock drifts over time, so I have to set the time once or twice a week to keep it nice and accurate for the TOTP functionality to be nice to use. but a community member is working on this, and it's going to get a lot better. check out the Discord channel to see some seriously cool engineering going into this calibration effort. - -{% picture sensor-watch/watch1.jpg --alt a shot of a yellow and black assembled sensor watch, lying horizontally on a surface %} -{% picture sensor-watch/watch2.jpg --alt a shot of a yellow and black assembled sensor watch, lying vertically on a surface %} -{% picture sensor-watch/wrist.jpg --alt a shot of a yellow and black assembled sensor watch, on the author's wrist %} - +{{ image(path="images/sensor-watch/watch1.jpg", alt="a shot of a yellow and black assembled sensor watch, lying horizontally on a surface") }} +{{ image(path="images/sensor-watch/watch2.jpg", alt="a shot of a yellow and black assembled sensor watch, lying vertically on a surface") }} +{{ image(path="images/sensor-watch/wrist.jpg", alt="a shot of a yellow and black assembled sensor watch, on the author's wrist") }} diff --git a/cv.pdf b/cv.pdf deleted file mode 100644 index f1dea9d1092f7cf7401cb2764373cd177234f26d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83108 zcma%>LyRyC(4@z<&kwLCPo4V0y{%XC>|atdTA3|GiP%GCRPr1g8w5ZdNB)YXA?&PdNFGQXA=<< zBRgXgC_X+YCuc_!0~;v!%^6J%udP-jpSQYsCH~JSQ764mXPXg+?9DdYlj5IF9sv>> z!qY;a;=}xfUPt44spvy&5%=tv8}8Q@>m8 zTo-M%kMBgKh2@psJheL4(wtsC?}HL%bTT(Z)+qcB*ZBUL^;c~@xu+@LLoH`gb>Y6f zJa9q%o)l#A)fr1aIDCdXRXM9PW<){F|;UIUrC<7*)jl(-Dy~B{%{`5#*RC|=|chC^#<&MwkI~?F9mDX>m*fA z$CkIX+)q9yL??yxz`rF8)!U!nGUh3Rb5x$&vWaV1UiDca`o^Vyy{glxUi`csefZ$z zhC=(Wj98zRw-BmlB(=M@SCKonU%8^3{mQyL0F;USm31d&cDPPpgw(~vu7vo(1-N05 zG*TLa9d!Bz|D+H8b7db_4EYM3hfz7K+9 zsj<9k353qS=&vOE)2T7{LmN&wZNF!oc+Pl*?zl!?tm$9Po`zqe<#uJdSvJG2HXG2h zV(@n)rjc`(wCk+8?liN1;x6shSZzg;axYiDQu8y6H-m~HNZ+S3*KW|puCBzedXwN0 zV&TRwY7FfZ?4&d&q?|`nfq#bPJ*ApPe@!va)+Msb<@jIY_20B6UHlgqjf3CKp zisj~Tv@aD!oq=bHnyHuyJ8R1UVjw6e>hhd7=xGd8dV%gzCVmv;xXNqAD~5WHX!MqX zbKS==$n>!jZ8nN48zP{pldoi|EZ568&9}umHrk|*X8Oh|ci?d?Sk0TyBEIl7rm9%| zyivEQ7qw zLyZS%B_5R}k zk}j2+glP%|zh6>Ab%@eOccnVYo;2&Rw+WzA##JE5_v(%5t!8R+ccBnxGk%O-IfgWOiEz~m&1co@12{SzP!S6xJmE3*Dh z24yb~QAt>eluXjgV9J?FM+$cg0ry-Yo+P@rVyO%UKsHeAe+z=_nXc*tD9?1_Q;-K_ ztHOz*9F48zFo>TFdfs>nf8Gcr zhl*(t9eV*aa1uAwq!$AyD?w-N0S8flq8xaVJakAN2sT)DBK_r4)@)rIS=nilz-o}P zAZ5}<0|3!c+5;G`dV^IUdv9^<{w5^6>U>?C4b@ufigwSJ|4W9@o);1b>fRCrFxX~{ zN*xj4N>1)1zn5LJnG0fCWPhmS+`gu#5C_({ULa0|tS$}BM4kNk3EIW})MwCbF*BSt zjz}Zu_IS)5ilh-xk14h>AK$iuLL=6KuDfRoomzo#ZQNipb-_ctl>-Stm<~xfcyBo* zl2@RAoa$m(QZ&v=PKulMIx9>7txbJLG84s~_JoR<19|T=m+xsQm&1%^R=$Y2sxa@} z4xl0RPeIK}0u$tp7dt)mf}?d)h{@jYw-?0asy8(;YUtS8o-JPd{)&;Qc8e+rjw}bC zP}qB>+HLmp2J>HrwJr-xyG5(4B%>H=jfhpGTWAgfT*FnRkQ=~N6>o`38i7md&~rIA zNjDSL!MXbBNE5J8?{*{5e5aDE6EV7){X#9FUR0f?&}jaf_7S>vS@+NdtzQ(7vx8B8 z{7*t{}$rtHG*^5-~Igjf8L}FH|gqnYo!N`5x^Nk?=wzQZo1=p>ttKEbevAU~`xZ3ol%%&6IqiR#6F#cb6X(livk>c;SPk z3GozEjk+a=wz%a3huyn^zJg@}#mHIQV(6IiK(@OX;>*IDGIpv!$rH|#HoL}~?rsB7 z!rtnW>(W?QrUShz&MQ6UpM>Ul=m=nW==6r)`)%>bR{*=%$MA%WmStwQC#OnO*#gv< z%l!$!4{^7_{C_@W;BoF`c6RE(Envy7Z^%@mGD2H2UrW@EE)Ulm5H791E%Pq$JMRc2 z;(6)V<93}dMZPnf>k^S+69${?`}InwS+Xg0sZFzj|CgcsJ<5;q{5kxfZjVy;CBEH?z9j#CEV2a={}lpG+kVA%o#L-%-$h%~A1Kdy(bkHz zDIDpeFg4Oi=+$&&IZv6p< zW_D*onb;ctUrPMX{cpl#=J|r9k(H5|{eN0!0*3#w1dMFV>kVw^2pAiHpKRB?PlA93_0Zu?gUpO)iqHkzu@?QlIldCm3wt)VM!->}d zI=ePF)}MW#3om1uUw;xJGrRr}OmeRS8*f_!PFDk%!r__9;*pU7KqDi+`Gv#H@&GUz zxluFw^8gEs4&a>wiPK%~pPyKp7+icJp7GZKP$^jgFtf9h@8q2V7;xt|rBpQV3hb`0 zAep}*E-bI3&^8=8EH z$3*+Jf0#G5_hgg@<>1cmu7KXgeGgY>2bALbycvFf+1p&>@?7`)1x?pn&rJVO3{B4@ zDD3P`PQX&ozOtVQgS^E}1D!+Zn;9A&9`6GIw%0-!!R^4xqzkv&{kg`{672=f@S`N z@XzjTOd{t`Ju~`F1C;Xn{`oBZr86*tdui4Ao%`W27Db1~c6XB8?2-PdQ4$^QL*AE~ zodL`@)iVR8XK=0qWaHEK{#}VrtY6;o{F+eP*xdr`|5ES7@%@mSy!Dy+U*3ThfPL4| zgNDUTfC82OVmkAZxsol#fj|A7Is7dh|LrCJ9i05R%>UVmA=$RJ`dwE15`F)j$J|s~ z_xzfAOV?&yjiHTmdtV3s{FPV&{b}kTf@?MXRVBHy{;q=>ctLOdwJuDG4o)JQml~f~ zT7Imxf0L^H87)}XTn9+P(W&}r(*k&!l9m1yeXY|eWyM_$ofwh*DFgDSp7{w!Ze?+$ z|1_A;;FDWlUt3>;zB!EJhvV+gd^g0J3e54BVf2sd-|c@I0KHSpqU+!8!@P|}IMxGW zg#01=gm3^v6a5j;0TiwChhz6s{OS!)K&0XCLwtibdZRop_!*&3`6;LaM4$cz;-f_Q4a6b*#c%LM zwmdsFgKYjqJrFj1qJNJszUtiRKKP}7R|p;J z`+QHxJnP#Rm(}$f{KK?XVn2)H(fRB4#!|2}I2fp`YV9HgD$PJaZ`@`JbaD@PrD z%iqI3%Ol)dk}fKJ({=p4cnt>0k=99iF&X;Mx68 z**F_v&^58FgSB-)veGZS7isU!19(O5$(-+P zHuLfOm^@$m;63@lg41|Ud$jm8f1&8Lq%yQ9aDbt8BqzZ0v3z``zz`DorvSKojJu8b8HKl-SbG z9IAKvD26NLtoSxAb&>qGsMJHSIA!fRs@Ap_{lK|NzJV!6qC|zQ<3}Edzdg6(;Cz)} zpteuD;t3l&2rrYsovV?jQ4n9F+wpf8Z+9?t+4IY#MJ-);O|_vgfU}xYiJglJ{KrgO zyeK@Iz6B%$S-LghD8)%&!~-h8MDTxYXFeV?BdR03@a>cUIaf8Q!D zV?gN)7cFUDHtEQ{YK5phUF?rEQjx4a!$S8J7QU1eU}?JDL^PTel0cy+ljT+V-?Q=nq_{5!llN04zH@LS~QHX?ozAbPxR*fMZ5I$SDM$OewbCtuJwyq(ED zDjm-#x+zX{Pciz?O zXl#!#N4WT^DFq)!Tg#gS`KHGG^EyS{i9C9;NW^Qy1jnPZDd6$|u^4bl@!>t9L^T|7 z2V+RD<;c2q!r|%0q9p{Mr$H$dNlBK(85u;cp{Q0s#5F-^QITlJYz-9MdlYWd&FG5{ zB-L6Vge@B$(IO%2P%Y@l+R4s=bm0RvvXNW0lmzw6y(-4uP5+fLe;*3@6m2WH8*(ik zBG?T>e$=}k7<`?@Hh#l$*TCO#(UUaxfLi0ZZNh`7!pDL88X%O>yY?^zXu=^X(#bR8 zHVd|lwv3{d6JrL!YX;0UwCXmK2L#7El7L?sj{1_twSi z+~wKYub(=gOR^sBX0`R-$gj*0rg>nKefUf8JCUQrf}g05h)H9&daMzInj5QPiEf5w zp$A0O5#M(n`R22*m)#8r98Ht9H=3M6fBk%~Rk57(=JpqeLv+8KN+}GW`4TmoNz7hY5u?TGbu#y-)b~E6KfyHV)74l80jg3+Os?3ygD? zUw8`Si(-nbRjOdgT2v4M#!}w7u;1MYuTknnA&Gy0YVHg1D-lk+rqke1{p(bnhm9W{ z+-}(x(sGA2(x#u{fILzIQu{^@4`nBZjsyHseEJe{YjcIuzb^&Yj)=q&P(cvTR5%9* zLEsfm0fbtDn6hi#!5OgEjvL-=n}aqT0;c}ls7wKxFZUr4KYL2>&zw6$>6}T!JKG0` zoXYus38buzCoKqOCryylBujALb=;mftTCE*uUPBg!WB{N|AORq;0QWv#`j;@3@u>> zptX_*RUq`+t|(!uL?q;ge&<;OXXEZ99eUMH;GGpNV!G z7T!y^lxHxhVE^(>IgP7R-NPDA?U``ixj8~Bu>_Z&A^z5cco7S z<+`*%D})xQ0XiaPqM=NL30=>Wn%E&zZ;Et51olkJGo^s(egK~j72gB%{0;{`;PM-+ z_Wk6V%+5T-LBDlAE;9A(^ovv9A86~;j>Tgk)%uO6lF<&mJH0h-=0eMF$MGV?XaF^!Mx{&tizb|>H0BuVg+Hw7VbCuAIJt*c)S!TJS)~e2q zY6$^SzcZBA3!2&csJ0F|50DqMYDzT^Sr=jHAV$o`x^QtmYH+{EY21XJ!xHuT zyJ9tJ5_y5o(W+_yOzOwk1oBU?=3(O+f6kO7EAO=kyCNC;$7*;SYCNE!N@pd^qdvWoQBw8R)U0+5KTHK z(B*zQkXj}xLQM0-6`Dc|5LZBE3UmcLTl@3YB77pmGk!hKV`PNwY~aw4mF}7U(lRJihkTwA6_ncN6uGM+R+44?SvNPY8hZ zO0>FhiX4%`a^|ZyWj{XxqgRt(C{GjQD?bD=wACHk@FVBn$t)LL!~5ro?U?f>N2nbD zF=UEu9=mQfCBjv{{kazPzDAAAdg*kG zbyYz!`gH3Gl2c zBnQ7;x4Zx*^8K-nI94e21N0P=$#fD|c6mN&G$tu}1NW!k9A|`oN>S#3I z#r!}-d>gZMtxccpk$M}7Ae_lB&PYKAcAo_7fhTGyjUExtMHhe{_v8xE+DRNl zV|%uCQ_nvrMY2N5urLxe_MK47lZFK|hZn&^IgX#c=kV1d?RnneJv%%qt5jJ|O==eO z!h^m-YNr9B+?6N7c&|-Gki)e8nLX8l?5_xQ+b26o78L9F`tz3arJK*WWk^oo3dsa( zQaJNZ;$}|0)WS6M7^s6Q92L-stQv1$QNGSk|MS7`QKkd0;j`p3zv;}=VOPxDX1n1p zrie$Q%I%;K8(b5@;;HC`W9@0Vw9Zq+&A=Lxyq9|ynM9!A1qH(LFdWVd{fM^89aaZ? zM3xkA7O1g@dyE5&qlU3HVLo8w6vScdR`WupeQe|)360BG)`nTxXaqgu1HQwwueLee zr`D$ByE>9RKEs*#DE|ud+gT8LiaXP4k51I%I z)e`a9Z6+$pWnoNdvZh6biQOA8yqBI@I2MJkS%0-DoC&RX>7)jJ2OUgTb>;BR`fxVK z#R=0hqPY`@!RWRaIr+02^00;)VjjX8rli1Ej%L;3W)=e@No0!*Q|cexXJ|V^FmLWa z#@^pXEBWQQ*GSH3L53s|8<~9dZtG~sb7nCX`+LtAw(+X;(tWYLf3ST)oEX&v^ykM% zPwR9iZHUrX;CdcSXqC#3AI45`Cv&edhd0kvQS>pZR(FNg4K5O&F%?CqvBbd+5;{K596EBmL*Y64mKK)5Hk&_R>6USI0?=j*aAAaB@#cz`<)8^FP}J54B*oHX zueIRX5l@7K8PDhj)lfD~6`!i00hya<6e@763vuWU8o*7ckD+vlSL`eQz&3s#wW083 z%jDxYC)Bn_rps^|Wn%6rL%w52*tNPW;K7>^<)D zp|Zo6vR_0HnzW{~O}w5OVe>48JsjBZ#7FJrV{pcGAQr+@Kq$u>>U%mHh9+BBlulSv zEqz3%M)4v>eND8S@lrFC=3y^rXZ5zNA1@eRbHJ)u%u)4KAstCLq_f{_C9ryHz>j;T zw{*ymw%1y6sMe8`W@t>xw99$sB4=98&X>Xhe|J?n8Ous}T>K28(#y}$(iZOV*G_Jm zsSiP+xm{v~9l?lW!E$4B9@*Tnr1QXQs6a|$O7T@jwVW)`@RLke<;VqQ1juQlm*L@C zBhCLQe%NW=7+&2AH-zHNH-F@sfCKXunS3yiSsC!NZEy%seZNOxXP z>zvl`sD={QZyKC$!INaV@mg_CqYWIv)vS12Uc@2*O>%`ehz^ds=+qO<*$SjjVca>z zEL9=BhOrF#F9Ctag_UM45T6a#ajsOnT5Wx0wy~Z4QqDH6EvcmOKH$~> z+>U3H5#(TMU3oq_+w6a<`$Dv?k@h1NhPig+KTt~*@{cMjD!N80pk6+r$QYi*^8e>oxya0oG53xvmA(74x|LvqCs)1-Ue-0^EINl}&1ebt84h z{L)l<9AMBtq|CAV{#b0wG>JA%>U)#jZXOxW;tq@$%D?hxYnx`!Z9cI1-SWmI3dtVu zws9}X2q0PIjM3?kAlD8$9WU$kpU71AIPHW#G2sEZ#yX5(R5~6+hDY%$QvABE$9^_QVUNu--7lalN)V_VmWzWQ6R?ePj=z<$=YWYyj z1Vi4xafv$}1I#65law$a5OOc(N|)mln!4w!QZMiZM&cGn%mwxE73_-nIjYgBwjgE@ zN%}p#K3b9j8l12=cR1q+sFog4(n;>vr;AZBW*LaoULbIf0q5mdJ0lC>No8kfYdo4y za>>FyMuwo$`lM(=VJ?ZuoOqZ^=~H?uZno4=eG6CJZ-+hE9KSp|oe$-wdzJ!of&X3( z6s}c%VpzH(+$jW!DZ(57zVd{R7a2-ZJt?hl)^hs#P6}@Ydv7f=@0-jGT_LD zr=a2CJb8w>UzhSHbB0IM1x>C2Q0ZZJgBU4$n;tw~0raZAd)Lcy&nZTM4vy=I8XVXl z#d~x*)`yKZwHD!#;UK9KxIA95j9nP1Du;>}4bj)<*RJOb)766#P`|ocqwqXnhbH2z z?LY4WF2Ui`ofqkkgCSI>B554+f)Dkf)l*b)_FX4HD`#AD;d~0aJJq56UiP{7-@qEl z=*$v&($%vu7O*g%*n`>yk5P1gXZ~#oL?zx>8VW9DAXz-|#re34kT3(lS*e=tB9k1*% zX91%&OsKiKzO>ry!nUz7pnTyqf!F9Q?RUnV%XD>6rrsOHjI2pn;+Lq8P0HFy;lUSV zhdGnvisoMO6tytCr#Rs5WltYHml#D?)hF%WqkAx#KR@#JB5u!mcCJ#u;p(Lg64wR- zqEc=!L#`yo?WMY2dg5Uk-FDnjE;0)889{{%;07~-EulkN0*MPyt=-&Ja3yKN^CVEA z`r?uqBu!17gRO9=eJhmxPb^u}EnwiRlKYLdrzmF_iVi3D_ZS|Y7U%H?XQTYWg4Lqx z|E7OA)MvgOO^8aWwL%y*#N0){cL?=qk#j+UBWG@*ATg8NPE6$lFbze&rNU1M>4z6| z_-Tm^Vm(x1;qmn*f2aXtRKj=Qp6i4gVWM^IT6{Y`uBoti4+&6AMLrq1`y}a%^!3qh z^D~c{Ds+)a1=~m9GzYX-d@vT|o+M-sS82WhXddsGb{(Qt7(vs-E9)X=*<7-iH+s${ z+4BLA{@97vnb{cW6;;Dn?6Ve!+Q(|u3)KsT!9P?-qeQsxh~cFzCdJ(d;~zAFRJ>#c6}&u&=yoNjt6QdXMWK7|=O|$5EXsNG#SqiZp|E2KomG zpX$IMaicb#TM=Fs)?3w>>Ni)uOifT45N6?hyi;;d)ILzvMN%crn`^q(Iw2)kF^Mr= zsGcQ%__D~6Lc}-17Rog5IahtBYCWx23+zhGBasoaAoQ|$k02*KAXL}H+I!gftTOW@`%eW{5 z64!qV<__mYKiGI>!`vRZkiwm=2#$J70f{FD#$eqYeFtDi+f`z>swH=LB;S-MXu27V zC!P*Xwpy1TcCj92AxZp0)Wp zqWqg(AC6GD)COW8p>WMTTqv|3O|zYs*$-2SHMt_>#@YV;UgF1^+3v45Few+DOpqEE z<*!Y^=&?mb&sDGwv_clfZs=P3YqR2+%J_3?OqE=dMm1A1B3XSfDm+MUj8qiJbKc@b zHV{Ddy@=A=GJc{>IGCfHnkJ9hn_$fh4U<1OIR#v{KvE?EAgThBV^Ov3Jy$U}q1p2b zmENF+YE;rRJY-EUHm#jr_owYS5!WwByhR=!w{=v#eQN?fH_tCYzapFzo}g`r@enZ{yY%ZOA7_tG$&xVt#QEzu&PY5q#$ahANC-ThfZejCKzru%~o@XCL^s7&B0^t zwH?;sGm3TOwJO+DrWw4dw)Pnu7?Au2{`tM{F^z(?am=nWI?)Q_4Oyy`W3sH{+ zS1=^#jyHC@>$^C|IsKpvd%&(0oi67vKlx13BxoYMrf2-i)cjGDUWf6^^(B?U%sPe@ zrEP+#4@`FdcA-gpU{g35^FIB8P4$bMc4P=6X4*<{!y)`B^Ql!EJ}mR6`xI;3w8hPM zNXED1k9-v$DH3Q-bcQZKG8riC>dyR{kAso)tA0qYI<~1U7V`Hw1W@4p_YNuBgrkY# zk)2ZV+HYCT_sl>z^A^JT>d!wG~sT)!fPXVZWqy~q~4Mt(^(UAO@*bQ}$x?5#*2 zbi}g~0+H9nAQ%~}bLPYoxl+;Zb;-LUR7os`YrT;UF(-zFf2+W>;p1rehphM=giT;d0PG9`&qUo|@_iZqFR0J_;88?0Z&pIq7oVRXN07&Jz~6tb zE3qM|fCQy}kZ%Kz0*hA(ZnhjTx72m@-vdEG-x*M~QvrZp#S1^wx zWYO;JA*p-`PS0FziY0cUD*AFN`-MuKI=0s-WQCC{&Q>TzS8I#+@$@dAt3)5Jg+Hh&-f+wm9`7c``pmyZVMx_~ zp@lDAtS77V$S0-&S;Kv%gF5(OSy~_WJZ?#e|3)rk^tgn{5?-Q;5p-G~Uny%l-uYC9 zFR=?&u20oNOO)xTQF__J_S-n+ zp9rR$GP#5F)eINdVCumU_&~EoX@Puu>l} z((C9f!VcpRj{)~oG}`{m*41vo*tDa%e)$fw-=rOA9YT*+t;?1bJVj;@T3NXiLU+Lx6Kk7 z#98G{D9*9D2g^f}gHbjj3`;SKW=z9sSv#{dPL=zt6IgmlZ7GkdbXi| zv+%X1ZL%bgIIOVUct}UR3s{ppA6){~kEM$oK48=K7TqU+tJdULHw0 zgp#u|`l>QfE?Y!=5M?#lG7P?uwYnN770VMq*tSG%)~^Lmu=Sl(X*WeNNe+xPIfuJ| zQcfTq*g49D{Bq&yg+5BJ^3YyL7RytqYF0UGnmt%tII$C?`4rV#=f1zWa>7?y4+O*{ z4$!?9(z9Q$rijcYvizbs2H38`|(KYwyVaiS($`e7iq1UWVsr{?y7x=$K+cilut@pR7==&q})A& zNQqQiFu0KEp3Z-bEDDs0?lb83lOGObn3qz@bEj@S2%~o08a!+U&|ak}$3sd)ojfVr z>fFU8z%MqT6BG>u<%JP_$%}f#5(M#W;LHON-;^Ym*c&3C?9^5L$bA$S`+MHD;7bMy}AJ421Fe=%Swsvhyh>0$xoWNG=D^}-Gl>_@J>|h)*$gh z*f#Cc7~dnw+O@lp7%NXLRR~@NeKZX%Q*jd`=O3Wd4+_<4WWY~d-4NuM`=-%A%5%^h zU8M)P1<4?Xj-BukDoc)}k;G^yuMFd2fQ`Pe?5KwcRRva^>h89cmhtXsqH|(cv^|lb zxH{Ay1v@P&({08N;WaE?Jct_M5e6oiT>R!!cQ9kt5B1jPn(1uT+%@QH*H!{C z(Yn!-Ig6F^%b12$XAPqmKeYHQmU6KNYnD8MmfAQ`;`Rg@U<=>*BUNx4g6kNRe7|HF z%#Jp+aNz9}6|!B48w?m$76C14&Z3l@@@0q_d&O@zzgR^$+Zcrb27i^e*&!q|RRu0_ zYrg=xGiUsqd=9w&&B@IoocKWQI3>O#Q}n?_M*|T5MaJwkdP6x+O(H}?WC3O;53$E! zVZe-h3|c3JK5paPWgJqPB;Wl)ozbzT>6I_=R4*RDN(!2>7TXFit-lFTT4~dG?oGx= z5ZF=+tab-p&F&xnsL<%owreZmQYP_U8KTB117md{yw|$Al`xT%Rh6ps!tdR>vc|xY z4hL5P&TO~j+i-Zp+A49$P}s=4NGwT^FC!BSkZnzc1|Y!(Z;W<`G$<`*N}f}vmq=zi z?pe_TyXCYwtE5dmeQY8LkEqj-%ba3L$)kvG_MkguKh#bFi^N;qXBOskPy5t8v4G|spgqm1e+-#sX(o9Uu6 zs{2#)^GqeI=cUht)UA)f4Kqj(Uc_ED=x9SDD%n`h(rJyO{c7I)bc?m_u2bsG+|@6d za0L!~f{S)?dj!rSZ{-5$bi!_KyV@$RvzpOA-msW8w>tbso|a*Hs(vy2nH!L!M(=PV zXH*KaMwdOZbesr`btsK)f;lXfh;_uLkWmO4KT(qT@20Shjb=dDM}g_35*>nFoXAMc z<|2r|paF?UgSvu)=C)#3AeeHOQEpmqK_B1cPN^RK@91bN#Lx|SVX%N4-m4(mxe;ZO zR^cGVR2->6d=wR0lyp(Uf|}IU%OD~WpH=~ZfW{*H1^P{VO3U;(?`LgpvF9H?5!-F@ ziN_9dIlY0bo;krzyHd=W z&3&&7jr3EX?&_`wAj^j%OJqMS9+cm=y{Tq_nPrzGIic6B)_nv~&pFK~;1WZUQiB#T zmo~1&>7VE`^M~By|3n`)#wYhE2x!g)Cvbr#`xSJcyHZf zbh5lv*q(2t2OHS>jJvk_1_+J?6ZxTGIOOz;3}k7;xOiTirZws<7`P z;o|2?sXv1K@#`Wg%N&Kz0ZFq$=v@7GaxZ_&vvL)3LyDX;m_~$ z$;TX&t;&;97cQd`9CxjSNR8(YnPr~nhQgpJQ3-=?U;Tlp0pouRwD^5F(K!r@lZdex z+p^rRfKP?c*I#HDDtX>Gn8re1U0xwY!Jk7FIM>M*YCoL;U#jSW^I?tqB5M8QUW{rf z_dFyPN)(G3x~Y3=J*FEOyG5+xt=U2+*u$bRM1Zcuw&m&L_RKQM<$ajd^Oyx7iN@Xk zdN1`#V~W$+TqM{a-7zFj;gMV&*CAD3DDltM&9+H_#PQ;wF5Cu}kcGR4uN1!)ieic* zpJ)`TNnS1!P^WM9ZkWMaAXs>`mnY5X+fHTQ`+>^R-hk2`7To5!dhUFG>&X6qa9;G_ z<6hrE*|FoGtXYcm#v;oOd++{K7=z(r!6x)n#8McpRQnKdVMNdE^N!f)!bry!d7q(1 z6VMjFi-`%WLz89-$w#fmmwI!r5Yc4}qtV4v>B>>OWd>{nX3Qy5_uArB9q8PeDnjf#sJEk9>#kkz@;RvGZ{^HKp=R5yGvp?5 zT=5toyRbwr0^KKUq!PfLnGZ+jaE}%vc=IkkniS%k1bKWo$e#>9!rHc0f(W_!GgA#8c zp(cDk|1>3t8^&fFAQUFPeyGvK%1!ywsARN6Bsz#h6WVrTX4IOy+uZ zQtV%Cz_Hq&IIs4_AauBX4?g?OBF60p><11kW9ZGav6_lp?+HImtLgn*Y9kvYvk5EV zwia-Va_`XYRh=Tnbqd1e%snjd&%%{jtH`HHvHy0rM{=(C+I{}6uxPooMQJM@?3dA4 zFrn!@+Q+I8K!c^cJAh0^l_=APCR3bIPNN(ILl-xl{ul93vZ$gaeyYS3j(mPK0?End zwFDm|>p;tp?XM;`m3qF)9EF>MM|9lF@3Bv=gFd!Sco9xC;b-R1pq*GQ+$I{fqQstF z4ms7s*@)ZHP7yPICt1f=Y0AyrqwM=umAP|sBgIzN5CrQ=RJZHvC`(B3VJ9BP*iypB z`Amfd$8=`rm=xO`@)Dl=5gq-?66}c#17+v*IniAXxAA#Bhd!m3S{;%Wzud1(ZSKx3 zIuC6~j{f+57ge2U(}9r~OPvjxGIFhBm8}r)McCFKZoMlC;V^ySgN)x*V9}oZDc5SS zQxs#jX4y9b`^7uj`Sn>N5=1t~5*wz$30Y5AB0ma4Oc5#JZY$?NmOSMGC?y1jrD!-Ikk(Y8LZx4GB|mh? zuITgY+EAzb<^gSza7U&LU_DyH&TCy}-L>t7KGbF4sv4OVqrstZ^|X-ryuUxUrAy4m z)kP~l04&ELKS^N}p~IGzFcy(e50Zs{mSPf0a7JGLH56nz$sv2`!%8AQA3;<9={&byA`! z>xbajoSxO+97jauzkKAy&NamT)b>hB1O#&jx$L-H2D>)r_({W}|D%@tMB`>`ToOA8 z=FY}Rt?epr{0<5vA|?81(lbP~vL42O+R&mKr1)Q0u*!{ zXBgFt57W|&pT1M9iZu`AuWjDef4V`MEipaCqEAQ+DsoT5Oe90mD@zKj4(vDJ?X*lb zta!xd+N#yQ;)Rt?iO2=sp98;&oQM))c)J^=Cv630?3%SUNZ%c)d{))byOK>1s*`0g zGXaZ-hr~rG1jjxsea1nS)bq96N%~5!;q|6cNYVSz9G(vRbOd8Y!tKPiCHMw~R4~fw z&I4MsvZtj7rgKC}*m_q<)POp(#g~t>AS}nqGqyh6rY=7ez7$Dg?vHN=v#$lf#hzxI zO}9)$Se3A)8Krq*ddn8-B+F_-{ZyrL$POGUw5VT5KvkE(ea&&!W#^eh6kQb{`6aqu zveu4r?h1m;8Itu=L2-77NAeb%ocevRBbcT-@EYPSEh-f<+0z+qe?rWaUUC{wq0Kc| zmX%Lc(5!#4O1t&k=8C1pUJV7ohC}M0G`uCt(-jSESZ6;91-0@vw^ytPW*DTkQLr8l zWtp5&|jb2zL&|5f0a{cq1S1&ak>jEurjSnKsG!!V*WQ7&5OX_-3I&~zYglJr0o{oDE3 z5s-V^6S$B@^3@ZlJ4`RoI4<>tlMV?i=_l%Bt{o0GO0cNKaBg#XgFFMbHHdFVFSkV( zNO;8D#(ShQXTtNWPE?~57%&9xa}JtY%y76A{`JNUlf$mnGR2TqMzmKuM<7?m4Wzte zHL7Ju^x)FE#L8xi`5-&>FZ8&ln#;u#C$l@Co7;GRz z$$i;Js|=P>yk4MFC{eCJfPS#tS(0I|5S1+fkR~pheF6aOLTz#YG0n7plsyP$aX8yP zJkZdocDLi9*+!4~Z)mFEyJW0k9H&`&rW%us;+IS?U;a7)KCYYJ7aZNJrE{-0IOr7> zgeF?EF<4u~nRH+KHWwGd&1!1T$Tsv>tg12xXn5YP98md-Jy?jjyt+(tp|%WIBqTrC zU`!Xz5O8}Pr+d&Nt_`@p@m)$*a!5zirl5D1q}m8x8uSx90Ed=ew1o0dw$G40Ur$ZS zWZ%l(LYfi@fD&c^Yuu^Ow!=?zZI>k2p17#Gzn^K31HjJek{h#8?45Hb5|xZq?SObB z&>k<1l07pzI(pjR9?#;;YkS;n9%QIPsoRQBkAKIFZgLbWgkozW*6wpyd@1TB=XQsO z;jx}IWnH$oO3}?biPq(|a@N!ywG6IrezZ(7_c;EW|+GqeSWsy9!2|3Hc-n$k4&)X$IiRrs$@ z8?ltUMPr}^M%(@cf`Nyc(@yMzWd=om5{Pafn+vx2T5gZv(dHy7%sukKb;@lDA!mGR zpB@jN_D9k!z`a80mc-Xq{AviUSmVJ(8c}j;r?f+XU$r3oFUHQXIkT|a)=zBPww-ir zbZpzUJGMHu+3DD}ZQHi_oZh?Y?5b1e{jk5RwQBr;`>r+T7}x0htUFj3ImTNFMAMD= zm5XSp=hq+k>zApNfqIGAfm&UgP%_I8ZSYHCGw5oX{`R_(G0YrXDXS++&+IkzVW-3I zVKe}apnrcWtLAr!1a6FnG?l*|4-QP4 z*Kj~p@L?7%Eo*hbyV)C7fqUlgXA~q`K=#6?Y$tHFHpx6F5H-Kn(yV7|(5s9-Lz=@i z`7ls(-_v;${ucvCYJE#uPEdt??hod?WSRPy>%@@DO;D8u1KPBee;FOGq}Rh#N|1%- z__DwGZ@ZKPIzU6#&ar$Pc+P?45?Jw=tUGC#ht;>n^Oam5ED3qTzBux(fFbmBs+Ozk zv_p=o`v^@W5RNY|eze(&Tz%NiBRU%jth9pD#RKvdsa(&eZFdowHr7Sbk|}haUhK$E zY1a5Jd-3jNm>*^0w z&asoXu(PzH^jvsS1t7CL-nu1`ex4a8%qD`AV-{eB25rE&xQ|xt(D$0<6|b_K#h)LS zQe*X#wfVFD{t(XZ+=t^!($}Xear~hTwxgCjkJf>8R&^W9PhZCSICkjWaCS>Z(o1{k zOWfeuA!d%JH7hz}I-NpP96T3EGHq-7(1kd!`=PkPu?8Y3n-tm(0`J|3e+7kzbA*l! zQUd`ohZy!=F3{15nUP$D^-DXa@)uM$yrYbK3i}dkb5-Q#E{;+M+<}`JK(}5)pbi-wVi%85I;!*7EDxt+n6z zdUosqV?|q_FsCry9%aakEV)9lS4wCkr@1z8O7@e@G{xgV&r`;;8sq=Kfq9 z!`AHR`-_wgpSU>ukyL>oK9C*Y-XXusiV6)^Ox@dGUsg>fit)_PGTr2L5CWGaEwsfg z&_s2dqi~|8`)%l;yearRa8xAzau3H_o=+xSa81F(e6@l%q7TD51Q`z-_SBN9wPZUk z?%$)ao%(Oz-0D6-Ngnn?G_3%dR4)wqpCkX^geKb~h7Vt@Wpp7l=PMSi>`J1NBZF}la8^FhP_uiBh#5KEjQu8Ph?ha@iSumIIM6kCTYP$Q>{bPzp;OD z^V}T1hNvsWk1e;Iz@zzDx!KuAk{T3puRQ*Ahq%<}L@SGoTL;DT`Yh8aqAV^?soSlv zWvt{BgIxHg8TU-mV9X6!loL-7;Za*_H~<^^{QcjM*J0>R9X1wa``~yLVh*3&nMx44 zRM!OucQ>7XTe&?UFH}ou(`L8D`tr}o)Es+9XoE50YQU0Zf@mq zX9_K{djH(yZk02mHjo?P=Yv9U#%_yyW=H?I;PMb$h<}hbYiCtoY0TuEKroZ>aGDOIvAnCE3)eWJ;Z2(ARa+}!jgxvqVoTDHfFz9$HKt`7RfovG8$=F!5}E?Db}gTh9< z-kZA|+uuBXCRXF>=g!YMM@;8Uo~6{@KzDVgQ5pZ#v;>(qhDf@AQSIXB{rZw{JARmZ zYl&&&od$Q-7SXEDKJVMX_cFf(!wWhIog%yR-gN*Rm= z$ulj=rT^y0qQbsFj65v@ed?nW3td5QsG-?~8T~zkW9h!FneP|BRIVK>GXFMa+f2l- z4N?9F`^PE^_UhU`VJtQ_$fQ2+>alTq>G_rKU7M&*9iQWbWw^1mon}_18A_8E3&-sW z!bJzxM;Ii*t=C_D9!uC`Zocj-ZP zbDN*OU!r%G0>05%ne+jG@f$46l<$J$GUuvb)pLpxA&&&anp1K&pwI}z3sF(OdR6+I)+v~C}7q(rGkoe0S5KDKP zEA)rH;|w1gegj`^-uaSx>ef%=h%q07QG`0Lj224sN4ho=J;-3}$rhrf(~5R&eyOie zg(4zbo|k9$zeVimxAr02C69YCval8Mz;3g!T$^I6TscKePj~VhDkdU!uDkoB=$WGG z{<0UH(@a?WEqJ=d7ugf*US!UO%F%*Dt|OGejt^^xxpenh%HK9xm(kLW>7nHQxTCrc zj{Xih0fUf2S<1n_TBC!0E%5sq%iA=;SNz0CnS_ zC!OszIV?ZAnfGvk<_@2=C3@^wHe1UH|%8n8k%4}*p4{^%PL1~$s_;p9m!CxU? z-d^tX`lDuYhw62_1&lh0c);8D%5)&+pLb)@aa)zF)FNT8J3`9sDq;_tCFQutMMiaO zOEP?n6m+|2mIh*z-mmH3rm)=5=rSurQR96ZprGxKX3644qOdz3s#yZtaQjz43}-{0 z)O5EvTJb|k%+c%Ob|gpq+*ID?clBF8t@i<`t!z_Uugf`~t|!QHacrD_=tYF^@rZp7 zG5Y&Z4}K9#k>z=yEd+)3UI(w~%FIjx-*S3E9L_uf4xe-DhWq}NbK+u`_?XVt=$sYO|$c4CcsDwC3Z$;w|;^MM2Oh3P6JZ&s5b8xjw+ zAdH*+@6W)#ewXyfS`PQymQqJXS&Nd&L%9vYppbid(5qg{@a(>L?I9po{r9TO|4$lV zXZ{bQfqw`A*8j^BU?t{Z<@q1(!2bgpU}j_I{NI8GnjloOu230b&^_!5q-OW8uhlnc z6rst5;zL9nY2*X|7=4YlorhzqXH{;r49Tv}%Y-}^RT=49f zKQ8Bq(;+lLAVV8mTpS|-rc0)7rfqEiUENN6U0uF(c=&eYR{mEaD9T`g)iE5<;Hb}N z(hG3Nej+<(p;s~$1W1TKt*cDM#jCKNMTY!$HX8hG}$ACt#RTyKK5YWW{N4(mBgUD1Np8&*3 zRM0S=PYqZ~7Ci1vrI4hBsi|17)7?oBm- zcS0J(gM^lMQm;ks#6rT_Z~$N1yBf$Gh8*HJM+-!Yh_4$;9{)10>;^t`ayS=9fau*8!+{>PPgWW&h{zDO`A{ zTNfCZd#5`A4+I|t?K4!aOX`CH;V*Xhfd?rGfo))&t#5!!zE53%J)^L2!0titjQ`0TxXAb4 z1A~HbMLO(VkLsN#0mSp0Og&&C$b!Moe)!iL)AL%%ryvknAW8=emSEb^0oDt!;SdP@ z22^>!p$B@@0Ue}a8K0m1k<-78KmDPFpdz|P43Z_^+IxvKgb|)wk!OJ=xB)<2Lk?!> z{r%e>eKYP`CyL^NV74_2`ZSK#PMgAAjd8V2l3Ux3gL1TZ@Wa~k;O`S3de zs09662NtvgNMZ+|f(nz5uHY;xYQ}HUlvNlzloZ5J^Q~^_D*%p<;qNf&zmH zGg5*1J54S@-w3`| z!kNMC9r203FbII^^WUd#8c-;ABzO}T0OSz;iA7a5LIN!K9038w0zI<=`>qXtPPSR4 zmsrNzsVPpFl{~s|Jy)TyBo8G26eWC4=v+CyC47TvXyVR^d3;M7f_2&2gsrjLSTftz zHD{dpykD;@t-jmkwJ1|xZ7OY!$nfKq{KUL*6Bg!;T?vS{izgSQP(ED@&X>js+zBLs zslT2x>V5E2TH?UF8J7B#7FMKa74NDlx>sqZr3tP5{%+^&oGUc&hz35cMOV6opZ3PS zP#TS$mp3vEtyeQ2Y|`Fpd_aC+!L-xxl6|V_f;GpTitd8n7k;5T`&weWNAt9{XoXe_ zD#LWqqem9|1$alTMKpKz$pSFHFuuO=P?GGWj}70DpuEa_zgLH^tCXH0m1iAibin?^#F? z6PN#uzXO(~iH_sT$)ahU)}%E0K3|+2CrI#nPbRVSM0S<}zLM#9ebKj+FW=}Odi<{5 zSUnO8eL(eYP>26M2qZAA(l%Bt(Y59zWk&J+8PD3Ig13!+HgiD28d@~hjABVJJ@a9_ zZvmG^)b~ezn4g0nKs1=266*#nOpC)oJ3>> zRvS*K0qpNxoF?jeFyqZEb`pCzN?fqFHZ@fH}?xhfU zsK|{wUS55kv7S>n<|0V%zMx^lPBRDoPCY@?o#QqobRklA#%RjkGr!iQlM>YtAzlTP?CpYwt}wjsPfU6nwxtd4V*GX4jhi8M_htdJtzll62Mg0y7rWWQ zmmqWp@dRz8#X>aIj307U6vrIF1!1wmb9S>4v+;)Cl;bd%eo=Rdls;CNXmgLpEPU0K zpoz=qbfmB!B=|=S4Fb50OvwIZR>b~8@PJ-the0B zd{P*&)cc)UNnaT>A> z6R3765%0Qz@XaT7QMgYdpLBOsA^{I|?1<@bPd}bAwYGM48~HPL8oz&swy#3ujOrVEW9lX9m?E7cEb^eZm&;8O3&X zm^2|1<7!232SLQ~aMJi$-suutC!WNO5>JR6%;`X%RGj3wHWzM@(1p#WWdNi3kr7{a1Hk#QMPd`4mEKR=5Dyg$%l=WacQBE-yFor%>p6f!_S}KsoDh+Epv+dQEDv;n};sxc3#@ z-b@3J^gK5IQtx(of5>Q#)mx4;;w%@ajm${)M(-iK1NGc0j^cot72&K^Zq) z2UsUVhvCD0ZPae#;`!cOU7)$N%gxxUL-sdm#n3i$*2g@~VlwWZO5XaKlysXZOzlyn z$6?v#C;+@q<-rM0Yd^I-Mota z89zjetKu~FJuX{`v1~(=?_OH8SakK4(`8d?z>3=7(@A&5pg2 zFZ)}*!b3DYYENHV7kToi4-c8S1(gP02 zz#N`_OkYz~^PdVJO(~SGd90n))s5Qustn5V@uv$%=wp|y ze%UASGAhXrw$8-JOa&ATvblR#*|%T(;of?zsNe1jKaanj7}C5st6bsr?M|&pdhqQ;NJG+y3K?CYbNU`6(MTt&7l_WrOJtC51W-3K}##z+on9^Mc#j3qdKdoWogIF$-0Q>zD zx_mS+qsFS;in3WAI7o>3*%+n(e1@C?4Yc3Dp!&&6GChPiLdAHWo>rq@U*q@rTU#rBluR zcfU@(j+1N7C_!<`l7KA}@$f1t@{)Xy==cwHnOWkJA`c`O>e_h?gVEZlXQr^@{dOhP z0+5w>w!fmAmSo>4S}IbDK^yDNgs#d|(k<#a+@$3do@`|v2j%msezEvz>j1_sH zn%DSZJo!T0jStq|lbF)YRTPk+^N9Hr=VHXmVsT{h3Mh4+F{r|`ODyO^-;!W^3NUdI zYvCeC1XBci{FvDK!z$`+tZG7Y^xBKDRI@GD4(YQDlqq+DNP`C96V&^EEKAt9z!z~% z6vmtRm%i>H>`O32PELW0Q!AS1CAkOkXruUS1vwt^L(PGuih(Uf1B{+K(wh<@I=uQa z5+*yFLRyT>wRHEHisSlfS|n2o*zzaykJ4`Xxk&wfsjDcUY;^fg8)2?j!&J{&McL;m zAMo4oomT~`!PazUo*XAE8B(CxZLOVAM{XtM<~7ND8d8c|qZ}4(I0VY`eHGr?KXR(_ zs~YFYUAVT~!!JzPI)2&^)qH6uAU4p{4RR}SsyRtlnLdON;BlVpUh^si-L~PTfgd=m zX1ATdqENg=cs7L5YJK@m$ct7Q*v}+fGIMr9{-#I9Nv)fh?4H=}$|-RQ)}P$(LMZt4 zYlil9EwEoNK@twLCxk`>O~1gzt<+e}=x`mi_Kt*T^f8W;duH=+!swS&6RQrl!)(m- zWerZ(X(yB3cDoMQ>6L>EAib6OeVMkIiN2k*X|0EKANpEW#eR8*?I z?(i_aCPW(xTTeAo4e-`a!Y`bOgEl4#Q_bM^k0jD{)@Rzl`7Cjf6|w83P3oSs#^jim zQa!Jc>7)Ur!R5MtKLC2xqh9xGWFECu|8|{OB6Ra%rOtUbTwe6?JO8d^y&FC07TeAF zmgK*<9^HH=w#}cfbwN$RQN(7O2oF^j!;7bfvZhGNB&<^!%6}ci3Wmg~8<5X!7GytB zv`Ir&Zf2~~Pm~=k=ze;QALba{6-04Bkq^jgtQCRMp+1_A4sh`OE=nOC<6>X}tRfGY z&|i|jZRqs)^mBw-fGo6q6h7JMmCKN7NlSaBPsF2%uyH!bBcn#Fn3v*+WmJ!M5fOTX z{jMQFfhn~xyFO>JVHv$A$NiUA?lHr=8-zkY(tK7bJ1u{(?ir7qb4uI)Ng%vfXmjTA zY~7`)NBpyr&mt=}S?C=!(-+2dxz~LHn$3Y}zvl(iWTn;CV@|gJ)zQPZd8ZLvb?r~O z87j;Hry~x5T8f~PD?vk0aOhg(zmN+QA>1mOOMi(N&!t~vTR5d{Qh~Az75)Rs+Q&=V4P_lnm|xvyXP#7%sK;AOSa(mC zWTvdvO*-p7>Utrg$%xW6iL1efyzVcdYD;2fXlmZH`M%8!7}pU z_O#GMNxMr`O|&4J4k$~Rt82QT>J^w!&Izx0wXyL>eMaK%}3gM7{5 zPKD8MmeEmMKYWc(>S}(|eoN#~JZos0 zruOblR+yPN+FkQ|Vbv{qjfkb9Ca*LTjL|#l;2)MaK1|2C)TxVnVd6A-_%mQILCaKU zpGL~Zj{gy)&C^A>o|^XL*e{D9;^$}+YhB7V=C|2KE>sX-^3c&}hz@TA<8efC?Ut}z6vb$oWvGbiRqxr1JIebR zg~)G4Kz|>VruZOnEBaw3?N{pPt2;=ma@@6$5rZx%RIV~|>rN>4b%DEF7e3UZFeQSQ zcExwFu6gd5kGNOn8GHta*3l%Ks&$k58`%k~>6iZ`aiz{LR01>j9`VUyWuX>ddx(Lg z%r)<>sh8Glultz$9Y|>B+DJVRdYBbaHZw!n!u+BrB?P0xVN;QamCE~+<&Yd%)NHmG ze)x5XhGM!CO#wqJa#5fQwn739rrAzA2cE;fm509S`zh1nTCx-4HiNJwohMtMO0QvK zM|u}d1FM-ijy$D5=zB|lnpi&3h+JKKEGX~V{)eM{JaxCzN|}Lhxl>xSraiIE@OFB}KF++x{)Z7iUbpF+ zc+i-cd=_E0I5v@XCr#q|v4@NLFrF07fq~@pxoEQA0Dhm>HTEp4wIqA)i7KHV`mzi$ z=3O1{s|}E|D#zL??P103;6ibnhW1F8Z@(R)JRTP5_IK?@Cf{7^aJ{iAx4IcV)EM#} zcR-OfdL=>2NQGGLXx>_AO^i;JpZX>fA^Rb$OEOHgT+8m-o6#1D$((@x#c}?yRJo| z;ZeL}aEhz_-b3mxH?j&sABE#eg7M6!3KrRK?SEZW=jDzDJqMz4p}1JhKI}#g)*=O` z@Ry;|N87xrgLGisqr*O!0u2(S$(WY84NV_Cd-!N_tRO*PYQnRS)k?!wHJ5%b*ClxP z_gP9Xp!g?AM*LpnykeJZ3No_mV)XT40U8De%m-ulb^uYdK$xn{Y_FBl?n?hExx}T) zet3vmf1TK^2%~iLBS+fB&_z`k>W=#5mn6 zVyVd_b0-x%(dSba(psLh>*}poKu*!Q2r~erDcjq>m@PeK%2%t?d~b?d|5^`H%Rf(( z7wub(iK}FA$mJvDcLrs`9z(AW z%SRTM@Wzu8_c<@SFG(ncAN-0fdmt$B^VtjO(@gFLX;&$UQx$`CvQ5+`2p&b$OgI%2 zUGElWclFie(M#>bWFIOqo8{Fo+Ywm5yeh+&m+QsijZA!2&I&)wl;$qb>_3bZEb8F? zq01_6Je2tE>(~;$+M1-otZGj`4(Px|#}G9owWOl=lfKy&4N!TgKBc+?Ke5ajbMG`J zv39n7y=%0BaF@%K9R9T1Fh!BXp~K5LspJAE@}P=$e6^Vnru0P8&ShTjy`6L~I@i_t z748lKq=Q;G%B2fvwxqk%Yn~oFF&2I#t1Nt3pq)hFjDSKk;o_~}?`v7`*5RSR9~_0# zp%I}#guPkJrx1LE<+m`MibJPH&NATt5p-)V@UzN+-vAP7ABJ%qM^lJs#V_h`p&=E1 z9NGN-R0koXT;5C)ZTFsgU^wb8v)G)fnyZ9Q95qIBUCT-`9P`yR?Vn$H6TTbxVpyq5 z#zA#^Y^{-&eZsm{QsS+)Qlg_oo){5}VK0kOUMZpE`{NpKro8fDK#Wh28S*mS>T|quEe|&6@G9O^n8Dcd*x0{!~@2>A?lMHp3Z5h*Yo8WIs{L*rk9HO zg^23Lm_miwmjeo81lXL80+qyT^t+{j{n;49GnT%<4lp$fpXNlHF~B(gx0b;t1y0d( zw2k=#PQu8cTJ0?dNa)Q+!X?nTn%J3S< zwT!vVj(2++c91*g3cP()Geo}yfxPp<$Hn*Q8B;4cTxrLl{^a;Iz5|H*@9EkMLchpQ zR?Eb!82;6zXN2iO61l`kB97Q*m>`+c5K}yGyn1fSCn}t&RNrY@9okubUsq*4q{BIbK+LY6AKniQHcrvty# zDS_{7CBM9#+G|sKS&QCvADQ*=Xh(g@<_l3Tz=27KBusXYA}Eey>(@Dw!^5=aO^o zw7TnX>Hy7FsPhn$s;l3uY^{X8Y@x0gv|_|}WMi}pLs6Ke|40?KoH4dc9u1P@w6eTm zwMdCN`t1hV^u2$QRvp*ALSSsZ{H=^}VEkix1mBV9U;B;kH9$Hh$8;bsDy{2S5QgBw z%JLePYQ^0p|2^uYqfCn5zSz97(5s~o<*zGr$U?txIHZCX__^MW(aNJmY8s`Nu+&AX z4Q?&G^#esgO3aI5h)dZ5_a{<=tr-rIQZGxPA7b)8b0kt+Y>c6XX@Ym_Xq2N=Z=^ld z$pa)EXmC04vBxVDzju%z*RJuR+Th+C)vae8Q^+&0HEX0Uy3DHF@D-n~3Q_%1gxn&y zt265YgThQ)uR;y>q?9^!+F?rUk)=mGCOE+6Cvrd+UM#fn6kq9JDn zw>BzaC(vpTdcBpodxILOWC_$cRtv1Knz}xfJMCY%p>h2kpA9GT`E4{b(=o3T|If(! z3ih!Q%_;xS+++UBu(OD%o0f*WI^ycR=Or$mShFFX>b#0!W5z&6mLTVTXzr0uDV6d@ zh;Gcnpvq;t{tkgwt^&k~Q7l6i7}8+!rTv&&0ovYSeZEk;m^B_Bd;H3K*#wno17v-y z?2n5X9i(c6+F3+6upRE!mn^G<8(9510zp4=s@po7TU&Pz>>**(2c50hH>4}h`~01g=<}h@)p}g^&4UWA zN+}xWJ3T)AIvOCk1vPEIQ2Gi=D(F`|7E+?6qunDuyi@=ESgt#?hfreF?Fmj-iVC`mmEs_e4C1 z)hm^w-nl%`|M~ad@OGHHz?W?Y0fZA_splzW&119vN^km%E-KNn^Qt8MTgB?bQ`lju zC0Oet({G%dEShGu({vhM(k52tV5U&%LkYdT%Wq$>}Jio#&x-$_)0{re*ui$*oL z4)ia|atm9G8L%fU)GbGU!Z#`}uKbQoXG#5RCiaLoFDM_ZjKsb5>nu-<(IK$Ubjuau z*3l*~N14R|E)EK0ITt?&YVmxwEwwGt#LH<=@uhzoGi#{hZ+3ca;MydUpOqW@1=rpL z@+8);lc;mqof!}nxn2+o^<6~D-?^*tGSrb*SG_ibXCj63*_o7}LFwzNaavicJ9TF0 zz_3^q?khx}f)|Za9Mq(h*ds}d_e{R2d940aERk4Y&vnDDV9^s6U)k-%ig4xnI^oW@ z3LC8-6lVBQFx*rI%{3-lmaMwo-c4H9K?zdmInch}jzNPtg5=}Jq%jG( zNnWm&41m}#9MDZPAj%u->QDQK8d|xI!|rvT&xai;|MO_RKBQyAiy7;04T8KvlG7*Z zUDwxdPeJ3wU2K|q@+xrX{qs0 z&svhm$kb5am;T~M0ZIk0$_CXiT40Vx(nkKldW+;rTe{~SO!*(kAF!_Zwynn8k&LNO z7i02J)4F(|(~c2XqKOHuDdwJHa}8AILzUVb^?^9!sr*H2+vkuTVefavGE-i!aITJ> zuplY-83W5!;M@=rEU6%XDNYXKcRum>fqX0W6g_7^O((M6@3HB0FJ>izBPp$qxIbZ4 z4;b1WLOAFRRO_d7<&|STlh=m58BbB3Pnl{~2k$BmXivFdhcKlb_6%(TUN*7d8e++F z09g9E&@8@}L=s`zC-gldw3F=fl3gqiD|VI(%5()wT9t856l-Z*lOUBl2j$(vt?Rt0 zQQFd{L5I%Pf3dL80XPKLoDDl)rwVpTT>(PzY~G=Y>0L^A*b3L4#FNlpHkh6)m3B4v zVUS!r-PQDe3Ygz5g1j)vy6~cVof9m?VHoyzu|kbElBI2%u=*JGy<+j);SXb2Ft+Vx zGNA|DVXwi0a~IH*?mkvMy4mXRT#y%{MSQpLnp}%CgNp{QoMj|BV}sef@x$7PzdPM- z|6WrlQ(uk2NruvNAKrMLyd-lKRZd)$e1Z!<1=C9s{Dkx9?>gKKYOa)vTES2@;;SyM zk!M)uKJ?m77bEtND1~?!C~uZF@o-S7GfD6sI!?e5ECn;~EIf2osNs%(8cZ1!*E8;S z<)~)9z_?I}u_!f$%e@{*$k~9VvOeOKDC;JYAe4UkQ`bT+y@&HH`x#~}0gNkPmu!dR zlbzoh&HO=RWvE{PWD{!)(Zp^Sb$a;XgTuk0@;9S8R3>CQ6Q#Y5gn#JA5P;Abd6gFL znqynKs(%;P>6QH^E;+D1#G{o58Ngt#(`jnaav`)Fgdz<0X|+Agk}0WIFw?hKsx#KC(z9~dt4@YG|JvC z+pSI!njc?a6=r7FpiFrbWFmFV@L5ZvXN(8v>?kLj1u ziIYABF2lGa#jC1LjgO-~bu3bHP^wJSe4CL@@hQ64VO@+$cB7RynNk2D4^Wfe$vp2d z=jJ86<9p0c@UC0OUhB-S7uYhIq}H!g62E+5PU0AcsJh*sLtXW31yvC5ZEl%n;;fHq z9lf4o(5{_(@!V98#!QoDo;llGm@}9m2clRCbv0S}he^9?xK^ICz`0804Ays6UPGQG zlHk1Ov0@HF?R$!HCT;-}+gk5v5iMg!9K=@1TaTrl>+N;N{@kZP>68qx9@9)sa5b`6 zRUASIVKHr}wPZe|v_zb~z3|o|gR7OS3omB;XKiNt(j@x-@XS zTg@6$!%b2;B4vgJm`*GhyzXtXJzttdAo?<5`H94%L_i8oq$|#m2s_lmd z=Y|i&MAE>*VO(&E{O^>+A{o+wrMpLVpXye zk|lncSC%~G+|+b^yZP6$`y@%uM@Z_<3lD#3%YSKla+Sm}GQ(HQStI>H4Sks?T`jg_?D8ZL6)E`VXKim0M$aE|lx@2(FwMbnm zv&~^O#~&%B2QaHz?Xa=Kg3J60O%E(44guB53eDrJI~(0mi1dpZpv3v5MS5BXR|0lP zU`#7c;&jqTBzc9eJfJkosZ__AS}9! za{ot%BP$yV%m21YDW(NNF?*w#Ax4zAk6-HGzq^#!<^R0{4g2(h(Ed3ccmHX)L1>3h z+aH@b*&jf)8w|BslYfJ$N}itIrNm0=Cde!v%n&j^0(5aSu`|3tjA8%MPXf%%IVH@^ z)x}_8-E1^?cl{?L&@+WBuxy}^Z-_vQr-jfoYUMTuG4RWF0idJpYap7d0Q&4sdfm>+ zNr1Y!c`gvf)$t!sFsoH33+!K>q#lttAC5FMJ-8^Xp{XQ=?lm3w2A$7Y1X6o@>o^C@ zK}4>D`k|AR5deUttX3EDxs5cZbO&%ivDxHTtoWzoAGbKWxgDAr-{0OEve$VSxjHtZ z7Z*TzYIbOYs0K0$S$O30?AC;VL{UEX`u{KyD+c`0(dzg#(Qv7Cd}4Nj1nq_7wP7P3 zg~;B6WQF=;{uV2`U8;dMffh` z$6~Xvk<`GFz_RJ+(KdarfY&sGiEm2}?&3#2JP&%s5_Gb$$j8xiXDao#U&cJ#1-XAi zs;!00(D_^nY0Dx@f*f7{*QG@EorhctbJsG3dJ4O1Xl{PIZv^(=T}o_pr9I;nKL5Iu z-0MHhAU$?Z4o-KWYXMv!j}6U$ARzI3YkDgfNcFV6kYJu50WcO>OA~OsY+eme$uHr6 zzVmRa#j(6Yf;8xEXrdDOjl<_d4><1e`~ETo5Hh(y#pkTt-1gk0NlU0mYRjcw=fwe^ zBBOqIg8E{wW`Mv~;!grnd%|MiKKpKZCaAMCf#JhMZLGv_P=Fah+dkGWB$F2)JmASc zH5l@CrwN^)R|O7S5lHC#%N)_1?UpGOc%lU4JpwxP1OMLp>kzawCG>g|S% zLdYEP*uM&!4vMOGaBXc64#juOa1i9y2;`=aXZGQS1d^F02w%642H@!92Y`dJ80@i6 zP6F#CzfU_O8iX-K{fcb`$Qt*ca0N(za_xgKOMgbUrh~{P_MpH8NS|{VLoiDNC2V(j zzG7EFWb1oS(xW#Wz>i6Rc!6!ypAv?QQU4{)_e9`LiobDzx+uNH_UfwolQCm8?Lbe8 zfBlo@UjIq#|0PxZm-JyU2qvKS!UZas`5C?1n?U&-w|n$<0rFatxa%UP>t7ZSEbC9^ zXk!i}MXa5f>_g~0;aQ{6im zOl8v04Y^}TXwwIg+P5=rD-SRMfLQkl7G(9sID)u5KRz)B3;j+8YTNJ)7UZ?|3DVcT z_6^eaYvT)~uW%I@wi`~ca5Ij-tBUOD_I(?S;rJ>CnSFU{VDHEl*R!>29Jk9wI*Mp{ zr$g?Z3e?O2{^WIMwz+lF=KWmGBA^c`%E_7_dg{Y06C~Em6bvx|xwz#`KVSlP1&UH5 zI<~^S%H2Bra`a(z2fAs|8)EkG1QONB{%ca`6|{%jOsohWAcEP&wf7gQZNL8a5F+%C zf#TkHK!Rqxd4d9uKKaVRZ%yQyeakEQzF;vsK89DHdAh-Z@m&3e0)9DwAfLjpi|S^2 zFdx7*mBZO})L?ks^wn}PGKz(uZHnRxy*A zT)M<`v5Y21l>`fRwZW=wU`RLtW}%H;OQs$sXC8E_SLuZTNW+b5r95a>hp!(8cNGG{ z3)^O>|GT^3B75h;QJEU;B9)loS)T}m!$;t_Y4KN-V$LWLQ;@Ej_7~mFLQ^PV+c4Q5u(CEp6)j@iR^dORU>eX33x08KL6ZD zpcA~;mP})05-k z4~h0-ef|Prx}Am054T{#OHQW3dnn+p_Fi(?H3bleTXnVU_?=7+#~X;Ffd{%+H^+oI zH+6waNQy84Zoq2s5r|h7T*O>xdV6I%nI3ddHXl&P`nS^U&G^UU%3Cphmfel*p5*?k zd7w4cSG(IJ-ghl5$d^2U)IEYzfmG}PSJH<ezi>1&+_+{65SK|khi7#OSZRUn-|CkmWP29wA;o&QC`m$>M{fbsHs z{L=5I&e_<%MM5FN!|Us^1tfeX1$5PmXtv}TF zzASQ0bOVL|4(grHop5GQ(G87+dFAO*xB{GU;Tk(T*0T9AE8R?_sg8)t`_Jlr)i@?C z>w03?E2Vt>rGa=*#-+b1avFy5b?}>)KusEwQ)t%X4Xp>a5nxIvg^tbq!?z&d&-2U! zCDEoCC$%@M*Gyp0G$TcY%CXiWZl@Vfu1iWI0xyOuM&0uJyik->TchR&;!}0PG7_~) zLK=X_01ASfEaojkLE93K37lwS$Lop~zuOs7{qPryZ4aB%6o~|~x-rj~#duhJC%OFh z__4THYPU&PVSX($%~IJ%XDO7O!Q1#kOh(42Pmfv^;OMan@}hYc0M zV)tB|qUJcK{r)1>M`|04)G=LP?#>KHaFC~$_N;7gnc=EdK!vo5AlyPSDqoc zZQ#II7*kh)?Y_WKY#B?KnQ9hq*jkNFpNN=FH!pIyK3a_sm*F`!_Vh`Ey1+Z-ADK{u z4@H$E2bLZ?dS}Qt0`Df&BIW5)j$e3O9z%ReqgD!@>1Ndd-MyvE<%h>b*@s=;-Dfq8 zzX>vhi7x+K(N}cTr^%I7>@Q1YB2AnqpGZ8mi-)fQPzJ(B6n0Ip?4=ZZjlTq^?c(YiIHKGJj& zBLCeAJ~}Q({UQ%fJanCHDMZ6H4vFfq)x#t#bb?%?)s|GL#=ET_M}gEtB5&=QFs9B~ zj90nc7_Z#u&UcnbAFl-Ye$WSa4>e3tAUd?xY~*=D4>G5@1f$Il;-PD?NP143&mMl- z09d}*e~fGN)bzS(Tt=J9CN&`Q_Q(BH>gfKn>s>Zs_{a3y#lFvs&Z0a~{TAC^5sqBP_n*CO80w7+VWLvb?nQyLqkQtt+`R5f^kSuxEh6ez2Y}HuJ{@R zI@R>~Q$6S6%%?$}n?8&)9Veh)+m}Uxx5Y7ci#id?kJpIfl8_n_1*capu|Hk)aXFJMo)W=SItz;Lz~c|CVY!R+q8`U%qAfTm4v z6)3wKcDecCkcnw3?DNrU9tnX&OpG|j2geM7Q7b_A>*)p2J~IvoY17m(%+f_U&77QJ zO8>TId^VF(p5O6140;GLx{JG>O{S(ha+;s zuUUoMXWJ0qppLKFZWbbXv>{CjNx1RmitG_nS0ZpNJ(ft|5fSdW_9Wlv2z#j+_+N(Q zLZw$d*g1&KA5|v3Ax_P9Ct-d#Y>Jjl4t~3~@pxV)v0w%EJ@0xuQ`a9Se2Z|fD@B4^3mR_n#Q^jFWPvN2Jud1jap{l5f-S-pEdZWAroowDZ4u#Shn2r7O70iohc#IFNRVa<`13v#^vMCDN z>|4qw@mn`eK0gts)FKEREZ?11(QYA!linyjKpAzFDXMCF6EHZ(xTHgHDZB{6s&Gz4 zHM%|ptp;@?yz5YU+Hn<8gk_L_2TG0kBm`@;j%{cZwql8y*yx{w-5<{vXG~N(dG=XO zG-CY+C$RTx*D7(%$7V#qKjp z3M2c)M)(-hv!Xskf|^-sm~Z?W){2S~)Q7TxWLtHrmLEB&d^!9HPVYgByKX_QcJg8@ zN!q;tjxqdCh)y3DdYz_=gM@ZtCcRn2)aW`13YA%U{E2`=P-?7WNNg3dsS3-(p(%FM zmotsz2t?n2Ln?br_Ku1ia$JyF&%kJ3nx2)#b(3i6)T&M0mYEuMw>S;I?|r=oJ=dS% zFf{;EBqOOhDW}H}4fewTunvXXY3YSo}90#$)B+ORK0B1%SV}7 zL&krwoKgD|m_TDOwJYhJY1}l>Bvh~?V+J9tCQX^j{|eidcn$+}2SIRS1Z7JG6X@?~ zeko_`yE3T~A@TBR+u^;Op~K8EBPsO!0h=0ZI-&3~AGO6~;m5X-nt3u(GO$A`RhEiY zbwFjI;4%e2ORTM>@$C0>+t}2s)7uzlh!i-xKw&dBKqB375u+siiZC?xf!OHbYYg9E zMBVt$fREd<&F=ZgbwLKJWQgQT@Z~5gRAN>_K^*D)p=!9#gso>IwOyCONmaPnZ!%0O z8v+?H(?tTzqQj5u9JC-C6sUj3!#P7Vm6EL(FHC}Td~8;X*?jGw+zG3VzfsB9wMy>% zGj;7M#SPKI&&;WZj-$)VpX7PXU@rUd{e9;tvIcz>WQS`W&Av6S^v}EwrLf)=>S`mP zQqU2hq-Mv9(XpY2l@r_<;<&ZtL(;y1Uv@o~%M zMDVJ`&})Ds5m&UgCk*8Y^q4f;-%QGjhQ3*CPw?o?mb$$ns2$+)$R*;1qV=lFm6>Rh z?|N7cC4E&2(c6adjCt=g5K`y`BSW3~+Gc~wAzxZ9(`nY|=W9jON&eAWd>cb!qC3H( zRVR+F{kc+?cl_d@ccQ2-i{<;zM!SF|VCVY*NMpBqVJLiGn95UPtohZ*!-kB0!)4C* z=S(?XQ@@N&e&nN<48Dujs~L|*HJOV!%CSuJ$s|;^_Ry4H;qg!d~ zSP#u{Abk_JRI2f&&3o#~^4N0BWcNdYTZ3fYR62hThW4Y^T61~jB-A5q8`PlX?JK*G zHmgB*0{ds_jIn~ug`XLQU6W4oK!>`lG>x+>|F?I=iHVb3f~Pe7MOW$4poAQ#Z=b6~ zxJZwD#KTqjnOI$)75WCQA6)iI0)N@^$Y@_DS`?OLO+jzJPCWmj!&oZOmN+d>;IGeE|&{=ams2k7Iptc3BO^{~$BDbs2 zAkZ%R0h+_116A)Je^QbUm0pqZGZlt)S+xEaMU^g@pVG5q*OSDZLh8I{!i$m@I0uTa zNbqXfU2Du=_$z5ztv0ph;ey)PEm|bSo2=qj7#Hi+p=b=%V5b;}!ayE=&-6%*EeNQmS{34YQj&U*Bqss3S!5j}$CG|RhbZbMewQnQK` zX$9{zfK;5-=Hl>TxnZ+Z<+ejn0R4;fdUL)tUnn^kXlsD9M8wrglwrqzc4 zw?bVV)qke^f@|9jvb$NEJ%(4Z(&WVSZz-^W~^GIT#72B7rS@$5vP7~dQ{?qb#YQ! znX3z@hUiRZS8Ir&PI3rcLgC|rLB^nH)OId8I)uR`D+Rww%l@|iKD3qL7SYbp=xJ?0 z;Q-n4fRA~JqsLSzA%yj#^)ayn0*`ajn1&C?d&G}Z&EQHv*=XksJ1DAA9nhwt?x<3% zsH#^QeW&D5^sJ@CSy{YlTTyxjtY+i{4bA2>(~0btb90npKV6#XPoT08XnB>_J*qYd_5E zFz#h&SnXQJ7(H@{QjC-oNI31xnqA|b=}o-MtF$}QZ3l`A zlg27(We=WVf^gG%=V7zR%ad4O<;k;S$(YJ)>nE5wnUN&_nN>l-D~x5(lg3O9>Q^cF z*b-3lhvQfQcwK@!<;pQ<=|uRYLBd5-_YW0%4xaonT*=?jl^J24RN)lOCSiX<%M#hR zrutcWy=nFG)8M8r=Kn^evW7aEtN(I^{8L3R{daD%f0-CL$qA>TwwJA*->YCZEy39qo!F<@jzRM=Whvj&|UgvqUjK&J& z)WXdTE&L8)ueChH04o^mMr8tR@;ogZbIsplORvjbv#S$ z;97LMy2h@Pw<&7yb;rA%#C{y061tzZity#-zTFkVQF_<)j%U-!^R0S*xmJq!EqsGG zSzunA3q29`;_;VpvnEaeZr=*G1&q0S)fpCo-~8-dT$!Q<&QMJG*Oi>j=iC$2K-Znw zq}@$?yJ=ixF__lCEi>e)K*NJQJXnT2t;A!>oKBHII!?&&ry1&#@68dxD&^!+dRv*z zN}u1>!7;HUt3Pf*yJO7xW!xaQ-C-%~e|!F%mVmIQh^*KDaz#H6JL}II?+W4GPNu@u z;$gU!mc%&A`=#!U-6P6Gel3$6Cb53Q{g{Gqtt(4P@><<`{zE0b09cF;-R?ViL zc6<8|+Rs8wEjcLu34{BJ^CuDAUZFx7SMso|5H$Kb9Jrs*} zD~T=t5^#%@;iaBG=Mk1A14E1WpvxMM58SMTBr^<(CD^9l}Kv&(ar z+o&?&Uw&3WzB!fmI5kl6oxNN#LUkfjoG7M6MhKP4xwd0?(P@O<s}Fvj*1YD&yX1F7h+h!l5IcC53u}1`WjBs%SXMns{q_rY zN?P>v)OA6|NZEz-T&nTTssqmRgNrzAEi@;!ku?zu6j!GzuIRfNB(Ka>L^H#ZD+05N z7}j^$y%s6F!o}HHTI+AM81C{$e2=c1alqhX=O&?J&U zRI91MK^8lmtDdAN)VsQ&wXb~*sXNfuH#2#W#pT1kDxB1Iv7T~?O!-zRF>>i+YF^vD z#;zpXX(VHI%J%o);=f}tM<&IRsnbAUJqzn;A`3L~o|_F=X(g@+#IvexTUr?#&euz6 z{IG6fH8;(K1VskF;!(UOlfN0idG*d7+=9z?J#Efu$qcYB} z|1@J^N&WnG!zY|HX9UJ}sUe_dg0TzkDqKyxkLu;|>v}HoGR=pP6+=@U=y-wLa2faR zQ75APZWl1v@xJL}4uXeqfwGkLfp}sj$v@pAq_7W-99Qfe7GA8p z8<;@Zd#j_lG7V|{zA*hn#;_PNeQu_>hI0St?JJuW4F z5){E@ZE@E%Z<(T*KGkdZ&sH@CSI@ZJINNHec+6E$+>x*PT6(#&*yZTBmr78R0oO+I znr{n&S5CFW5?LIVDq!YV)De%^1-Je5f096ce&av5ws+15SKEto#1Uq6NEzRJ8@^X6 zm|_t(DXkQ17E@*7RTk@q;?1X3W#RFihBrc%2*&#!=00wJPJ~JpaZ|Bc>Y1Q1)Z}Tc z!AZta$>6qEh3hgjnlpleg=37eVW|*Fw{O~;1a14;zo*YkMOTy zG{W(pbkF6+!(4+LrR6+`F49-w*%Oj?yQ&={`A-MY-!sy7Kmq)WB zk2N*|K3A>hbn%Jjjx5Zk2U}1D?SJNs2rM|<>vDI2Ni!lb4TGK*_3i5|VTd$66>v1e zk?34HELHfrIFana+yik#C2kwuYz%|+iz!FM(*$;PhfR2MPiz+;eb@O>S~d5ZR$=l@ z+3n`E)N%3m_or$GPR6y-N0!_Ou_VRz+w#s-6&w^-+6L;a_o@_drU?C8;_Gt!766+= z?AI=2lJA}R6z-m=zj*vC&o&LN(QjsI!fr_nY3{fd;kQS0+94-+K{}pvg+8127@q*h z_4-(IMS=N44aM}^zUY{gXaJ3<$I-&0*Xi@OgigyNsKK*F@ntg9A#&%uh)KpVNF}3j z4*PWb_vh!@6qju!?`JkxELW2YqK?u5SRDbbuO#h4@??FGk#qt;6ExI`w-a=F-8V4h zj)~Yp9vf~!-5S-WMd+;jgIRa5k>ZLr_Z-PJhy2DWP|Q5RgOZV{P42ww4rq-ZvAwGc z;fdH`>vyq^9P;DErz9~Pftg?S?3;+|w(!b@m?q!!#ew$0t6uo{-WD4L3@ zQ3MFfAAVeyK^RixqBDmLe)22}>kz7e>_|qr9n@;2b&agAHr>s2}q$4l%M&1V~*A@#> zYwo4ec!|SH<^m_D6NJK@F0S`OC7M&C{mh;Yx0i(q%@q7iEV09cQQUBcnKo)O3`%Ki-cgY5g*|&p*zUg=Q+q1IIWkxG_|Xqr&_CI+-D7Y; zux645a!4{ina9A7y(|;(5tF?3RVwY8rC}Of>x9fn?TMhKu_#&ANIPQw8qghF?wun& z|9DN}c67i94f~}k^_s;@CU2-6SFzVWfU54+bfoZLgOx|L$qzlmVWRjNJJnxlmSD|z zUTO)}$T2?(^7=u9`;7|GN9N6hgBLkU=-p{#AEr}-Q7y?N2pk$ukpjeMyk7|9eF>|k z^VQ$zqWsCHqx?cM2<)pi;srx*4Mlw8R(d8hT zsQ)TiUj+iIY`7?vb+DYT%jZoPo4Rt!bPvrGQ?pGZrPzms$irmD9T0eQRPzvBg&_S6IPS|5J z^Cl{>6yVUCNisRO&(-DiUb)7^Gk}`7P!?MJUFKA z$7|HIO?%~zb}0xgVO>sv^VCpF>z~@J#CgB`yG5Y-XG`MosafTgJw4I~3dJycZ^_v| zm|OIiRr+ZwUG>{GmmW}vZ@S2J)3~cs4Y;QY6VgMG3rFya5LZVKwe`4sOnX0_n1wYW zed9!Fb;IgwjiCkUJa~_^siWW^tpgYUnb6;da>DewZHcm8CPmHZDM-#_tE@t2sh)!<%l%K3@t zc0H7CvWeVS4?R1!HaO=#aV`v8!hZR@Q-=SF?=Wai(yRb_X?_2QZG#XKf7;hA9zc;b zG!JjLY)jdxpEji(P9+Sfos&JxFW_|yvxY6ga*Ngy=6&}~T5N_PiPPBA_oZ?Z3gU}_ z8aFF26OhDjpOY6@;7As?CC~0WV_Doc1+@q~;;En&#HTKOPS23y7q1vuwgpDo(U>1L z>~!=6QZFrn{Fz+SSzW>+XGQ4N9jsp>%1O;#HVs6R_$oM)-w|7W!pgByvFyic!|k~+ zKg*p8e^YXWc)v2P#|&rXgQL|)PFQr^Y|3q*VR@`a9^F4$vUr(EWkx zn4R*dvS!r2&2cYVg@i!CcA0O}>O>BK-W8qSkm<}R?Ez|w*b=*(I0OwSJicyjC@lB=dqPfai%2nr{yNQd?@vT2pMR^C2L z`C0J%;)uf2cz0IE6Voc;>*}yD99Omc=8l@NG_{+*y}W(&jN*&%cRA7ok_gFiAzhQz z+D&QVVusyFdRU|f8*RMm;rG@PGW)XM8j!QmxiAhVjeD9?g*gyl>VI{}JV_K-Z4;O4 zkmWNP#BP8N=QmvAV>t#e>SLC0f*c{ey4(DD3LZT|9Q&;|f6$p_&vd^W#Ep83Ej5N? z5!>y^sA;g;FI~2qxYkjx4EVITN;T3OA%wT#vXHh;>NCgP=d~~Miv`3oF57g|i;d8d zz7$GJY1le)QB8jP=mPI&sQ2WqEzc zNJsz7Ok`p=w|x$sxAeVX914LI%bFaIb-m&6;^G?fOT`j5t#)j8TG4F1hYFHL`w9WK zmNEHs1EPXOtBmJf1`J9UJ>32+b?+B?_+|#Oc@lJ6?G|v|gXU_6$ z(|v=5O7|MfyYkdGbMiWSuMhDs8=b>=_Xr?Tag1Cy- zWQx;e>1Id;y7^$1f7%8rc1taFWpqgPC5xVRTmKqKFOZ z&L>FJoILPa6>Vvw_i7}R52N}swzF@v8&gjXoYMzHdV{5;>VDx@!579@`K-FJl!~1s zVP10zPivlt5QELADrli@KkYPFf0EJ_M$7${uT?D|1}a(PI#`vcfL)wZWwg`IB(s>^ zPZ;hF00|xA4>GOVo+!dpvYkK4@44dC9~xcENM!PdrB^?NN>C`k(W3M)n;+6q^A>g0 zbu(6rmnMA5;z6*CpAWFGF_k`#ls9(Vw%wgf5BsK#+Y#tuke+3qC1)P#?Vnfp)^PP) z-Ai*MJADQ}HNLt!^5(&_I}=kBFj+>)7r%l06g)ljbyE1I$|TP}-P+14G~VKSOsU0Bs#J>J$F>>jCZ;kAyB2f-A(sW2pijvmnK>;V0F`c8 zc^_o?pvv4R^jzgOFpM(b^9-GI4!&b|3Eo%7#n@h+)it3J?#8xOSPollI{4(r?D;R zZea#4|2PA%=NuLFL$Ji;UNTX+RW9(RQii6fzB=mOO zNuI48Z8_mL!&;KpY~)8=^%XGoJTOwn$F=ZW4lFi9h5^!A@)Jp7Rm)$Cgr%;@6i7{S z>{PR0UQCkFm+n3+FS(NO!GB>;&VfrlikXIT7_j__99AKOOCWFMT0eqxXqR-t1ZUfe z7z-;0=g;-hh*N?0JZOov!c$@n&zGrdP`Xelr=kL}djpE=3xO7l3}2;eH+hCfe*4iR z^u5c~1I)S=MFEM^r#{ypt0WEKc~Y%CtOtA-LGR(7sdA>zMW>N^tXq|`F7mlOI$L6RK8}q*``X6tGS#Cg zsCcDX=E`FS@nf|_Wmv+~V97MKc6qBRFeB75wq%!Sh_sq5f37m&|%XE`!@-7YDH(YFz~O&B#?1B^Ro55kt1Rv~t0MJ#YT&ncsjT zVspJwEH?veaOA?o_FS{y*So1CdUqdpBmtpm@*JXl9s!aDrO33OX1nLD0M+7i-a4ctnj5L1zXikuXr%_k;Z0ti96NosF? z7QvhAkC(OuNXdSxpFY!_dPa(17Y4lx#|@o>eC=T5u5*A;$$6UV)g73n3Kk`7p2$(0 zHdHbr>#g3vyGy9MlD#}Eei~_Er@$1A7+Iv<(Wocz2I4gd^(35!#7ha)Z96l znoahCg`AiU&A5O!Mr3b8Qkta#HNo-Y5K4G~_gzAefa4o};YewUdsCQ3c+5w>r$FHB}e>8YJ(mU$Hzz{gC>K zIp(33YkjkVY@D+4fXS2ux1W1Zs-@$`u^^{Z3zD|2+5aW+soh+%56)bkXoF)K10jrt zJN8*toYoYXz4hpaGcbpc#xAWlZZ5&`#*m5W-3ObsfFBnNT@=Vhz4aH{MTK)qLdpm$ z54XK<%;pia)x5J~Op@umHe4*A;gzBxb(65C5?+sHd5Z6o*1koAEaglFcapcBU^a=Y zx2>y9?@-Rw#W zaj6i(eSZXKa`G4ThKgjFXo9WQeR4 z57;UJ;k#uif&p&?vmD3wdwz0{n~5|1z6}C1*e&XtQ^my>i)%V2n2@qC_VpNsW%Gpz zVuU(Db|es+EVahI)!QrCBX5ulAgdLgel)1!`nk%`juQZz*vkZiI3n6xR|{9M2##7t z*Wg%nL4sz~69`?S@W#r+L`HNz8lOa5$(|>C`yC?t?j_*eT{OZzoX<0v2QcR_h=qYt z7imNQVQQl>Z5x}#Y#sXsLJm2Ln5`dp0BgG(PhZbYV{1`cY z{F%30w#gMhRVyr4gen;PlCTKFzV@u&AF@0;JjfLqF+OWbgwuOe7og;gzXtQQkyxHg z<@>2zlC&t7haum1rogxNvc2d4DMPDjNc~o4QSF)msPRe#0dJBBD0XLMl~Mx^O$~?6 zAe&*`5m4Li_!a6mIFx_YWYhS8W-c#AAe?V05Iy7G(RktUL|QO1)r0dh(j>x%^dvJ`5Gh#=HGgs?XeUy`o}_%gox?L&L31kEbEf2R0YOdd=A z*cFDEnvLv8W-KWen`Bgb6+?CW^CY(z^QKZ&4Lg9B?~~j4;|)&0%pg@Ey7Lfz{)@Tw zd#fAHU(aasrTvj5wp4;dM zKI+S5b_2Y}g$d`lb{F7zeJn-L;+<{#o%V5RlA+Meh>S(;Kr2`7icNeoZoWvW%j`54 zWmir6xyDy++N1RXU3ph~KkZS>f%37$}YHD;< zJ!EzHv_nPWSQm_*x2%4a+{vIy{~D};ax`U^jZqO}V*Zn_%|o0s(cN&!r|!hTvE{>6_G`ri+aGJj2*+h8m9QsB z!p5wtp-N)Lq6rlc;|iK~Y1i5nc@}qnF2J|?q2H6?G+FIIkTUH0ky)U)h)ohr98v`m zZvN@ljK9t&adHYN6g+tNDBVMv#mHacHhmrZL{Q#e<}o8DxfpAV^6K^rI)4}vAGMTZ z;|~wg$jz4N3U;ob8c#!igP&1}kaM?U)P9>(p~oH`qAic*o?XOhp!xFlS!iFqY)E~b z4&tput&|eWDMHa<#{3#}RR&RGD$la)4G`^p6GR0oz8&o0Zny>Z;gEcu<=@O*YZoIB{@ z575~C!)Rw7w#xS8pkW$ZyW7y!eddUo0NOCLMAG{gqKmQbBlFyKqT%s=0*?2>>OqWx zOiR=1$k(Bp6~CShjH1YEhTa`%#q=gu_*D;djcwVem6J*bDn$8yTuyLhVLC9adrQhu z#CLeeN86Oy8h=8ZsBe0w_Dii@t4rS_HjmBDvB@YaNe`-g3>Hs$=)8bW3|Z1QyKvFz zzCy7<&;11HYV({kc;CezFCXhFQ-P917zj^l=PR~yQK>a;t$`@bFxyf>AX?GjU>9O9 z0Vhamh`Kjl!e@U+pi7oOnx}&u5{-CG-a&FqPYD?vf#Fe1uplJ0j)aZk&tl3=X42cr z8dU6f$7P+(MY^?6pF5Hp)P%Yp;=WZYEsT9=!n@%EU5YzpDay>nq)d&YG~@=2|2p8l zCOk9tOy7Lh!$@F~w{B|w?mIc=PCsutKNmU`XB@iN{E7{e@b)UHkJi*l@2_!o%Bu(~TTE;7ys`+PyZb?x5797b zQ9l|;-iqKnz@i8DKgSd;$~kB0Wjq)<8A8`v8&ExPlTRW@Uezd{gk2KnS(I`2R>+jz zAH5Edrd7ovn1u259}Zwds>rp(^yS*6q?}d`o(|Rsxd9>�cniMGWd>f>$X#1S4j0 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 ^Lcww>T1k6E1Z` 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 { + width: 30rem; + position: fixed; +} + +@media only screen and (max-width: 1500px) { + .wrapper { + grid-template-columns: 10rem auto; + grid-template-rows: auto; + } + + .side>svg { + width: 10rem; + } + + .article { + padding-left: 3rem; + padding-right: 1rem; + padding-top: 1rem; + } +} + +@media only screen and (max-width: 800px) { + .side { + display: none; + } + + .wrapper { + grid-template-columns: auto; + grid-template-rows: auto; + } + + .article { + padding: 1rem; + } +} \ No newline at end of file diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-700.woff b/static/fonts/source-code-pro-v22-latin-ext_latin-700.woff similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-700.woff rename to static/fonts/source-code-pro-v22-latin-ext_latin-700.woff diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-700.woff2 b/static/fonts/source-code-pro-v22-latin-ext_latin-700.woff2 similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-700.woff2 rename to static/fonts/source-code-pro-v22-latin-ext_latin-700.woff2 diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff b/static/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff rename to static/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2 b/static/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2 similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2 rename to static/fonts/source-code-pro-v22-latin-ext_latin-700italic.woff2 diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-italic.woff b/static/fonts/source-code-pro-v22-latin-ext_latin-italic.woff similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-italic.woff rename to static/fonts/source-code-pro-v22-latin-ext_latin-italic.woff diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-italic.woff2 b/static/fonts/source-code-pro-v22-latin-ext_latin-italic.woff2 similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-italic.woff2 rename to static/fonts/source-code-pro-v22-latin-ext_latin-italic.woff2 diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff b/static/fonts/source-code-pro-v22-latin-ext_latin-regular.woff similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff rename to static/fonts/source-code-pro-v22-latin-ext_latin-regular.woff diff --git a/assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 b/static/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 similarity index 100% rename from assets/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 rename to static/fonts/source-code-pro-v22-latin-ext_latin-regular.woff2 diff --git a/assets/images/link.svg b/static/images/link.svg similarity index 100% rename from assets/images/link.svg rename to static/images/link.svg diff --git a/pictures/sensor-watch/c7c8.jpg b/static/images/sensor-watch/c7c8.jpg similarity index 100% rename from pictures/sensor-watch/c7c8.jpg rename to static/images/sensor-watch/c7c8.jpg diff --git a/assets/images/sensor-watch/f91w-strap.svg b/static/images/sensor-watch/f91w-strap.svg similarity index 100% rename from assets/images/sensor-watch/f91w-strap.svg rename to static/images/sensor-watch/f91w-strap.svg diff --git a/assets/images/sensor-watch/f91w.svg b/static/images/sensor-watch/f91w.svg similarity index 100% rename from assets/images/sensor-watch/f91w.svg rename to static/images/sensor-watch/f91w.svg diff --git a/pictures/sensor-watch/pcb.jpg b/static/images/sensor-watch/pcb.jpg similarity index 100% rename from pictures/sensor-watch/pcb.jpg rename to static/images/sensor-watch/pcb.jpg diff --git a/pictures/sensor-watch/watch1.jpg b/static/images/sensor-watch/watch1.jpg similarity index 100% rename from pictures/sensor-watch/watch1.jpg rename to static/images/sensor-watch/watch1.jpg diff --git a/pictures/sensor-watch/watch2.jpg b/static/images/sensor-watch/watch2.jpg similarity index 100% rename from pictures/sensor-watch/watch2.jpg rename to static/images/sensor-watch/watch2.jpg diff --git a/pictures/sensor-watch/wrist.jpg b/static/images/sensor-watch/wrist.jpg similarity index 100% rename from pictures/sensor-watch/wrist.jpg rename to static/images/sensor-watch/wrist.jpg diff --git a/syntaxes/console b/syntaxes/console new file mode 160000 index 0000000..6a40240 --- /dev/null +++ b/syntaxes/console @@ -0,0 +1 @@ +Subproject commit 6a4024043dd6018ccfde1a826e33fe957e647075 diff --git a/templates/anchor-link.html b/templates/anchor-link.html new file mode 100644 index 0000000..3ee639b --- /dev/null +++ b/templates/anchor-link.html @@ -0,0 +1 @@ +{% if level == 2 %}[]{% endif %} \ No newline at end of file diff --git a/templates/article-sw.html b/templates/article-sw.html new file mode 100644 index 0000000..6d696ca --- /dev/null +++ b/templates/article-sw.html @@ -0,0 +1,137 @@ +{% extends "base.html" %} + +{% block extra_head %} + + +{% endblock %} + +{% block content %} +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+

{{ page.title }}[ homepage ]

+ + {{ page.content | safe }} + +
+ +

email me to have a conversation

+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/article.html b/templates/article.html new file mode 100644 index 0000000..1eae29f --- /dev/null +++ b/templates/article.html @@ -0,0 +1,17 @@ +{% extends "base.html" %} + +{% block extra_head %} + +{% endblock %} + +{% block content %} +
+

{{ page.title }}[ homepage ]

+ + {{ page.content | safe }} + +
+ +

email me to have a conversation

+
+{% endblock content %} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..d6a9d88 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,26 @@ + + + + + + + + + + {% block title %} {% endblock %} + + {% block extra_head %} {% endblock %} + + + + {% block content %} {% endblock %} + + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..c8d7223 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,13 @@ +{% extends "base.html" %} + +{% block title %}{{ section.title }}{% endblock title %} + +{% block content %} +{{ section.content | safe }} + + +{% endblock content %} \ No newline at end of file diff --git a/templates/shortcodes/code.md b/templates/shortcodes/code.md new file mode 100644 index 0000000..58fef49 --- /dev/null +++ b/templates/shortcodes/code.md @@ -0,0 +1,4 @@ +{% set code = load_data(path="code/" ~ path) -%} +```{% if syntax %}{{ syntax }}{% endif %}{% if linenos %}, linenos{% endif %} +{{ code }} +``` \ No newline at end of file diff --git a/templates/shortcodes/image.html b/templates/shortcodes/image.html new file mode 100644 index 0000000..d4705ca --- /dev/null +++ b/templates/shortcodes/image.html @@ -0,0 +1,5 @@ +{% set image = resize_image(path=path, width=1024, height=1024, op="fit", format="webp") %} +{% set url = get_url(path=path) %} + + + \ No newline at end of file