From 98305ebc0b03cdd2c6d02208c4c49ed131e52acc Mon Sep 17 00:00:00 2001 From: Peter Tillemans Date: Thu, 19 Oct 2023 01:04:39 +0200 Subject: [PATCH] add personal blog and update categories and tags --- config.toml | 39 +-- content/blog/2020-09-04-relm-on-windows.md | 110 +++++++ ...-09-06-leveraging-env-vars-in-rust-apps.md | 86 ++++++ .../blog/2020-09-08-add-tap-escape-to-hhkb.md | 98 ++++++ .../2020-09-08-install-latex-in-windows.md | 128 ++++++++ ...20-10-15-setting-up-blogging-with-emacs.md | 289 ++++++++++++++++++ ...ess-nas-drive-using-windows10-pin-login.md | 89 ++++++ ...2021-01-17-running-emacs-with-wsl2-xrdp.md | 211 +++++++++++++ ...ation-to-entities-in-the-seam-framework.md | 5 +- ...building-debian-packages-in-a-cleanroom.md | 3 + ...deliverables-and-activities-ahah-moment.md | 25 +- ...ion-for-global-proxy-settings-on-ubuntu.md | 3 + ...crashes-on-64-bit-ubuntu-hardy-herron-2.md | 5 + ...le-real-idletime-for-org-mode-on-ubuntu.md | 5 + ...n-result-returns-more-than-one-elements.md | 7 +- content/blog/gallery.md | 30 -- ...rst-class-citizen-on-ubuntu-hardy-linux.md | 6 + .../learnings-from-the-pmi-benelux-day.md | 7 +- .../blog/logging-notification-in-ubuntu.md | 7 +- .../blog/making_dotfiles_visible_on_mac.md | 5 + ...enproj-locks-up-with-blank-grey-windows.md | 35 ++- ...ows-using-the-keyboard-with-compiz-grid.md | 40 ++- content/blog/proxy-support-for-grails.md | 26 +- ...ploading-documents-to-plone-with-webdav.md | 16 +- content/blog/vraagstukken-5de-leerjaar.md | 113 ------- public/css/main.css | 3 - public/elasticlunr.min.js | 10 - public/images/mugshot.jpg | Bin 119094 -> 0 bytes public/js/lang.js | 1 - public/js/main.js | 1 - public/js/page.js | 1 - public/js/search.js | 6 - public/search_index.en.js | 1 - 33 files changed, 1211 insertions(+), 200 deletions(-) create mode 100644 content/blog/2020-09-04-relm-on-windows.md create mode 100644 content/blog/2020-09-06-leveraging-env-vars-in-rust-apps.md create mode 100644 content/blog/2020-09-08-add-tap-escape-to-hhkb.md create mode 100644 content/blog/2020-09-08-install-latex-in-windows.md create mode 100644 content/blog/2020-10-15-setting-up-blogging-with-emacs.md create mode 100644 content/blog/2020-10-26-access-nas-drive-using-windows10-pin-login.md create mode 100644 content/blog/2021-01-17-running-emacs-with-wsl2-xrdp.md delete mode 100644 content/blog/gallery.md delete mode 100644 content/blog/vraagstukken-5de-leerjaar.md delete mode 100644 public/css/main.css delete mode 100644 public/elasticlunr.min.js delete mode 100644 public/images/mugshot.jpg delete mode 100644 public/js/lang.js delete mode 100644 public/js/main.js delete mode 100644 public/js/page.js delete mode 100644 public/js/search.js delete mode 100644 public/search_index.en.js diff --git a/config.toml b/config.toml index 8c7de08..e6fb4c5 100644 --- a/config.toml +++ b/config.toml @@ -9,6 +9,11 @@ build_search_index = true theme = "blow" +taxonomies = [ + { name="tags", feed=true }, + { name="categories", feed=true }, +] + [markdown] # Whether to do syntax highlighting # Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola @@ -25,12 +30,12 @@ adsense_link = "https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?c items = [ { lang = "en", links = [ { base_url = "/", name = "English" }, - { base_url = "/fr", name = "French" }, - ] }, - { lang = "fr", links = [ - { base_url = "/", name = "Anglais" }, - { base_url = "/fr", name = "Français" }, + # { base_url = "/fr", name = "French" }, ] }, + #{ lang = "fr", links = [ + # { base_url = "/", name = "Anglais" }, + # { base_url = "/fr", name = "Français" }, + # ] }, ] [extra.navbar] @@ -39,25 +44,25 @@ items = [ { url = "/", name = "Home" }, { url = "/categories", name = "Categories" }, { url = "/tags", name = "Tags" }, - ] }, - { lang = "fr", links = [ - { url = "/fr", name = "Accueil" }, - { url = "/fr/categories", name = "Categories" }, - { url = "/fr/tags", name = "Tags" }, - ] }, + ]}, + # { lang = "fr", links = [ + # { url = "/fr", name = "Accueil" }, + # { url = "/fr/categories", name = "Categories" }, + # { url = "/fr/tags", name = "Tags" }, + # ] }, ] -title = "title" +title = "Snamellit" [extra.sidebar] items = [ { lang = "en", links = [ - { url = "/markdown", name = "Markdown" }, + #{ url = "/markdown", name = "Markdown" }, { url = "/blog", name = "Blog" }, ] }, - { lang = "fr", links = [ - { url = "/fr/markdown", name = "Markdown" }, - { url = "/fr/blog", name = "Blog" }, - ] }, + # { lang = "fr", links = [ + # { url = "/fr/markdown", name = "Markdown" }, + # { url = "/fr/blog", name = "Blog" }, + # ] }, ] # Index page diff --git a/content/blog/2020-09-04-relm-on-windows.md b/content/blog/2020-09-04-relm-on-windows.md new file mode 100644 index 0000000..498b88c --- /dev/null +++ b/content/blog/2020-09-04-relm-on-windows.md @@ -0,0 +1,110 @@ ++++ +title = "Relm on Windows" ++++ +There are essentially 2 methods for compiling Gtk apps + +- using *msvc* compiler and .LIB files +- using \"gnu\" backend and msys2 libraries + +It is a pick your poison situation, the first option requires unpacking +zip files and organizing stuff so the rust compiler can find the +libraries and the runtime the DLLs. + +The other option requires configuring rust to essentially cross compile +to the *x86~64~-pc-windows-gnu* target. + +Since I know how to cross compile from my recent experiments with +compiling for embedded ARM processors and I generally know my way better +around the unixy msys environment, the latter it is. + +# Installing Gtk in Msys2/Mingw64 + +Installing gtk3 is easy as it can be installed with *pacman* + +``` example +$ pacman -S mingw64/mingw-w64-x86_64-gtk3 +``` + +Add some support for integrating with c libraries and linking, etc... + +``` example +$ pacman -S mingw-w64-x86_64-toolchain base-devel +``` + +Being optimistic I installed glade. Probably wont need it today but it +is a good test to see if Gtk apps at least start. + +``` example +$ pacman -S mingw-w64-x86_64-glade +``` + +Glade starts and shows the GUI so the first milestone was reached. + +# Preparing rust and cargo + +First install the cross compilation target + +``` example +$ rustup target add x86_64-pc-windows-gnu +``` + +I can now compile with + +``` example +$ PKG_CONFIG_ALLOW_CROSS=1 cargo build --target=x86_64-pc-windows-gnu +``` + +To always enably this environment variable in the project folder I added +a *.env* file with + +``` example +PKG_CONFIG_ALLOW_CROSS=1 +``` + +which is picked up by the zsh dotenv plugin when I enter the folder. + +Similarly we can change the default target for cargo with adding + +``` example +build] +target = "x86_64-pc-windows-gnu" +``` + +to \*.cargo/config.toml + +We can now simply do + +``` example +$ rust build +``` + +or + +``` example +$ rust run +``` + +# Using VSCode + +When using *vscode* the rust language server needs to have this +enviroment setup too so it can do its magic. For debugging and running +you can do this in *launch.json* by setting the variables in the *env* +property, but this is (logically) not used for the language server. +There seem no way to have *vscode* respect the *.env* file soon enough +for the language server to pick it up. + +The solution I settled on was to launch *vscode* from the command line +in the project folder: + +``` example +$ code . +``` + +The prompt returns immediately and *vscode* is seeing the same +environment as the shell. (This does imply that the vscode bin directory +is on the path.) + +Of course this wisdom was gained by fixing 1 error message after another +while trying to build an example in a 2018 blogpost. In hindsight I +could have started with the examples provided with the relm sourcecode, +but where would be the fun in that? diff --git a/content/blog/2020-09-06-leveraging-env-vars-in-rust-apps.md b/content/blog/2020-09-06-leveraging-env-vars-in-rust-apps.md new file mode 100644 index 0000000..b41c8c8 --- /dev/null +++ b/content/blog/2020-09-06-leveraging-env-vars-in-rust-apps.md @@ -0,0 +1,86 @@ ++++ +title = "Leveraging Env Vars in Rust Apps" +[categories] +tags = [ "rust", "config" ] +categories = [ "programming", "apps"] ++++ +Environment variable have gained a lot of importance since the rise of +the container based deployments and (consequently) the popularity of the +[12 factor app](https://12factor.net/). + +It also has become very practical with the widespread support of the +*.env* file in the project folder which makes configuring apps during +development very practical. + +# Using environment in Rust + +The [std::env](https://doc.rust-lang.org/std/env/index.html) package +gives access to the environment variables, and also information about +the working directory, the location of the program executing, temp +folder, etc... + +The method we really are interested in is +[var](https://doc.rust-lang.org/std/env/fn.var.html). + +``` example +match env::var("MQTT_BROKER") { + Ok(mqtt_broker) => mqtt_init(&mqtt_broker).await, + Err(e) => error!("No broker specified in MQTT_BROKER environment variable.({})", e) +} +``` + +It returns a *Result\* which we can easily pattern +match on and give readable feedback to the user. + +I thing this is perfectly fine for simple, small apps I am likely to +write in the foreseeable future. + +# Controlling Logging from the Environment + +Another thing needed for smallisch apps is a logging system with the +following requirements: + +- Controllable via environment +- Add a timestamp +- Output to stdout or stderr (a 12 factor thing) +- Namespace modules +- Override config for specific modules + +Rust has a standard logging API defined in the [log +crate](https://docs.rs/log/0.4.11/log/) crate for which a large +selection of implementations is available. + +The first one on the [list with +implementations](https://docs.rs/log/0.4.11/log/#available-logging-implementations) +fit all my requirements, so that\'s fine. + +All we need to do is initialize it after reading the environment +variables from the *.env* file : + +``` example +async fn main() { + dotenv::dotenv().ok(); + env_logger::init(); + ... +``` + +and we are logging using the standard `debug!`{.verbatim}, +`info!`{.verbatim}, `warn!`{.verbatim}, ... macros. + +# Scaling to larger apps + +When apps grow (or just when they live long enough) they tend to +accumulate config options and layers of modules making logging also a +headache. + +When confronted with these issues I saw that the *config* and *envy* +crates offer nice layered configuration support and straightforward +pouring in type safe structs. + +Similarly there are more flexible, and consequently more complex, +logging frameworks like *log4rs*. There are also structured logging +libraries but I still need to see how these can work in containers +without adding additional hoops to jump through. + +Let\'s hope my apps stay small and simple and do not need this +additional complexity. diff --git a/content/blog/2020-09-08-add-tap-escape-to-hhkb.md b/content/blog/2020-09-08-add-tap-escape-to-hhkb.md new file mode 100644 index 0000000..ffb7f46 --- /dev/null +++ b/content/blog/2020-09-08-add-tap-escape-to-hhkb.md @@ -0,0 +1,98 @@ ++++ +title = "Add tap Escapt to HHKB" +[categories] +tags = ["hhkb"] +categories = [ "keyboards" ] ++++ +I configure all apps I can to use *vim* keybindings. Which means I use +the *Escape* key very often. + +On my custom keyboards I have usually QMK or similar available to remap +the keys and use a tap on the CapsLock to mean *Escape* and hold to mean +*Control*. On the macbook pro I used *Karabiner* to program the same +effect. And even on Windows I found a *AutoHotKey* script. On Linux I +use an event interceptor between the keyboard and the rest of the OS. + +So either the keyboard does it natively or the useless CapsLock is +remapped to the much more useful Ctrl/Esc combination. + +# Happy Hacking Keyboard + +This year I got a HHKB for my birthday. I have been wanting one of those +for a real long time, but choice anxiety and the new models arriving +last year prevented me from pulling the trigger so my family conspired +to end my suffering by buying me Hybrid Type-S. Super happy with it. + +Of course it took some time to get used to the different location of the +backspace, and the practical use of the 2 keys top right. However my +muscle memory really expects the *Esc* to be under my pinky. + +No problem I thought a quick Google will sort that out. Nope... + +Been looking on and off for about a week before posting something in the +subreddit. No reply, probably because I forgot to add a nice picture. + +The general consensus is to just buy an Hasu controller and use QMK to +implement the tap dance. However I do not want to rip out the guts of my +new keyboard, and ordering one will take some time too. + +# My Solution + +A thought crossed my mind to just try to do the same with the Control as +I do to the CapsLock in my autohotkey script. So I copy pasted the +CapsLock remapping to the end of the file and replaced CapsLock with +Control in the copy. Reloaded the script and everything seemed to work. + +Waited a few days to confirm, and wrote it down before I forget. + +Here is the relevant part: + +``` example +Control::Send {esc} +Control & a::Send ^a +Control & b::Send ^b +Control & c::Send ^c +Control & d::Send ^d +Control & e::Send ^e +Control & f::Send ^f +Control & g::Send ^g +Control & h::Send ^h +Control & i::Send ^i +Control & j::Send ^j +Control & k::Send ^k +Control & l::Send ^l +Control & m::Send ^m +Control & n::Send ^n +Control & o::Send ^o +Control & p::Send ^p +Control & q::Send ^q +Control & r::Send ^r +Control & s::Send ^s +Control & t::Send ^t +Control & u::Send ^u +Control & v::Send ^v +Control & w::Send ^w +Control & x::Send ^x +Control & y::Send ^y +Control & z::Send ^z +Control & 0::Send ^0 +Control & 1::Send ^1 +Control & 2::Send ^2 +Control & 3::Send ^3 +Control & 4::Send ^4 +Control & 5::Send ^5 +Control & 6::Send ^6 +Control & 7::Send ^7 +Control & 8::Send ^8 +Control & 9::Send ^9 +Control & '::Send ^' +Control & ,::Send ^, +Control & .::Send ^. +Control & /::Send ^/ +Control & -::Send ^- +Control & =::Send ^= +Control & [::Send ^[ +Control & ]::Send ^] +``` + +Not elegant, but works fine for me. diff --git a/content/blog/2020-09-08-install-latex-in-windows.md b/content/blog/2020-09-08-install-latex-in-windows.md new file mode 100644 index 0000000..ba7515e --- /dev/null +++ b/content/blog/2020-09-08-install-latex-in-windows.md @@ -0,0 +1,128 @@ ++++ +title = "Install Latex in Windows" +[taxonomies] +tags = [ "LaTeX" ] +categories = [ "apps" ] ++++ +I have some latex templates to format documents to create fancy formal +looking PDF versions of my plaintext mode documents I create in +*org-mode* in *emacs*, well *spacemacs* actually. + +# Installation + +Since this are tools built in the UNIX world I expected a protracted +battle before I got all settings right, especially since there was no +version of Live Tex in the chocolatey repositories. I never tried MikTex +before. + +## Installing MikTex + +That is easy, in an admin shell run : + +``` example +> choco install miktex +``` + +This will take a bit so we can already fetch the templates. + +## Installing the custom LaTeX templates + +I keep my templates in git repositories for easy updating. Some are +shared with others so new features are sometimes added. Let\'s make a +place for these + +In the msys terminal : + +``` example +$ cd +$ mkdir -p .local/texmf/tex/latex +``` + +I want to use the *.local/texmf* as the local extension folder, but +*MikTex* will not allow to select it if the *tex/latex* folders are +missing. Also this is consistent with the Mac and Linux versions. + +## Installing the custom templates + +Just add the repos for the *.sty* and *.cls* files to the folder we just +made: + +``` example +$ cd ~/.local/texmf/tex/latex +$ git clone git@gitlab.xomeplace.com:latex/xomeplace-latex.git +$ ... repeat for other templates ... +``` + +## Configuring MikTex + +After installation look for MikTex in the *Start Menu* to start the +config tool. It will complain that no update has been done yes, so I +humoured it by updating, none are available since it is just installed, +but it keeps regularly reminding me to update. I assume this\'ll go away +once some update arrives. + +Add the *texmf* folder we created : + +- Press the \'+\' icon +- Navigate the \~/.local/texmf +- Confirm + +Keep the tool open because we need to copy the location of the *bin* +folder in the next step. + +\## Add the TeX tools to the PATH + +I only use the TeX tools from Spacemacs so I\'ll just add it there. The +Spacemacs dev team decided to make the environment variables, including +the path, load from a config file. Having been at the receiving end of +the confusion which follows from the subtle differences when launching +*Emacs* as daemon, from the GUI menu or from the command line, I +heartily applaud this approach. + +In any case I just update the PATH in *Spacemacs* + +- Space f e e (to open the environment config file) +- find the line with PATH= ( *\'*\' PATH Enter, maybe some /n\* to + find the one) +- Copy the location from the config tool +- Paste it in the PATH value (do not forget the \';\' separator) +- Esc : w (to save changes) +- Space f e E (to reload the new value) + +# Using it + +Well nothing new here, it kind of just works: + +## Creating a PDF + +Open an org file with the *LaTeX headers* or add them with *, e e \#* +and select latex from the list. Check the *LATEX~CLASS~* is one of the +custom classes. + +Then *, e e l o* and ... nothing will happen, ..., well emacs tells it +is busy with the texfile. It takes a while, taskmaster shows processes +blinking in and of existence under the Emacs process. I assume MikTex is +compiling stuff in the background of first use. + +Eventually it returns stating PDF export failed and to consult the log +file. + +## Fix Errors + +The end of the logfile showed scary things of not being able to write. +Let\'s ignore those for now : I learned to treat the first errors in the +LaTeX log output first, and retry and move my way down the log till +there are no more errors. + +First Error : \'Libertine Font\' was not found, a bit further the same +with \'Lato\'. + +Download the fonts, unzip, select all *.ttf* files and right-click +install. + +Try again and the PDF opens ... in the Edge Browser ??? And the Edge +Browser attached itself to the taskbar??? Again??? I need to tackle that +some time. + +Well, it works. Take the document and send it to those you wanted to +impress. diff --git a/content/blog/2020-10-15-setting-up-blogging-with-emacs.md b/content/blog/2020-10-15-setting-up-blogging-with-emacs.md new file mode 100644 index 0000000..09b5584 --- /dev/null +++ b/content/blog/2020-10-15-setting-up-blogging-with-emacs.md @@ -0,0 +1,289 @@ ++++ +title = "Setting Up Blogging with Emacs" +[categories] +tags = [ "emacs" ] +categories = [ "apps" ] ++++ +I\'d like to blog more notes on stuff I do and it would be nice to have +a smooth workflow in my editor of choice. + +It is too late to explain a lot, but all these things were proudly found +elsewhere. See the references list at the end of this post. + +# Creating the blog project + +To deploy to github as a personal blog you have to create a repo in the +form **\.github.io**. Since I name my projects the same as +the repos the name was a quick choice. + +The structure is as follows: + +``` text + -+- blog -+- posts -+- + | +- org-template -+- + | +- css -+- + +- public -+- + +- .github -+- workflow --- main.yml + +- publish.el + +- Makefile + + +``` + +# Configuring org-publish + +This is what the **publish.el** file is for. + +Prepare some snippets for the HTML pages + +First off, a link to the CSS: + +``` elisp +(setq website-html-head "") +``` + +Let\'s also add a navigation menu at the top of each page: + +``` elisp +(setq website-html-preamble + "
+ +
") +``` + +And a footer : + +``` elisp +(setq website-html-postamble "
Copyright 2020 %a (%v + HTML).
Last updated %C.
Built with %c.
") +``` + +And now we can all tie it together by creating the +**org-publish-project-alist**: + +``` elisp +(setq org-publish-project-alist + `(("posts" + + ;; configure project structure + :base-directory "blog/posts/" + :base-extension "org" + :publishing-directory "public/" + :recursive t + :publishing-function org-html-publish-to-html + + ;; configure index creation + :auto-sitemap t + :sitemap-title "Blog Index" + :sitemap-filename "index.org" + :sitemap-style tree + :sitemap-file-entry-format "%d - %t" + :sitemap-sort-files anti-chronologically + + :html-doctype "html5" + :html-html5-fancy t + :html-head ,website-html-head + :html-preamble ,website-html-preamble + :html-postamble ,website-html-postamble + + :author "Peter Tillemans" + :email "pti@snamellit.com" + :with-creator t) + + ("blog-static" + :base-directory "blog/posts/" + :base-extension "png\\|jpg\\|gif\\|pdf\\|mp3\\|ogg\\|swf" + :publishing-directory "public_html/" + :recursive t + :publishing-function org-publish-attachment) + + ("css" + :base-directory "blog/css/" + :base-extension "css" + :publishing-directory "public/css" + :publishing-function org-publish-attachment + :recursive t) + + ("all" :components ("posts" "css" "blog-static")))) +``` + +# Make local testing easy + +The commands to build the blog are not hard, but hard to remember and +hard to type. + +Let\'s make a makefile to help: + +``` makefile +.PHONY: all publish publish_no_init + +all: publish + +publish: publish.el + @echo "Publishing... with current Emacs configurations." + emacs --batch --load publish.el --funcall org-publish-all + +publish_no_init: + @echo "Publishing... with --no-init" + emacs --batch --no-init --load publish.el --funcall org-publish-all + +clean: + @echo "Cleaning up..." + rm -rf public + @rm -rvf *.elc + @rm -rvf public + @rm -rvf ~/.org-timestamps/* + +serve: publish + @echo "Serving site" + python -m http.server --directory public +``` + +For local testing just do: + +``` shell +$ make clean serve +``` + +If the only change is new content then not cleaning is much faster. + +# Deploy to Github Pages + +A slightly modified version of the initial workflow will do the +publishing: + +``` yaml +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the action will run. Triggers the workflow on push or pull request +# events but only for the master branch +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +# 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: + # The type of runner that the job will run on + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - uses: actions/checkout@master + with: + fetch-depth: 1 + + - name: build + uses: docker://iquiw/alpine-emacs + if: github.event.deleted == false + with: + args: emacs --batch --load publish.el --funcall org-publish-all + + + - name: deploy + uses: peaceiris/actions-gh-pages@v1.1.0 + if: success() + env: + GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} + PUBLISH_BRANCH: gh-pages + PUBLISH_DIR: ./public +``` + +Note that you need to put a secret **PERSONAL~ACCESSTOKEN~** with an +access token which has basic push access to the repo to push the built +site to the gh-pages branch. + +For the emacs call, I just copied the command from the **Makefile**. + +After a push the site is usually up by the time I check, say in about a +minute. + +# Setting up a Capture Template + +This proved to be the hardest part to get working. + +I am using **Doom Emacs** so I wrap everything in +**with-eval-after-load**. + +The challenge was that the title is needed to create the slug for the +filename and then again as title for the post. So my ugly solution is to +stuff it in a variable and get the variable back in the template. + +``` elisp +(with-eval-after-load 'org-capture + (defvar snamellit/blog-title "test-title") + + (setq snamellit-blog-template "#+title: %(progn snamellit-blog-title) +#+date: %t +#+author: Peter Tillemans +#+email: pti@snamellit.com + +%?") + + (defun snamellit/capture-blog-post-file () + (let* ((title (read-from-minibuffer "Post Title: ")) + (slug (replace-regexp-in-string "[^a-z0-9]+" "-" (downcase title)))) + (setq snamellit/blog-title title) + (format "~/Projects/ptillemans.github.io/blog/posts/%s-%s.org" + (format-time-string "%Y-%m-%d" (current-time)) + slug))) + + (add-to-list 'org-capture-templates + '("b" "Blog Post" plain + (file snamellit/capture-blog-post-file) + (file "~/.doom.d/tpl-blog-post.org")))) + +``` + +The **tpl-blog-post.org** template file : + +``` org +#+title: %(progn snamellit/blog-title) +#+date: %<%Y-%m-%d> + +%? +``` + +It is very minimal and I\'d like to keep it that way. + +# In use + +To create a blog post + +- SPC-X b will create the post +- Give a title for the post +- A template file is created (unfortunately in plain text) +- Enter the idea, hook and save with C-c C-c +- Open the org file with SPC-f r (open recent file) +- Flesh out the post using org-mode goodness +- save, commit and push to git + +After push the github action will bring it live + +# References + +Following links were useful in setting this up: + +- [How to blog with Emacs Org + mode](https://opensource.com/article/20/3/blog-emacs) +- [GitHub Pages + documentation](https://docs.github.com/en/free-pro-team@latest/github/working-with-github-pages/about-github-pages) +- [The Org Mode Manual](https://orgmode.org/org.html) +- [The Meg in Progress post on building a static blog with + org-mode.](https://meganrenae21.github.io/Meg-in-Progress/posts/blogging-with-org-mode.html) +- [Website with org-mode](https://thenybble.de/projects/orgsite.html) +- [Richard Kallos\' post on site generation with Org + Mode](https://rkallos.com/blog/2017/01/02/static-site-generation-with-org-mode/) +- [Blogging with Org + mode](https://www.brautaset.org/articles/2017/blogging-with-org-mode.html) +- [Org Capture Tricks from + Storax](https://storax.github.io/blog/2016/05/02/org-capture-tricks/) diff --git a/content/blog/2020-10-26-access-nas-drive-using-windows10-pin-login.md b/content/blog/2020-10-26-access-nas-drive-using-windows10-pin-login.md new file mode 100644 index 0000000..125809b --- /dev/null +++ b/content/blog/2020-10-26-access-nas-drive-using-windows10-pin-login.md @@ -0,0 +1,89 @@ ++++ +title = "Access NAS Drive using Windows 10 PIN login" +[categories] +tags = ["nas"] +categories = ["os"] ++++ +Each time I login using the PIN of my Microsoft account, my mounted +folders on the NAS are not mounted. After login I get a notification +that not all mounted drives could be connected. When double clicking on +the failed mount I get a silly error regarding duplicate sessions or +something, and I can access after logging in. + +This is irritating, but also breaks automations like auto importing +notes and documents into evernote from the NAS folder. + +# Attempt 1 + +This seems to be a known issue with PIN (and by extension face +recognition (?)) login. + +On Windows answers I found a +[workaround](https://answers.microsoft.com/en-us/windows/forum/all/unable-to-access-nas-drive-when-logged-in-using/3587cf33-7ed9-403f-ac7c-d4158969412d) +: + +- Open the **Credential Manager** +- Select **Windows Credential** +- **Add a Windows Credential** (it will actually modify the existing + one) +- network address : \\\\ [your NAS]{.underline} +- User name : ~your~ NAS\_`\pti`{=latex} +- Password : [your password on the NAS]{.underline} + +From now on your drive should be mounted after rebooting. + +Unfortunately, it does not. + +Removing and adding again does not help either. + +# Attempt 2 : remap network drives on login + +In 2018 [another +workaround](https://support.microsoft.com/en-us/help/4471218/mapped-network-drive-may-fail-to-reconnect-in-windows-10-version-1809#:~:text=Workaround%201%3A%20Create%20a%20startup%20item&text=If%20the%20device%20has%20not,t%20automatically%20reconnect%20network%20drives.&text=A%20log%20file%20(StartupLog.,to%20open%20the%20mapped%20drives.) +was published. + +This relies on a powershell script launched by a Command script to walk +over unavailable mapped drives and map them again. + +It uses 2 scripts: + +## \*%ProgramData%`\Microsoft`{=latex}`\Windows`{=latex}`\Start`{=latex} Menu`\Programs`{=latex}`\StartUp`{=latex}`\MapDrives`{=latex}.cmd + +A startup scrip to kickoff remapping after login + +``` shell +PowerShell -Command "Set-ExecutionPolicy -Scope CurrentUser Unrestricted" >> "%TEMP%\StartupLog.txt" 2>&1 +PowerShell -File "%SystemDrive%\Scripts\MapDrives.ps1" >> "%TEMP%\StartupLog.txt" 2>&1 +``` + +## %SystemDrive%`\Scripts`{=latex}`\MapDrives`{=latex}.ps1 + +``` shell +$i=3 +while($True){ + $error.clear() + $MappedDrives = Get-SmbMapping |where -property Status -Value Unavailable -EQ | select LocalPath,RemotePath + foreach( $MappedDrive in $MappedDrives) + { + try { + New-SmbMapping -LocalPath $MappedDrive.LocalPath -RemotePath $MappedDrive.RemotePath -Persistent $True + } catch { + Write-Host "There was an error mapping $MappedDrive.RemotePath to $MappedDrive.LocalPath" + } + } + $i = $i - 1 + if($error.Count -eq 0 -Or $i -eq 0) {break} + + Start-Sleep -Seconds 30 + +} +``` + +## Evaluation + +After rebooting and logging in, I still get the error that not all +drives could be mounted, however, by the time I can check in the +explorer the volume is mounted and ready to be used. + +Not very elegant as the notification still feels terribly yanky, but at +least it no longer interferes my workflows. diff --git a/content/blog/2021-01-17-running-emacs-with-wsl2-xrdp.md b/content/blog/2021-01-17-running-emacs-with-wsl2-xrdp.md new file mode 100644 index 0000000..1957020 --- /dev/null +++ b/content/blog/2021-01-17-running-emacs-with-wsl2-xrdp.md @@ -0,0 +1,211 @@ ++++ +title = "Running Emacs with wsl2-xrdp" +[taxonomies] +tags = [ "wsl", "emacs" ] +categories = ["os", "apps" ] ++++ +# Why + +I have been using Emacs in WSL2 using an X server running in Windows and +that works fine as long as long as the computer does not go to sleep. +When the computer goes to sleep, the X connection is cut and the emacs +process crashes. I like to just have my emacs session available so I can +continue where I was last time and I like my computer to go to sleep +when I not use it because Global Warming. + +- start emacs in WSL2 in GUI mode +- can be reconnected after sleep +- copy-paste works transparent + +# Plan + +- use **xrdp** as remote desktop is built into windows +- configure xrdp to startup in WSL2 +- run emacs in a remote desktop session + +# Installation + +## Install xrdp + +[Arch wiki page for xrdp](https://wiki.archlinux.org/index.php/xrdp) + +``` shell +$ yay -S xrdp xorgxrdp-git +``` + +We do not have systemd in WSL2 so I started the daemons manually with a +small script \*/usr/local/bin/start-xrdp: + +``` shell +#!/bin/bash +sudo /usr/sbin/xrdp +sudo /usr/sbin/xrdp-sesman +``` + +We can now start it with **start-xrdp** from the bash command line or +using **wsl -u root /usr/local/bin/start-xrdp**. If not running as root +(or recently authenticated sudo access) it will ask for your Linux +password to allow running as **sudo**. + +Trying to connect lets me login but after a timeout is shows a dialog +box telling me Xorg did not want to start. This is confirmed in the +**/var/log/xrdp-sesman.log** file. + +The root cause is that I cannot read properly because if I could, I +would have read to add *allowed\\~users~=anybody* to the +**/etc/X11/Xwrapper.config** file to allow **Xorg** to be started by +regular users like me instead of only **root**. + +Once that is there I get a nice black screen after login. + +Note: Each time WSL2 restarts it gets a random ip address. So I created +a small script to dig out the actual ip address out of the output of +**ip address** : + +``` shell +#!/bin/bash +ip address show dev eth0 | grep "inet " | sed -e 's/.*inet \([^/]*\).*/\1/' +``` + +Which I gave the original name of **/usr/local/bin/ip-address** (do not +forget to `chmod +x /usr/local/bin/ip-address` to make it executable) so +I can easily call it from powershell with `wsl ip-address`. + +## Installing DBUS replacement + +DBUS is the de-facto GNU/Linux desktop communication bus which glues all +kind of GUI apps together. I do not know if it is directly used by Emacs +or any of the extensions I use, however it reduces the amount of errors +and warnings. + +``` shell +$ yay -S dbus-x11 +``` + +allows xfce and other programs to feel happy and display the desktop +with an emacs window. Now just maximizing the window and the goal is +reached. + +## Automatic start of Emacs only + +In order to just start emacs maximized in a single remote desktop window +we only need to start it as the only program in the XSession. This of +course also means there is no chrome on the X-Window or the ability to +lauch other programs outside of Emacs. This is exactly how I like it. + +``` shell +#file:~/.xinitrc +emacs -mm +``` + +If you rather have a full desktop environment, see further. + +## Installing Xfce4 (Optional) + +I\'d rather have something more lightweight as window manager, but I +have experience with Xfce4 in Arch and I also like something which just +works. + +I only intend to run emacs in the window however having something a bit +more capable which works can help me debug the environment. (I have some +font things to sort out too...) + +``` shell +$ sudo pacman -S xfce4 +``` + +and then start it form **\~/.xinitrc** + +``` shell +emacs & +startxfce4 +``` + +If you have skipped the **DBUS** setup above, this hangs while the +**\~/.xorgxrdp.log** file is filling up with errors complaining about +missing connection to dbus. + +# Using this from Windows + +## Starting from the command-line + +We can start remote desktop session using + + >_ mstsc /v:$(wsl ip-address) /h:2560 /w:1600 + +This works, however we get now a prompt to accept the certificate and we +still need to login. We can make this smoother + +## Accepting the certificate + +You can accept the certificate and let remote desktop add it to your +certificate stores. This solves this interruption. + +However, this still happens each time the ip address changes. + +## Automatic login + +Start **remote desktop** GUI using the search or from the start menu. + +Fill in the ip address returned by `wsl ip-address` and your username. +Enable the flag to store your password. Login and save the configuration +as e.g. **emacs.rdp**. + +We can now start emacs using + + >_ cmdkey /generic:$(wsl ip-address) /user: /pass: + >_ mstsc /v:$(wsl ip-address) + +We can assemble this is a small script **wsl-emacs.ps1** somewhere on +your path: + +``` powershell +wsl -u root /usr/local/bin/start-xrdp +$address = $(wsl ip-address) +$userName = "pti" +$userPwd = "shht!Secret" +cmdkey /generic:$address /user:$userName /pass:$userPwd +mstsc /v:$address +``` + +Which allows us to start our **wsl-emacs** from powershell or as a +startup application with a shortcut. It ensures the **xrdp** daemons are +running (they are idempotent, so the script can be run multiple times), +then the credentials are created so they can be picked up by remote +desktop. + +To add a shortcut to the start menu: + +- Type Win-R and open + \*%AppData%`\Microsoft`{=latex}`\Windows`{=latex}`\Start`{=latex} + Menu`\Programs*`{=latex} +- create a new shortcut +- set as target \*powershell.exe \"& + \'\`\wsl`{=latex}-emacs.ps1\' + +Note the weird **\"&** on the command-line. + +## A note on security + +Since you can run any command from the windows command-line as root, the +current logged in person has full access to anything in the WSL Linux +machines. As such there is not a big hole added by adding your linux +password somewhere securely in your account files such as the startup +script. + +This does not mean you should not have secure passwords, as your linux +box can expose its ports (not by default but just assume they are) and +allow e.g. ssh access. Since I assume a lot of WSL2 hosts will be used +fast and loose as a development box, there is a good chance that sooner +or later a port is opened for reasons. + +So I would not worry too much your linux box password is exposed in the +emacs startup script as long as it is hard enough and not used anywhere +else. If you\'d like to get it from some secure vault on your PC or from +your infrastructure, go for it. + +tldr; + +- use a strong password for your WSL box +- do not reuse an existing password +- secure your startup script so it is only readable by you. diff --git a/content/blog/adding-audit-information-to-entities-in-the-seam-framework.md b/content/blog/adding-audit-information-to-entities-in-the-seam-framework.md index 4781bce..a5f8334 100644 --- a/content/blog/adding-audit-information-to-entities-in-the-seam-framework.md +++ b/content/blog/adding-audit-information-to-entities-in-the-seam-framework.md @@ -2,6 +2,9 @@ title: 'Adding audit information to entities in the Seam framework.' date: 2008-11-11T13:15:51.000Z draft: false +taxonomies: + tags: ["jvm"] + categories: ["programming"] --- Since we write a lot of stuff for use in the production side of the business we need to comply with rules which allow effective control that the processes and procedures have been followed. In the automotive industry people take these measures seriously. @@ -56,4 +59,4 @@ Seam provides a nice utility class aptly named _org.jboss.seam.security.Identity -I provided both the interface and mapped superclass implementations for convenience. All what is now remaining is to extend our configuration POJO's from the TraceableEntity class (and create an update script, and modify the UI to get at the audit info, ...) to make our stuff auditable. \ No newline at end of file +I provided both the interface and mapped superclass implementations for convenience. All what is now remaining is to extend our configuration POJO's from the TraceableEntity class (and create an update script, and modify the UI to get at the audit info, ...) to make our stuff auditable. diff --git a/content/blog/building-debian-packages-in-a-cleanroom.md b/content/blog/building-debian-packages-in-a-cleanroom.md index 3d61f19..e7338c3 100644 --- a/content/blog/building-debian-packages-in-a-cleanroom.md +++ b/content/blog/building-debian-packages-in-a-cleanroom.md @@ -2,6 +2,9 @@ title: 'Building debian packages in a cleanroom' date: 2011-07-14T16:19:00.000Z draft: false +taxonomies: + categories: [ "os" ] + tags: [ "debian" ] --- ### Overview and Goals diff --git a/content/blog/deliverables-and-activities-ahah-moment.md b/content/blog/deliverables-and-activities-ahah-moment.md index 8770896..fc8a511 100644 --- a/content/blog/deliverables-and-activities-ahah-moment.md +++ b/content/blog/deliverables-and-activities-ahah-moment.md @@ -2,6 +2,29 @@ title: 'Deliverables and Activities Ahah!! Moment' date: 2008-07-15T01:32:39.000Z draft: false +taxonomies: + tags: [ "bfo"] + categories: [ "project"] --- -Something I already knew became suddenly clear today : the product or product pieces in the WBS and the relation to the activities. Although I already knew for a long time that it is good practice to make the WBS deliverable oriented instead of activity oriented it remained always a gradient where activities blended seamlessly in deliverables. The key was that I used a mental trick derived from 'Getting Things Done', which says that you must write your activities action oriented, with a verb, active voice, i.e. do something. I was rephrasing the activities this way (more bang per spreadsheet cell).  Now I applied this reasoning to the WBS work packages, but I rewrote it as things, or part of things. Again the clarity improved considerably and wordiness got down. And then : klabammm.... flash of light : activities were clearly separated from the WBS work packages, the grey area between them was gone!!!. I am quite sure if I read my PM books again I will find this trick in every single one, but I had to "invent" it myself before I understood and felt it, instead of just knowing it. \ No newline at end of file +Something I already knew became suddenly clear today : the product or +product pieces in the WBS and the relation to the activities. Although +I already knew for a long time that it is good practice to make the +WBS deliverable oriented instead of activity oriented it remained +always a gradient where activities blended seamlessly in +deliverables. + +The key was that I used a mental trick derived from 'Getting Things +Done', which says that you must write your activities action oriented, +with a verb, active voice, i.e. do something. I was rephrasing the +activities this way (more bang per spreadsheet cell).  + +Now I applied this reasoning to the WBS work packages, but I rewrote +it as things, or part of things. Again the clarity improved +considerably and wordiness got down. And then : klabammm.... flash of +light : activities were clearly separated from the WBS work packages, +the grey area between them was gone!!!. + +I am quite sure if I read my PM books again I will find this trick in +every single one, but I had to "invent" it myself before I understood +and felt it, instead of just knowing it. diff --git a/content/blog/disiable-authentication-for-global-proxy-settings-on-ubuntu.md b/content/blog/disiable-authentication-for-global-proxy-settings-on-ubuntu.md index a41c447..efa5afd 100644 --- a/content/blog/disiable-authentication-for-global-proxy-settings-on-ubuntu.md +++ b/content/blog/disiable-authentication-for-global-proxy-settings-on-ubuntu.md @@ -2,6 +2,9 @@ title: 'Disable authentication for global proxy settings on Ubuntu' date: 2011-07-22T14:33:00.000Z draft: false +taxonomies: + tags: [ "proxy", "ubuntu"] + categories: [ "os"] --- 2011-07-22 Fri 16:33 [Figure out proxy settings Linux](snamellit.html#ID-c965ad9d-522b-4dfe-9574-b8d2a78c83a3) Ubuntu has a Network Proxy chooser which allows you to select a location (a la MacOSX). This works well enough except that the UI is a bit counter-intuitive (in my humble opinion)which causes me to regularly nuke some predefined setting inadvertently. This is not a big deal though. However for update manager (and several other tools) to pick up the new proxy settings you need to push the settings down to the system level. This takes 2 times typing your password. Now, this IS a big deal. When I go back and forth between work and home I have to change this at least 2 times per day. Also it irks me that a detail setting like the proxy is not auto-detected and I need to login to change this 'system' setting. My laptop is essentially a single user system and I do not see switching the proxy as a serious security issue, even with 3 kids running around the home. To come back to auto-detection, while this works fine at work, it fails to figure out that at home that there is a direct connection to the Internet. I can probably fix this by replacing my aging wireless router with my Time Capsule as the Internet gateway router, but I prefer to have the Time Capsule close to my desk. In any case the **Network proxy** shows 2 times the authentication dialog box. A particularly nice feature (Is this new in Natty?) is that the dialog shows for which DBUS setting access is being asked. The first dialog asks access to **com.ubuntu.systemservice.setProxy**. This response is configured in the file **/usr/share/polkit-1/actions/com.ubuntu.systemservice.policy**. This is a very readable XML file which contains a section for the **setProxy** action. I feel no reservation in allowing unchecked access to the **setProxy**. Although this might make a man-in-the-middle attack easier someone with the sophistication to pull this off, does not need to doctor my PC to do it. diff --git a/content/blog/eclipse-ganymede-crashes-on-64-bit-ubuntu-hardy-herron-2.md b/content/blog/eclipse-ganymede-crashes-on-64-bit-ubuntu-hardy-herron-2.md index 6bf11f5..61bbc41 100644 --- a/content/blog/eclipse-ganymede-crashes-on-64-bit-ubuntu-hardy-herron-2.md +++ b/content/blog/eclipse-ganymede-crashes-on-64-bit-ubuntu-hardy-herron-2.md @@ -2,6 +2,11 @@ title: 'Eclipse Ganymede crashes on 64-bit Ubuntu Hardy Herron' date: 2008-07-12T06:56:04.000Z draft: false +taxonomies: + tags: [ "jvm"] + categories: [ "programming"] + + --- In java6 there is a bug in the 64-bit linux version of the jvm which causes eclipse to crash when opening projects with some aditional plugins installed. Both the openjdk as the sun versions are affected. for more info see : diff --git a/content/blog/enable-real-idletime-for-org-mode-on-ubuntu.md b/content/blog/enable-real-idletime-for-org-mode-on-ubuntu.md index a7bcb49..aaac249 100644 --- a/content/blog/enable-real-idletime-for-org-mode-on-ubuntu.md +++ b/content/blog/enable-real-idletime-for-org-mode-on-ubuntu.md @@ -2,6 +2,11 @@ title: 'Enable real idletime for Org Mode on Ubuntu' date: 2011-07-04T09:11:00.000Z draft: false +taxonomies: + tags: [ "emacs" ] + categories: [ "apps" ] + + --- Org Mode can use the idle time to correct time tracking entries. On the Mac this works on the idle time of the computer, on other platforms it uses the idle time of emacs. Hence if you do a significant task in another program it will be idle for org-mode. There is a little program delivered with org-mode sources to estimate the "real" idle time based on the information used by screensavers. Unfortunaltely it is in source code and needs to be compiled first. Everything is actually well documented, just scattered. Let's see where that little program is located diff --git a/content/blog/fix-for-sonar-choking-on-result-returns-more-than-one-elements.md b/content/blog/fix-for-sonar-choking-on-result-returns-more-than-one-elements.md index 9bcfc4d..ca370cb 100644 --- a/content/blog/fix-for-sonar-choking-on-result-returns-more-than-one-elements.md +++ b/content/blog/fix-for-sonar-choking-on-result-returns-more-than-one-elements.md @@ -2,6 +2,11 @@ title: 'Fix for Sonar choking on ''result returns more than one elements''' date: 2011-06-23T12:54:05.000Z draft: false +taxonomies: + tags: [ "CI", "QA" ] + categories: [ "programming"] + + --- Recently our sonar installation on our Hudson CI choked again, this time with an error I have not seen before. It was just before the release of an important milestone for the team, so not being unable to publish new version on the test server could not come on a worse time. @@ -47,4 +52,4 @@ Gave me the project\_id I've been looking for, in my case 2089 Now a quick > select \* from snapshots where project\_id=2089 -Gave the 2 offending rows. A quick glance showed that one of them was very suspicious : the parent\_id was the same as his own project\_id and there were lots of null columns. I deleted the row based on the **id**. Retriggered **hudson** to rebuild the project, and the build succeeded and sonar seems to be happy again. I hope there will be no other repercussions. For our purposes the sonar data is not really critical and we could also restart without any impact. If your sonar data is more critical a better choice would be to restore from backup before the build started failing. \ No newline at end of file +Gave the 2 offending rows. A quick glance showed that one of them was very suspicious : the parent\_id was the same as his own project\_id and there were lots of null columns. I deleted the row based on the **id**. Retriggered **hudson** to rebuild the project, and the build succeeded and sonar seems to be happy again. I hope there will be no other repercussions. For our purposes the sonar data is not really critical and we could also restart without any impact. If your sonar data is more critical a better choice would be to restore from backup before the build started failing. diff --git a/content/blog/gallery.md b/content/blog/gallery.md deleted file mode 100644 index cd135cc..0000000 --- a/content/blog/gallery.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -title: 'Gallery' -date: 2021-11-28T12:57:12.000Z -draft: false ---- - -Discover. Create. Experience. -============================= - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-1.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-2.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-3.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-4.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-5.jpg) - - -![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-6.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-7.jpg) - -* ![Image description](http://www.snamellit.com/wp-content/uploads/2021/11/image-8.jpg) - - -### Let me design your home - -[Book a Consultation](http://www.snamellit.com/contact/) \ No newline at end of file diff --git a/content/blog/java-is-a-first-class-citizen-on-ubuntu-hardy-linux.md b/content/blog/java-is-a-first-class-citizen-on-ubuntu-hardy-linux.md index d3d96b7..67d3954 100644 --- a/content/blog/java-is-a-first-class-citizen-on-ubuntu-hardy-linux.md +++ b/content/blog/java-is-a-first-class-citizen-on-ubuntu-hardy-linux.md @@ -2,6 +2,12 @@ title: 'Java is a First Class Citizen on Ubuntu Hardy Linux' date: 2008-08-08T18:07:52.000Z draft: false +taxonomies: + tags: [ "jvm" ] + categories: [ "programming", "os"] + + + --- Lately I hear a lot of Java bashing from a very vocal part of the Linux community. I do a lot of Java, I use Linux on my main laptop and I like this just fine. I use daily freemind (Java mindmapper) and openoffice (which is Java enabled). I was doing this for the past years since Windows XP ate my C-drive for the N-th time (and now it did the same on my gaming rig at home, grrr... ). diff --git a/content/blog/learnings-from-the-pmi-benelux-day.md b/content/blog/learnings-from-the-pmi-benelux-day.md index 08c1168..fdc0817 100644 --- a/content/blog/learnings-from-the-pmi-benelux-day.md +++ b/content/blog/learnings-from-the-pmi-benelux-day.md @@ -2,6 +2,11 @@ title: 'Learnings from the PMI Benelux Day.' date: 2008-09-28T00:29:48.000Z draft: false +taxonomies: + tags: [ "PMI"] + categories: [ "project"] + + --- -I went to the PMI Benelux Day today. The theme today was _A symphony of Knowledge,_ a theme which ran through the plenary sessions topics. I choose to see the use of earned value techniques applied to the Galileo project presented by Francois Picaut. It was interesting to see how this technique was applied in a quite straightforward manner by just entereing the AC provided by the accountants and the EV provided by the products completed at roughly biweekly milestones. All other performance numbers were calculated from these numbers_._ One learning was that in the case of subcontracted work under a FFP contract, the EV = AC. Of course once you think it over this is evident, but this quarter took a while to drop. Some additional metrics were defined like the ES (Earned Schedule, or the time when the current EV should have been reached) and 'To Complete Performance Indexes' in their cost and scope variations. Apprently these metrics should show the effectiveness of the project management when plotted over time.  He applied EVT on FFP projects with good success as part of project assurance. One anekdote was the case when the project manager presented a 'project on track' report while the EV calculations showed the project would end with a 1.000.000EUR loss. This triggered a discussion about the variances which triggered corrective actions. As such this proved the value of the method to confirm the results from bottom-up or other estimates.  In the area of risk management presented Daniel vander Borcht a session about why the ABCD methodology works where so many other risk management approaches fail. ABCD stnds for Assumption Based Communication Dynamics and a key part is the central role of assumptions in this model. Next to the classic issue register and risk register a assumption register is introduced. I need to research this some more Jean Diederich presented the Test Monkeys and Banana Software talk. He made the case that thinking of testing still occurs way too late in the project. He proposes to involve tests at the earliest opportunity to help start the acceptance test design, release test design, ... in parallel to development rather than afterwards. This is the same story I heard from Suzanne Robertson a couple of weeks ago in the context of requirement gathering. This confirms again my conviction that a good requirements process will make life in the project considerably easier.  A last presentation was by Hedda Pahlson-Muller regarding KPO's or knowledge process outsourcing. This was a very instructive talk which clarified this form of outsourcing. Roughly they provide analysts or other knowledge workers in the company the possibility to have an external team to do the legwork and provide collected data for further analysis by the company itself. Due to this business model they face a glass ceiling to the service they cannot deliver analysis or recommendations. For this they are looking for PM/Consultants to use their experience to analyse and interprete the data for the companies which ask this. Nice interesting day, bought a couple of books, talked PM with other people. Time well spent. \ No newline at end of file +I went to the PMI Benelux Day today. The theme today was _A symphony of Knowledge,_ a theme which ran through the plenary sessions topics. I choose to see the use of earned value techniques applied to the Galileo project presented by Francois Picaut. It was interesting to see how this technique was applied in a quite straightforward manner by just entereing the AC provided by the accountants and the EV provided by the products completed at roughly biweekly milestones. All other performance numbers were calculated from these numbers_._ One learning was that in the case of subcontracted work under a FFP contract, the EV = AC. Of course once you think it over this is evident, but this quarter took a while to drop. Some additional metrics were defined like the ES (Earned Schedule, or the time when the current EV should have been reached) and 'To Complete Performance Indexes' in their cost and scope variations. Apprently these metrics should show the effectiveness of the project management when plotted over time.  He applied EVT on FFP projects with good success as part of project assurance. One anekdote was the case when the project manager presented a 'project on track' report while the EV calculations showed the project would end with a 1.000.000EUR loss. This triggered a discussion about the variances which triggered corrective actions. As such this proved the value of the method to confirm the results from bottom-up or other estimates.  In the area of risk management presented Daniel vander Borcht a session about why the ABCD methodology works where so many other risk management approaches fail. ABCD stnds for Assumption Based Communication Dynamics and a key part is the central role of assumptions in this model. Next to the classic issue register and risk register a assumption register is introduced. I need to research this some more Jean Diederich presented the Test Monkeys and Banana Software talk. He made the case that thinking of testing still occurs way too late in the project. He proposes to involve tests at the earliest opportunity to help start the acceptance test design, release test design, ... in parallel to development rather than afterwards. This is the same story I heard from Suzanne Robertson a couple of weeks ago in the context of requirement gathering. This confirms again my conviction that a good requirements process will make life in the project considerably easier.  A last presentation was by Hedda Pahlson-Muller regarding KPO's or knowledge process outsourcing. This was a very instructive talk which clarified this form of outsourcing. Roughly they provide analysts or other knowledge workers in the company the possibility to have an external team to do the legwork and provide collected data for further analysis by the company itself. Due to this business model they face a glass ceiling to the service they cannot deliver analysis or recommendations. For this they are looking for PM/Consultants to use their experience to analyse and interprete the data for the companies which ask this. Nice interesting day, bought a couple of books, talked PM with other people. Time well spent. diff --git a/content/blog/logging-notification-in-ubuntu.md b/content/blog/logging-notification-in-ubuntu.md index 441642d..d55a495 100644 --- a/content/blog/logging-notification-in-ubuntu.md +++ b/content/blog/logging-notification-in-ubuntu.md @@ -2,6 +2,11 @@ title: 'Logging Notification Messages in Ubuntu' date: 2013-07-22T11:48:16.000Z draft: false +taxonomies: + tags: [ "apps"] + categories: [ "os"] + + --- Ubuntu contains a nice notification system to talk to the user about noteworthy events. However when the message dissappears, by default, it is gone. Often I am busy with something else when the notification pops up and I pay little notice. Then somewhere in my brain, something gets triggered by a word, and by the time I focus on the message to **really** read it, the message disappears. Some of these appear after booting or logging in, so it is not trivial to redisplay them. Then I really need a system for logging notification messages for reading what I missed. Ideally there was a scroll back buffer in the notification feature. Maybe there is, but I didn't find it. @@ -14,4 +19,4 @@ The developers provided a log in \*~/.cache/notify-osd.log\*. (see \[\[https://w Logging Notifications with an App --------------------------------- -There is also an app for that. You can install the package indicator-notifications which keeps track of notifcations that you receive. You can install with the following $ sudo add-apt-repository ppa:jconti/recent-notifications $ sudo apt-get update $ sudo apt-get install indicator-notifications You'll have to log out and log back in. It shows up as a mailbox in the top panel and turns green when you get new messages. For more info about logging notifications see [http://askubuntu.com/questions/288348/how-can-i-read-notifyosd-messages-after-they-are-displayed](http://askubuntu.com/questions/288348/how-can-i-read-notifyosd-messages-after-they-are-displayed "this AskUbuntu Question") \ No newline at end of file +There is also an app for that. You can install the package indicator-notifications which keeps track of notifcations that you receive. You can install with the following $ sudo add-apt-repository ppa:jconti/recent-notifications $ sudo apt-get update $ sudo apt-get install indicator-notifications You'll have to log out and log back in. It shows up as a mailbox in the top panel and turns green when you get new messages. For more info about logging notifications see [http://askubuntu.com/questions/288348/how-can-i-read-notifyosd-messages-after-they-are-displayed](http://askubuntu.com/questions/288348/how-can-i-read-notifyosd-messages-after-they-are-displayed "this AskUbuntu Question") diff --git a/content/blog/making_dotfiles_visible_on_mac.md b/content/blog/making_dotfiles_visible_on_mac.md index 483c0ae..02ea3e7 100644 --- a/content/blog/making_dotfiles_visible_on_mac.md +++ b/content/blog/making_dotfiles_visible_on_mac.md @@ -2,6 +2,11 @@ title: 'Making dotFiles visible on the Mac' date: 2011-07-20T20:56:00.000Z draft: false +taxonomies: + tags: [ "mac" ] + categories: [ "os", "apps" ] + + --- Dotfiles, can't live with 'em, can't live without 'em. Dot files are the term for folders and files starting with a '.' so they do not show upwhen using plain **ls**. Tha Mac has a cool keycode to toggle visibility of dotfiles in the **File Open/Save** dialog, but this does not work in the finder for one reason or another. In practice this meant I had to deal with dotFiles and dotDriectories I found on the net some incantation to force the setting for the finder to show/hide the dotfiles. Upon restarting the finder the widows will reopen with the updated setting. I found on the net some snippets of sh script (but I forgot where and cannot immediately retrieve it), and I immediately dumped them in my **~/bin** folder. ~/bin/hide-dotfiles : diff --git a/content/blog/openproj-locks-up-with-blank-grey-windows.md b/content/blog/openproj-locks-up-with-blank-grey-windows.md index 0f3c252..3968a23 100644 --- a/content/blog/openproj-locks-up-with-blank-grey-windows.md +++ b/content/blog/openproj-locks-up-with-blank-grey-windows.md @@ -2,6 +2,39 @@ title: 'OpenProj Locks up with Blank Grey Windows' date: 2008-06-11T11:20:02.000Z draft: false +taxonomies: + tags: [ "proxy"] + categories: [ "project", "apps"] --- -The symptom is that after starting sometimes there is some blurp dialog and afterwards the _**Tip of the Day**_ dialog appears. This stays grey and the application accepts no more events. You need to kill it to get out of there. This happens at the place which is protected by a firewall and has no transparent proxy. At home it worked fine albeit on my Macbook and not on my Ubuntu laptop. The reason  is that there is some phone home functionality built in and with wireshark I could see the application trying to connect to a webserver. Probably to get the tips of the day. Behind the firewall this did not work and the application is just hanging there. I suspect that sooner or later it will time out, but I am not that patient. Since this is a regular occurence with java applications I also immediately knew that I had to tell it where the proxy can be found. In the file **~/.openproj/run.conf** file replace the line : JAVA\_OPTS="-Xms128m -Xmx768m" with JAVA\_OPTS="-Dhttp.proxyHost=proxy -Dhttp.proxyPort=3128 -Xms128m -Xmx768m" This directs the java runtime library to use the proxy **http://proxy:3128/.** And voila! ... Openproj starts immediately and in its full glory? \ No newline at end of file +The symptom is that after starting sometimes there is some blurp +dialog and afterwards the _**Tip of the Day**_ dialog appears. This +stays grey and the application accepts no more events. You need to +kill it to get out of there. + +This happens at the place which is protected by a firewall and has no +transparent proxy. At home it worked fine albeit on my Macbook and not +on my Ubuntu laptop. + +The reason  is that there is some phone home +functionality built in and with wireshark I could see the application +trying to connect to a webserver. Probably to get the tips of the +day. Behind the firewall this did not work and the application is just +hanging there. + +I suspect that sooner or later it will time out, but I +am not that patient. Since this is a regular occurence with java +applications I also immediately knew that I had to tell it where the +proxy can be found. In the file **~/.openproj/run.conf** file replace +the line : + + JAVA\_OPTS="-Xms128m -Xmx768m" + +with + + JAVA\_OPTS="-Dhttp.proxyHost=proxy -Dhttp.proxyPort=3128 -Xms128m +-Xmx768m" + +This directs the java runtime library to use the proxy +**http://proxy:3128/.** And voila! ... Openproj starts immediately +and in its full glory? diff --git a/content/blog/organizing-windows-using-the-keyboard-with-compiz-grid.md b/content/blog/organizing-windows-using-the-keyboard-with-compiz-grid.md index 0e87336..31f6d7a 100644 --- a/content/blog/organizing-windows-using-the-keyboard-with-compiz-grid.md +++ b/content/blog/organizing-windows-using-the-keyboard-with-compiz-grid.md @@ -2,9 +2,41 @@ title: 'Organizing Windows using the Keyboard with Compiz Grid' date: 2011-06-30T11:44:00.000Z draft: false +taxonomies: + tags: [ "ubuntu" ] + categories: [ "os"] + + --- -The Mac has a great utility called Divvy to easily map windows to loacation on the screen using the keyboard. Fiddling with the mouse to get multiple windows in the right location is a productivity killer and a pain in the neck (or shoulder, or elbow, or …) Ubuntu (and of course any other Linux distro with compiz) has a similar feature built in as a plugin for compiz. Type Alt-F2 and enter **ccsm** + Return in the command prompt to launch the CompizConfig Settings manager. Select the **Window Management** from the left menu and enable the **Grid** plugin. Click on it so you can look at the key bindings in the **Bindings** tab. If you are on a desktop or a big laptop with a separate numeric keyboard you are set. As you can see the locations for the windows are by default mapped in a logical fashion like the arrow keys on the numeric keypad. However my laptop does not have a separate numeric keyboard and enabling it before typing the key code is a pain. Remapping them is easy by clicking on the button with the key code. A window appears with a **Grab key code** button. Click it and type the new keycode you want to assign it to. If there is a conflict, you will get a window explaingin the conflict and asking how to resolve it. My first attempt was to remap the laptop numeric keys using the super keys. This conflicted with the unity launcher since the top row 7-8-9 map to the apps in the launcher. To avoid conflicts I use now Control-Super with the keys around the j-key (which is the home key for the right hand) Also autokey (a text macro expander) is mapped to Super-K +The Mac has a great utility called Divvy to easily map windows to +loacation on the screen using the keyboard. Fiddling with the mouse to +get multiple windows in the right location is a productivity killer +and a pain in the neck (or shoulder, or elbow, or …) + +Ubuntu (and of course any other Linux distro with compiz) has a +similar feature built in as a plugin for compiz. Type Alt-F2 and enter +**ccsm** + Return in the command prompt to launch the CompizConfig +Settings manager. + +Select the **Window Management** from the left menu and enable the +**Grid** plugin. Click on it so you can look at the key bindings in +the **Bindings** tab. If you are on a desktop or a big laptop with a +separate numeric keyboard you are set. As you can see the locations +for the windows are by default mapped in a logical fashion like the +arrow keys on the numeric keypad. However my laptop does not have a +separate numeric keyboard and enabling it before typing the key code +is a pain. Remapping them is easy by clicking on the button with the +key code. A window appears with a **Grab key code** button. Click it +and type the new keycode you want to assign it to. + +If there is a conflict, you will get a window explaingin the conflict +and asking how to resolve it. My first attempt was to remap the laptop +numeric keys using the super keys. This conflicted with the unity +launcher since the top row 7-8-9 map to the apps in the launcher. To +avoid conflicts I use now Control-Super with the keys around the j-key +(which is the home key for the right hand) Also autokey (a text macro +expander) is mapped to Super-K * Control-Super-j : 100% (maximize) * Control-Super-h : 50% left @@ -16,4 +48,8 @@ The Mac has a great utility called Divvy to easily map windows to loacation on t * Control-Super-n : 25% bottom-left * Control-Super-, : 25% bottom-right -If Control-Super-j is used to maximize a window, clicking on one of the other keys will first restore it to the original size and position and only map it to its place on the second click. I consider this a feature, but you are free to interprete it as a bug. Result, this is now super practical way to divide my windows on my screen. \ No newline at end of file +If Control-Super-j is used to maximize a window, clicking on one of +the other keys will first restore it to the original size and position +and only map it to its place on the second click. I consider this a +feature, but you are free to interprete it as a bug. Result, this is +now super practical way to divide my windows on my screen. diff --git a/content/blog/proxy-support-for-grails.md b/content/blog/proxy-support-for-grails.md index b01e3c8..5b6908c 100644 --- a/content/blog/proxy-support-for-grails.md +++ b/content/blog/proxy-support-for-grails.md @@ -2,18 +2,32 @@ title: 'Proxy Support for Grails' date: 2011-06-28T11:59:43.000Z draft: false +taxonomies: + tags: [ "jvm"] + categories: [ "programming"] --- -Not a big thing, actually for me it is. I am always struggling with proxy settings. It requires a lot of different incantations to be done, every program deals with it differently, support for platform settings is flaky, ... Grails deals with this is a way which pleasantly surprised me : +Not a big thing, actually for me it is. I am always struggling with +proxy settings. It requires a lot of different incantations to be +done, every program deals with it differently, support for platform +settings is flaky, ... Grails deals with this is a way which +pleasantly surprised me : -> grails add-proxy --host= --port= e.g. grails add-proxy client --host=proxy --port=3128 + > grails add-proxy --host= --port= e.g. grails add-proxy client --host=proxy --port=3128 -allows you to create a setting for a proxy and bind it to a name. It also supports username/password. Switching to the setting involves only +allows you to create a setting for a proxy and bind it to a name. It +also supports username/password. Switching to the setting involves +only -> grails set-proxy client + > grails set-proxy client to enable the proxy setting, and -> grails clear-proxy + > grails clear-proxy -when I get back in a transparent environment. (for completeness there is a **remove-proxy** command which is useful to remove those passwords after the need has passed). I particularly impressed  that this was done in a simple and straightforward without the need fo brain gymnastics trying to remember which arcane curse needs to be put at what location in which file. Nice. \ No newline at end of file +when I get back in a transparent environment. (for completeness there +is a **remove-proxy** command which is useful to remove those +passwords after the need has passed). I particularly impressed  that +this was done in a simple and straightforward without the need fo +brain gymnastics trying to remember which arcane curse needs to be put +at what location in which file. Nice. diff --git a/content/blog/uploading-documents-to-plone-with-webdav.md b/content/blog/uploading-documents-to-plone-with-webdav.md index 53ec0b3..0c86bcf 100644 --- a/content/blog/uploading-documents-to-plone-with-webdav.md +++ b/content/blog/uploading-documents-to-plone-with-webdav.md @@ -2,14 +2,24 @@ title: 'Uploading documents to Plone with WebDAV' date: 2012-03-29T22:03:41.000Z draft: false +taxonomies: + tags: [ "cms" ] + categories: [ "apps"] + + --- -Preparing **Plone** to start the WebDAV service and setting the permissions to allow the users to make use of it is only half the battle, actually using it, especially from automated systems like build servers is another struggle. +Preparing **Plone** to start the WebDAV service and setting the +permissions to allow the users to make use of it is only half the +battle, actually using it, especially from automated systems like +build servers is another struggle. Using the _Cadaver_ WebDAV client --------------------------------- -Although WebDAV is currently well integrated in modern desktop environments, a CLI alternative is useful for automation, like _Jenkins_ build scripts. +Although WebDAV is currently well integrated in modern desktop +environments, a CLI alternative is useful for automation, like +_Jenkins_ build scripts. ### Automatic Login @@ -211,4 +221,4 @@ Progress: [=============================>] 100,0% of 28561 bytes succeeded. Uploading ./images/SJ09_9.jpg to `/cmdb/Members/pti/images/SJ09_9.jpg': Progress: [=============================>] 100,0% of 27381 bytes succeeded. Connection to `cmdb-uat.elex.be' closed. -``` \ No newline at end of file +``` diff --git a/content/blog/vraagstukken-5de-leerjaar.md b/content/blog/vraagstukken-5de-leerjaar.md deleted file mode 100644 index d3ae39c..0000000 --- a/content/blog/vraagstukken-5de-leerjaar.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -title: 'Vraagstukken 5de leerjaar' -date: 2011-06-19T19:24:26.000Z -draft: false ---- - -Wiskunde Vraagstukken 5e leerjaar -================================= - -Bij de voorbereiding voor de wiskunde proeven op het einde van het 5e leerjaar kwam Hendrik een aantal vraagstukken te kort zodat hij de uitkomsten al van buiten kende, en zich niet meer bekommerde om de manier waarop de uitkomst bekomen werd. Ik heb er dus een aantal bij verzonnen die voor hem heel herkenbaar waren. Dat vond hij fantastisch! Ik heb deze vragen dan maar geblogd op aandringen van Hendrik. ik vond dat een schitterend idee want dan ben ik er zeker van dat ik ze kan terugvinden als Emma en Lotte ze nodig hebben. En ondertussen kunnen anderen er ook plezier aan beleven. - -Vraagstuk 1 ------------ - -Piet loopt 800m in 2m44.76 sec. Jan deed er 15.34 sec langer over. - -Wat was de tijd van Jan? - -Formule : ......................................................... - -Antwoord : ........................................................ - -................................................................... - -Vraagstuk 2 ------------ - -We rijden van Antwerpen naar het Kaunertal (840km) in 8 uur tijd. - -a) Wat was de gemiddelde snelheid? - -Formule : ......................................................... - -Antwoord : ........................................................ - -................................................................... - -b) We zijn onderweg 1u gestopt om te eten. Wat was de gemiddelde - -snelheid toen toen we aan het rijden waren. - -Formule : ......................................................... - -Antwoord : ........................................................ - -................................................................... - -Vraagstuk 3 ------------ - -Hendrik loopt 3300m in 12min. Hoeveel km/u liep hij gemiddeld? - -Formule : ......................................................... - -Antwoord : ........................................................ - -................................................................... - -Vraagstuk 4 ------------ - -Een sportwagen rijdt 240km op een circuit in 1 u. - -Een zeilvis zwemt 60km in de zee in 1u. - -De snelheid van de auto en de zeilvis verhouden zich als ..... tot ..... - -Vraagstuk 5 ------------ - -Opa gaat 's maandags fietsen met de gepensioneerden - -Hij vertrekt om 13h45 en rijdt een toertje van 60km. Ze hebben in - -Postel een halfuurtje pauze genomen om een trappist te drinken. - -Als de gepensioneerden gemiddeld 20km/u rijden, hoe laat is Opa dan - -terug? - -Formule : ......................................................... - -Antwoord : ........................................................ - -................................................................... - -Vraagstuk 6 ------------ - -Zoek de kans : - -We doen alle schaakstukken en een zak en schudden ermee tot ze - -allemaal door elkaar gehusseld zijn. Lotte wordt geblindoekt en - -haalt een stuk uit de zak. - -Wat is de kans dat : - -``` -|--------------------+---------------+----+--------------| -|                    |               |    |              | -| een wit stuk is    | ............. | op | ............ | -|                    |               |    |              | -| een zwarte pion is | ............. | op | ............ | -|                    |               |    |              | -| een paard is       | ............. | op | ............ | -|                    |               |    |              | -| een koningin is    | ............. | op | ............ | -|                    |               |    |              | -| de witte koning is | ............. | op | ............ | -|--------------------+---------------+----+--------------| -``` \ No newline at end of file diff --git a/public/css/main.css b/public/css/main.css deleted file mode 100644 index 95ea5ff..0000000 --- a/public/css/main.css +++ /dev/null @@ -1,3 +0,0 @@ -/*! tailwindcss v2.2.19 | MIT License | https://tailwindcss.com*/ - -/*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-webkit-text-size-adjust:100%;line-height:1.15;-moz-tab-size:4;-o-tab-size:4;tab-size:4}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;margin:0}hr{color:inherit;height:0}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;text-indent:0}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{border:0 solid;box-sizing:border-box}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{color:#9ca3af;opacity:1}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#9ca3af;opacity:1}input::placeholder,textarea::placeholder{color:#9ca3af;opacity:1}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{color:inherit;line-height:inherit;padding:0}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{height:auto;max-width:100%}[hidden]{display:none}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}h1{font-size:1.5rem;line-height:2rem}h2{font-size:1.25rem;line-height:1.75rem}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.sr-only{clip:rect(0,0,0,0);border-width:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.top-0{top:0}.top-12{top:3rem}.right-0{right:0}.right-2{right:.5rem}.left-0{left:0}.left-2{left:.5rem}.-left-1\/2{left:-50%}.z-10{z-index:10}.z-30{z-index:30}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-2{margin-bottom:.5rem;margin-top:.5rem}.my-6{margin-bottom:1.5rem;margin-top:1.5rem}.mt-2{margin-top:.5rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-7{margin-top:1.75rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-16{margin-top:4rem}.mt-40{margin-top:10rem}.mr-2{margin-right:.5rem}.mr-4{margin-right:1rem}.mb-2{margin-bottom:.5rem}.mb-6{margin-bottom:1.5rem}.mb-auto{margin-bottom:auto}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.contents{display:contents}.hidden{display:none}.h-0{height:0}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-12{height:3rem}.h-16{height:4rem}.h-36{height:9rem}.h-40{height:10rem}.h-2\/3{height:66.666667%}.h-full{height:100%}.h-screen{height:100vh}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-12{width:3rem}.w-24{width:6rem}.w-28{width:7rem}.w-40{width:10rem}.w-48{width:12rem}.w-64{width:16rem}.w-auto{width:auto}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.max-w-7xl{max-width:80rem}.flex-1{flex:1 1 0%}.flex-shrink-0{flex-shrink:0}.origin-top-right{transform-origin:top right}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x:0px}.-translate-x-full{--tw-translate-x:-100%}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{opacity:0;transform:scale(2)}}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}@keyframes bounce{0%,to{-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1);transform:translateY(-25%)}50%{-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1);transform:none}}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-5{row-gap:1.25rem}.gap-y-6{row-gap:1.5rem}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}.space-x-56>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(14rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(14rem*var(--tw-space-x-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-bottom-width:calc(1px*var(--tw-divide-y-reverse));border-top-width:calc(1px*(1 - var(--tw-divide-y-reverse)))}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-scroll{overflow:scroll}.overscroll-none{-ms-scroll-chaining:none;overscroll-behavior:none}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.border-2{border-width:2px}.border{border-width:1px}.border-t-2{border-top-width:2px}.border-b-2{border-bottom-width:2px}.border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-gray-400{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.border-gray-800{--tw-border-opacity:1;border-color:rgba(31,41,55,var(--tw-border-opacity))}.dark .dark\:border-black{--tw-border-opacity:1;border-color:rgba(0,0,0,var(--tw-border-opacity))}.dark .dark\:border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.dark .dark\:border-gray-400{--tw-border-opacity:1;border-color:rgba(156,163,175,var(--tw-border-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.bg-gray-300{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.bg-gray-400{--tw-bg-opacity:1;background-color:rgba(156,163,175,var(--tw-bg-opacity))}.bg-gray-700{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.bg-gray-900{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity:1;background-color:rgba(59,130,246,var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity:1;background-color:rgba(29,78,216,var(--tw-bg-opacity))}.bg-indigo-500{--tw-bg-opacity:1;background-color:rgba(99,102,241,var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-gray-300:hover{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.hover\:bg-indigo-400:hover{--tw-bg-opacity:1;background-color:rgba(129,140,248,var(--tw-bg-opacity))}.dark .dark\:bg-gray-500{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.dark .dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.dark .dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.dark .dark\:hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgba(75,85,99,var(--tw-bg-opacity))}.fill-current{fill:currentColor}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.py-0{padding-bottom:0;padding-top:0}.py-1{padding-bottom:.25rem;padding-top:.25rem}.py-2{padding-bottom:.5rem;padding-top:.5rem}.py-4{padding-bottom:1rem;padding-top:1rem}.py-6{padding-bottom:1.5rem;padding-top:1.5rem}.py-0\.5{padding-bottom:.125rem;padding-top:.125rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-6{padding-top:1.5rem}.pb-3{padding-bottom:.75rem}.pl-1{padding-left:.25rem}.pl-2{padding-left:.5rem}.pl-4{padding-left:1rem}.text-left{text-align:left}.text-center{text-align:center}.font-sans{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-medium{font-weight:500}.font-bold{font-weight:700}.uppercase{text-transform:uppercase}.leading-5{line-height:1.25rem}.text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity:1;color:rgba(29,78,216,var(--tw-text-opacity))}.text-indigo-500{--tw-text-opacity:1;color:rgba(99,102,241,var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.hover\:text-blue-500:hover{--tw-text-opacity:1;color:rgba(59,130,246,var(--tw-text-opacity))}.hover\:text-indigo-400:hover{--tw-text-opacity:1;color:rgba(129,140,248,var(--tw-text-opacity))}.dark .dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark .dark\:text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.dark .dark\:text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.dark .dark\:hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.no-underline{text-decoration:none}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-100{opacity:1}*,:after,:before{--tw-shadow:0 0 #0000}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-2xl,.shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-2:focus,.ring-1{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:ring-inset:focus{--tw-ring-inset:inset}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgba(0,0,0,var(--tw-ring-opacity))}.focus\:ring-white:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(255,255,255,var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus\:ring-offset-gray-800:focus{--tw-ring-offset-color:#1f2937}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition{transition-duration:.15s;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{transition-duration:75ms}.duration-100{transition-duration:.1s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}html{scroll-behavior:smooth}#page-content a{text-decoration:underline}#page-content p,h2{padding-bottom:1rem;padding-top:1rem}#page-content :is(h1,h2,h3,h4,h5,h6){text-decoration:underline}#page-content pre{margin-bottom:1rem;margin-top:1rem;overflow-x:auto;padding:1rem}@media (min-width:640px){.sm\:mt-0{margin-top:0}.sm\:mt-8{margin-top:2rem}.sm\:mt-10{margin-top:2.5rem}.sm\:mt-32{margin-top:8rem}.sm\:mr-4{margin-right:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:h-1\/2{height:50%}.sm\:w-1\/2{width:50%}.sm\:w-2\/3{width:66.666667%}.sm\:w-1\/4{width:25%}.sm\:w-3\/4{width:75%}.sm\:w-1\/5{width:20%}.sm\:w-full{width:100%}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:items-center{align-items:center}.sm\:gap-x-7{-moz-column-gap:1.75rem;column-gap:1.75rem}.sm\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}}@media (min-width:768px){.md\:mt-0{margin-top:0}.md\:max-w-md{max-width:28rem}.md\:flex-row{flex-direction:row}}@media (min-width:1024px){.lg\:block{display:block}.lg\:hidden{display:none}.lg\:px-8{padding-left:2rem;padding-right:2rem}} \ No newline at end of file diff --git a/public/elasticlunr.min.js b/public/elasticlunr.min.js deleted file mode 100644 index 79dad65..0000000 --- a/public/elasticlunr.min.js +++ /dev/null @@ -1,10 +0,0 @@ -/** - * elasticlunr - http://weixsong.github.io - * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.6 - * - * Copyright (C) 2017 Oliver Nightingale - * Copyright (C) 2017 Wei Song - * MIT Licensed - * @license - */ -!function(){function e(e){if(null===e||"object"!=typeof e)return e;var t=e.constructor();for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t}var t=function(e){var n=new t.Index;return n.pipeline.add(t.trimmer,t.stopWordFilter,t.stemmer),e&&e.call(n,n),n};t.version="0.9.5",lunr=t,t.utils={},t.utils.warn=function(e){return function(t){e.console&&console.warn&&console.warn(t)}}(this),t.utils.toString=function(e){return void 0===e||null===e?"":e.toString()},t.EventEmitter=function(){this.events={}},t.EventEmitter.prototype.addListener=function(){var e=Array.prototype.slice.call(arguments),t=e.pop(),n=e;if("function"!=typeof t)throw new TypeError("last argument must be a function");n.forEach(function(e){this.hasHandler(e)||(this.events[e]=[]),this.events[e].push(t)},this)},t.EventEmitter.prototype.removeListener=function(e,t){if(this.hasHandler(e)){var n=this.events[e].indexOf(t);-1!==n&&(this.events[e].splice(n,1),0==this.events[e].length&&delete this.events[e])}},t.EventEmitter.prototype.emit=function(e){if(this.hasHandler(e)){var t=Array.prototype.slice.call(arguments,1);this.events[e].forEach(function(e){e.apply(void 0,t)},this)}},t.EventEmitter.prototype.hasHandler=function(e){return e in this.events},t.tokenizer=function(e){if(!arguments.length||null===e||void 0===e)return[];if(Array.isArray(e)){var n=e.filter(function(e){return null===e||void 0===e?!1:!0});n=n.map(function(e){return t.utils.toString(e).toLowerCase()});var i=[];return n.forEach(function(e){var n=e.split(t.tokenizer.seperator);i=i.concat(n)},this),i}return e.toString().trim().toLowerCase().split(t.tokenizer.seperator)},t.tokenizer.defaultSeperator=/[\s\-]+/,t.tokenizer.seperator=t.tokenizer.defaultSeperator,t.tokenizer.setSeperator=function(e){null!==e&&void 0!==e&&"object"==typeof e&&(t.tokenizer.seperator=e)},t.tokenizer.resetSeperator=function(){t.tokenizer.seperator=t.tokenizer.defaultSeperator},t.tokenizer.getSeperator=function(){return t.tokenizer.seperator},t.Pipeline=function(){this._queue=[]},t.Pipeline.registeredFunctions={},t.Pipeline.registerFunction=function(e,n){n in t.Pipeline.registeredFunctions&&t.utils.warn("Overwriting existing registered function: "+n),e.label=n,t.Pipeline.registeredFunctions[n]=e},t.Pipeline.getRegisteredFunction=function(e){return e in t.Pipeline.registeredFunctions!=!0?null:t.Pipeline.registeredFunctions[e]},t.Pipeline.warnIfFunctionNotRegistered=function(e){var n=e.label&&e.label in this.registeredFunctions;n||t.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},t.Pipeline.load=function(e){var n=new t.Pipeline;return e.forEach(function(e){var i=t.Pipeline.getRegisteredFunction(e);if(!i)throw new Error("Cannot load un-registered function: "+e);n.add(i)}),n},t.Pipeline.prototype.add=function(){var e=Array.prototype.slice.call(arguments);e.forEach(function(e){t.Pipeline.warnIfFunctionNotRegistered(e),this._queue.push(e)},this)},t.Pipeline.prototype.after=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i+1,0,n)},t.Pipeline.prototype.before=function(e,n){t.Pipeline.warnIfFunctionNotRegistered(n);var i=this._queue.indexOf(e);if(-1===i)throw new Error("Cannot find existingFn");this._queue.splice(i,0,n)},t.Pipeline.prototype.remove=function(e){var t=this._queue.indexOf(e);-1!==t&&this._queue.splice(t,1)},t.Pipeline.prototype.run=function(e){for(var t=[],n=e.length,i=this._queue.length,o=0;n>o;o++){for(var r=e[o],s=0;i>s&&(r=this._queue[s](r,o,e),void 0!==r&&null!==r);s++);void 0!==r&&null!==r&&t.push(r)}return t},t.Pipeline.prototype.reset=function(){this._queue=[]},t.Pipeline.prototype.get=function(){return this._queue},t.Pipeline.prototype.toJSON=function(){return this._queue.map(function(e){return t.Pipeline.warnIfFunctionNotRegistered(e),e.label})},t.Index=function(){this._fields=[],this._ref="id",this.pipeline=new t.Pipeline,this.documentStore=new t.DocumentStore,this.index={},this.eventEmitter=new t.EventEmitter,this._idfCache={},this.on("add","remove","update",function(){this._idfCache={}}.bind(this))},t.Index.prototype.on=function(){var e=Array.prototype.slice.call(arguments);return this.eventEmitter.addListener.apply(this.eventEmitter,e)},t.Index.prototype.off=function(e,t){return this.eventEmitter.removeListener(e,t)},t.Index.load=function(e){e.version!==t.version&&t.utils.warn("version mismatch: current "+t.version+" importing "+e.version);var n=new this;n._fields=e.fields,n._ref=e.ref,n.documentStore=t.DocumentStore.load(e.documentStore),n.pipeline=t.Pipeline.load(e.pipeline),n.index={};for(var i in e.index)n.index[i]=t.InvertedIndex.load(e.index[i]);return n},t.Index.prototype.addField=function(e){return this._fields.push(e),this.index[e]=new t.InvertedIndex,this},t.Index.prototype.setRef=function(e){return this._ref=e,this},t.Index.prototype.saveDocument=function(e){return this.documentStore=new t.DocumentStore(e),this},t.Index.prototype.addDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.addDoc(i,e),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));this.documentStore.addFieldLength(i,n,o.length);var r={};o.forEach(function(e){e in r?r[e]+=1:r[e]=1},this);for(var s in r){var u=r[s];u=Math.sqrt(u),this.index[n].addToken(s,{ref:i,tf:u})}},this),n&&this.eventEmitter.emit("add",e,this)}},t.Index.prototype.removeDocByRef=function(e){if(e&&this.documentStore.isDocStored()!==!1&&this.documentStore.hasDoc(e)){var t=this.documentStore.getDoc(e);this.removeDoc(t,!1)}},t.Index.prototype.removeDoc=function(e,n){if(e){var n=void 0===n?!0:n,i=e[this._ref];this.documentStore.hasDoc(i)&&(this.documentStore.removeDoc(i),this._fields.forEach(function(n){var o=this.pipeline.run(t.tokenizer(e[n]));o.forEach(function(e){this.index[n].removeToken(e,i)},this)},this),n&&this.eventEmitter.emit("remove",e,this))}},t.Index.prototype.updateDoc=function(e,t){var t=void 0===t?!0:t;this.removeDocByRef(e[this._ref],!1),this.addDoc(e,!1),t&&this.eventEmitter.emit("update",e,this)},t.Index.prototype.idf=function(e,t){var n="@"+t+"/"+e;if(Object.prototype.hasOwnProperty.call(this._idfCache,n))return this._idfCache[n];var i=this.index[t].getDocFreq(e),o=1+Math.log(this.documentStore.length/(i+1));return this._idfCache[n]=o,o},t.Index.prototype.getFields=function(){return this._fields.slice()},t.Index.prototype.search=function(e,n){if(!e)return[];e="string"==typeof e?{any:e}:JSON.parse(JSON.stringify(e));var i=null;null!=n&&(i=JSON.stringify(n));for(var o=new t.Configuration(i,this.getFields()).get(),r={},s=Object.keys(e),u=0;u0&&t.push(e);for(var i in n)"docs"!==i&&"df"!==i&&this.expandToken(e+i,t,n[i]);return t},t.InvertedIndex.prototype.toJSON=function(){return{root:this.root}},t.Configuration=function(e,n){var e=e||"";if(void 0==n||null==n)throw new Error("fields should not be null");this.config={};var i;try{i=JSON.parse(e),this.buildUserConfig(i,n)}catch(o){t.utils.warn("user configuration parse failed, will use default configuration"),this.buildDefaultConfig(n)}},t.Configuration.prototype.buildDefaultConfig=function(e){this.reset(),e.forEach(function(e){this.config[e]={boost:1,bool:"OR",expand:!1}},this)},t.Configuration.prototype.buildUserConfig=function(e,n){var i="OR",o=!1;if(this.reset(),"bool"in e&&(i=e.bool||i),"expand"in e&&(o=e.expand||o),"fields"in e)for(var r in e.fields)if(n.indexOf(r)>-1){var s=e.fields[r],u=o;void 0!=s.expand&&(u=s.expand),this.config[r]={boost:s.boost||0===s.boost?s.boost:1,bool:s.bool||i,expand:u}}else t.utils.warn("field name in user configuration not found in index instance fields");else this.addAllFields2UserConfig(i,o,n)},t.Configuration.prototype.addAllFields2UserConfig=function(e,t,n){n.forEach(function(n){this.config[n]={boost:1,bool:e,expand:t}},this)},t.Configuration.prototype.get=function(){return this.config},t.Configuration.prototype.reset=function(){this.config={}},lunr.SortedSet=function(){this.length=0,this.elements=[]},lunr.SortedSet.load=function(e){var t=new this;return t.elements=e,t.length=e.length,t},lunr.SortedSet.prototype.add=function(){var e,t;for(e=0;e1;){if(r===e)return o;e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o]}return r===e?o:-1},lunr.SortedSet.prototype.locationFor=function(e){for(var t=0,n=this.elements.length,i=n-t,o=t+Math.floor(i/2),r=this.elements[o];i>1;)e>r&&(t=o),r>e&&(n=o),i=n-t,o=t+Math.floor(i/2),r=this.elements[o];return r>e?o:e>r?o+1:void 0},lunr.SortedSet.prototype.intersect=function(e){for(var t=new lunr.SortedSet,n=0,i=0,o=this.length,r=e.length,s=this.elements,u=e.elements;;){if(n>o-1||i>r-1)break;s[n]!==u[i]?s[n]u[i]&&i++:(t.add(s[n]),n++,i++)}return t},lunr.SortedSet.prototype.clone=function(){var e=new lunr.SortedSet;return e.elements=this.toArray(),e.length=e.elements.length,e},lunr.SortedSet.prototype.union=function(e){var t,n,i;this.length>=e.length?(t=this,n=e):(t=e,n=this),i=t.clone();for(var o=0,r=n.toArray();oHQrz9$y;yPjO`oUl z_kY*7zPr}FH$&LJvrkTvo$Qm9J~^ndvsi~;dL0IX5~c1|u%g!q50 zgb4uRU(Sc|3m5}oX_{b+^OrkdjQf}SVGIXF`=|EfFouWzTZefVBmC8`!x-@|@52}f z{kJ|yuzXSf@(UQF{eAW)EKLFw{-3&Wa0>vS|HW`${--D5zx>;}9oVq4{_;3F06>)c zKlZ}q0spDnpPq-$|5pz~0K$JU(qATm={fU}{wensRtGLv1N`wOVp#8S!VG5rZ~33{|0Dk&yp8IEvxB`0m8r3v zxwA3M%lJ6#?5IAlak6s4d>#(w&VTGuf<<_kH867l$FP40fAw!+*NA`hh%o2*)7yXS z{}Yh^xdH&lV0w(d>E&U1%)feCnEu6Iy*f;f^HXlH%fc}J6S!dU zPkDdd&Ofq(@ZYxhbNkOV@n5+MGr|nUTCm|Ffe8k%@aO)*R|Eh77HouYM+J5me*gE#_NQ=IDZiHhk^mHBWFRsU3J?fHMMXiwz{kWuN5>$+ z#lyxYe@RI}{*sK0ik6k0iiR0PM#jL$$jr{c&CN|oFCfCtDa^{n&G{!2I8;>qM{KJ5tF>6dqvN{$i&UV%f~MuDEa2Cl(dYjoSM3Zrk1vjuBn;%2MbFpYlw@h zoBKx(&!FIt(6I1`NND1xq~w&(scE@+`2~eV#U-URwRQCkjZMuhUEM!=di(kZ1}CSc zXJ+T-7Zx`*x3+h7_x2AC&o3^ou7BO!-rfJP3l7$){|WyZ_J7!g1G5Vr5fK3q_{T0d zcz0Mtz(GW!=0L`kPyre{;n8pgpy0nw$f@o`1#zkVBrtKFKqI8(-k>}GW7={ zuX8|2gVJ?RGl+YjHL(IB9R2o0eMx{&#%O_fS8P5-ho?KOx}%|v?!hl29OTqR&cv$K zUOlHi;TPgnBH%RoiqXCvPo%7pLU~vAo*z!nry8P<7Sj+zKc}4c^V($t_(bmn;n5mL zQ}>;+&nxR)Bk;Ol50`M`b_LKP*iiTP8+pcdhHdG(3(7W4F;9ar`=c(5AaxmOtef?$ zDrz$n%4C?o3c@jP=kH=Ut}EJw-FAd)$l8TEc7uuB8FuGHP z@4PXtITWA`1d4@=g*bg9irEVmf~$G8(=Jf4lmp?U%NMg+R@z_&VrG2=HI?V)7v&TP z@PO=}PqrGKhXdwZ_H0V@w?M_B?O;-sWS(~DY?nk03ZjIkcejxLwdl2}LQQKuRKUUh zu_MUEa*NLAQaMO@%8pLQEIvfC8Ez-z0b9AkO*(BcQ>&G`+}5|x7_;?cFs2(JG3(k2 zz86YJ3tbA`N{D^b)R+seFgC6+nWX4|+{GqoV!z8NYwBCRctRL6Z4RUE|J?Q&BSSy=ZX-WyZPa zap@jutPfaJNB1~Yr}o1sU1P1?DIpyt{h%y;<9A&H3T`f0E;~*>V)AcE8XI0iGmV^e z3B3!<%1WtceH*$QdMI?OVGhYCplMgi0)?a$HdT}Kw9GmlJe5R62VUeKMbX)EW7BMp zzX80@7cvv-X1H##Ot>QuQ7=DgZBg!V`swnwGwt1s4X?cuZ?xUTbg7`$Ea`Hm7cvL- zWZX>E{I3iN0>;S4cC-aosuoXKDpWS#FhSZb17fqTM-D_m(^=?x=rRPmR8p@J`8CM> ze*;9yRG%NrO6dC4n5gyPVk*v#o#J{MLKvmhvMMZPoxc^xN6qW1*VQ5%SK}g>k}efm z=P$O7+(Wlmx1x1rxh!x20hzw(Tp)O!pV!3UIKOTLVe5AMV$>%xQpwR1S;nnQr z7(JV;hp1@sZ)WV|bT1CGREA8;xI;T=V#SLN+()eZc#a#+2T2(QyXm+dC1*2tb7_0r z@M0nd+oe3`By$fmbqfQy-ypWjqD62G(0YFl177Aj*R-NYok`q_mb|R1?&9Ma?zS}z zSV}w?c^Pv3WARvm0uSH0&}5lY#@63AW7?3gF?fu#j#a^l_W;l@dGvUgG@I>tGlxe! zJ%CR;6uLi%tmL;Y{!EbOJzT8T*k;9Y^)6Y~2w6W+7SW$wR6qIx>s07N3S)fw+yb>CBH(4BUvrT6&tekb@8_~(e zL1)@B`?80Acm_uj4!?|@pH(ysatVZ-#%x_G@%s28p;ZekySPmLrzfq498*`7X&I$_ z5$O&kgI0z_HQ6fi;in{KI`YCoAKzhvcFBC4ZAzMIyF=%P)o24Qpn|6S2R%jyTzC-5 zMB+;wUZvo5QxLGxbFDR_jkE@8E2L-jP!S90Q(0`b=6jXeqa$iJ%=Sv)rD6hA%mq8L z5?4mhtxKiLa>2-=(!1H7 z`t;8yz+Ld9a#ho2 zytYn$s1?d8DjDO)`)3Q#&k|<4G~P?&G+vF@;)Y62{X8=H5eTP?I{pZ;Qp&gL4e^Q? zNb|)@{qH<_UR4qbj=Z`Ma7R>Tc~*riy9?ipU6!Rlvjtvf1a z!psi}xSf;AXbM=<0JQ;Y4SA)*UWCd53m;* z{N96W0FT`$C{XbJ^5jh4x4l&HSA^&X@5d%XK>3E0l5U8?8&lFZ^|@BZI5!Ic)qG4T z)TXMCjAsI*Web&Q6G^yeIniH`ghOe=)p})_)+P?&IW~d%_id$+CakEm>Bdl-Oha(% zIEx*H#Ag%zJIjy#BDaT$+;O{-OJy|dIhDzu zAotUAIbcRmWoSg9_Z8vWE{t`u%~ndR0SrwdQCWvZ@q^USKBS<8?o~c+Y~F>PiwdlT zaY8hYwcB46Bo)+6Q}$hbJKW(DZRvbu=NVg76>Ooj$?{@XNk#iEwxR3hG(f(fy~+F_VFi3k`QDeme7Amu zJ%-lc%jRorWr!YW^5UCDX)1rR5@IqRj{-)~uuO1+&TKMw^`-v;O$ZfUTsA`FZrc7} zzs^@RX7Mcup-8J!++>~iTMwrBP81`JY}%^VLN5nl6O-?mxgqF$#E(5LYMNSt#cDMq z^*c$Z5{-Z)iY=b1f?KK610aR&o={rL3T5|KonjAQDiuQFxRx|ZG(!h`MyZ>KuC`%~ zz!Dp9vF~Mmxjt-OA;*R>|7Jm39dCN8!Zrke;eJ!5(hKAv8_Bee;cnpQ4YS0DgC}#E z%uDG`a~Vph4bMtNL$W6xuw|1_(ldQJ-use&7rKQszGeT2YU+qC@r{roBXYN%4cVH| z(vX`7ML-A{a;x<<$|SFm2d^_aFgHX1l%-xWWZIb{i?rCU(};!QV1M0gCv0LtDv#mt z=n3n$)A}m(Me8^HrPNI)G;!_M1V8kxZUlXX3Vz5FZ^Mt=wD(n5kuZ|ES~fXUrxur| zyo~z176L$I30NxHd1o;HX4c-`TzuVJYi*5k??^A6rKkJ2A%^$fqdOZiM&Qc4le{Vk zF@^gKPbff3IyN3knfab^h&FZa(i$E4a|46lOtTT-VWBdryCr5=H=k4Z#Ub+s1U-Y1 zzZdn2TzTqexd=r5rAx?eLl(`+1qt%Ut7U#32N@fKSK8(?skxD-oIxa{_z9OBWd44= z8Sc}al4|3&&kPcnmrIKIefW&O0ixSXCHp>c4ss*6iI6;NLA#1y*`73XL?PK*)Y9?Q!1yC%?p$MkgJcG}TmI84VDv8*~tR&UMG$${llQKae zOt}lMR_&9M3Bm=rP_?hlo{2}1<5?Sq+g+5-RLt7}*=mX7*`D5lMzOuzO30k3WN86) z2j+=G%p0D#{F_bYA5NoJzE-`ki!{?AJ+j|`N`+!~3Hf-IJ2dDvWBBux@W4K#QwJ?%m9OqB(m*=BnBwx6<-V!7gq zc`V0X>Tx0s$1XR1ArG+_O&DCtB4ENEp5KmK<*95ov(QAFlV-E9*%@L~kJ|M`&-e{U z=++pKfh*RFc+FK7M6Ce|%DB0CvU0_9AS`hJ?ee(y@6~LU>MzU94qn7u_DVUk8~89p zYF0-!3|G0@(49P$Yqo0po0|E;^}RnIaZ6K5bSUgnMd{rY_;8e{QOCkz7m#!ZmCQ(p z#_DQ8$?N8_h@DZqlCB8JE$K_s3yjcIrHm=m$OSCZW>C9msz=-eu|fLa=f> zv&>W?+Fr(~#aQR>hgMIPpEF_*;Z6^pLPYbH-|-(6r}tNu3s)RnX@<|r_VcoED6&R% zuXb#u0hDF=$%*q}y``aA>cTGIw-7c{wd{|`Q5zr@&8^`vU?RQ6;9`|lIV_siT#icW z(RAVO92L^E(^OdKs>EYc!)*HejrnrAn(q8kdaa$BcGbX{RX> zfzN&@Qigk}=#j_R*&)WTbxu&n^j^wQtNY?%$aLiTsLV%og}4V}iW((?l-nV(k1Ezl z`~I;@zCX9km1D4QRhk@uK^03R;xWXH$kTdhaCqYRTmrn5IDWx#px-vTU#r7Buq#V; z2C|56y&)L0j}#Mx%*<~jhax3MUs{`t?%jAH8+0tgpI@4OC!16G@=i-GGnvdM zm4?J4`{U6u(W^R^({(;fuD7@frZ^e?aC@Lg*UpBfY-{#dajY2>NsgOWrEDwJ!@H+e z^oeA-y?DFBWz7N4NFwvU0n{o6-8&gX16SmJOuHw-;%S5xpfSYJ6lTO;B~J@0wI^_H zZMCskt(?5R;=_XWjp^7n5WZ=L!l2)&A@6fb@Le^I%D`bh){M<|B*Wv+7@CIl*1+wc zX$|lvhB7eY#TIEgf-s!^Swy|1c6tt^<@IeKT^zAKRx?F&Nwi01jFp7Eim>wLLW-Vy zjfY8?kwlGxeXp^!42MV)9l2t8ltF=ssfi2e9j)>wb8%4zueT%Oss$0!p- z%ickDJ}0cn!zi?Gg-TmK{2PFddEXOVf&P}Eo@uMrbO-a^=m}icG;fL(u~M$ z$mqjtj**By72cyY6)SMTEPL~q4$gkK_zl=l6Ld}-Z<3{z5u2$2xU+W}&wHuj?kprNnTw_-mR^6FyY?>Um3 zXsL7p%rW0rO}BO%t>^NPdS3!xcwh#}%dme}$Y3+$~`C^v9B zWGQ7r7NdxT^y91hhMRuj_rBYz^e83D0*zm-`%aaJ2fK? zno2``|EH`PA^iS6e&JRCtNmUmk7vWM zY4BdL2GzaH5X8-v@Upj!%04^drczHUZLGV3tRaPsWnjz352d^mA_9CVw|Ho6(=y8f zY78znuHCC8v)d!J8M`iPVq;C(u=Nk{{aiYybwfm#W|ca+>8K1}Qc2Qsf>2UgAf0r{ zixU|8qaRyHdM=WY%5-N>MCoI0oqMxcvf!s*AG78-`kPe;z1XRq!w8PQq0H71{PZbk zzaHk$?*kJ`i?QD|BHWp@DJ#8=ui;awpS`uda~YB12+_`n-$@jK1YHq7Sr>u%j4O1G zst>d9!qjYbrcEzX-Qvl%F3Ku4e*-X!e*@x!g|$d>vg@pMGyBC61gXfyI|QCxo9iGM zT3kPL7JCmPt#5d+qaOL!V6PhHTc`5b<+!=f_WmkLWtkt2%U#FIaVrd?J|bdhSy=e2g6f#~YBEzy(jjEL6Rqdm zS0)^~Bgd{rTdh1GS9+>nWiOWFJ>%pCSUWKDVsFb($jE=Jn-<6kotb_BS0^OQmV1<% zf!sx(j?jcMGA!bK>p`oS{Yy1ozX37tARx`7y}FcIh7q;8me-L#F1$X(2`k#)j>>eD z(>1f3E5R8~hb{`HWKp96iBB<2^gn)AnELd%D=Q_{-~40~HSG#MQQFnkG)bPwYyu*j zU*Bs`i*Zw7s;5DB<0bwOT%;J)f<0r+(>TC?kvzvv<8&D$-D0 zD%<*Q`m_D>;bmZ~+Or$hKdpASXI|DK zBV8dw21f%KLp1s6hst&ABSUXJ`9|0_;EJGGlNcjiZBVwty;g;ciO<0+3VM?HLsHn@ zV-`4grj5<&sgMnC1oV*(?L|54v(jGGWNmpB9@KjA^E2~hMfuuIV!qxBnqE;!e~#Ag z_JwU1o13zvoE-K*+S$>HP4G|zYsCPC^5?_iq2y@7ebha2a8{zFxRNrrYLMI{l9x4Y zG?voGKI_-wA8rT;`2>i2bQ|BgF>m?j2b=;4Y9}zfC2hrB9xY2Yyn;_o9+PV-TCY)}G3*5ZK|1GB)k|hn7_y`MqBC^)q`M~F3G-JppR&1Z zrLA&qL%7>{ZuDwXJ||QA_aOuvsU1+fYK5N4I;?2U>L>Mg#Eo10bA@*MS;+SvRu~o-GPHtu%am9WI`d{cip&TTZ=%VelaNu-S5AO*|woVTimP z_`UrtYmSxmLY6u4GtR(cnUGFP7Gaot9R!-^JDQ&r#FP2-nL1u-&pRw}U#z#~>61am zLV@6Aq*LHsTFu7-&LOK0qsnj@Ta^CgtrhO-pW-LWsodUDKDSIL3I{Ld`?W4zlwMjw zYM|mO^LQE~D31(9X!W9uzM-HsgJ!x)I`ceypZ}&cZU;eYUc<;5D^k<(D2D0pzJ45X!z2#QAKJ9_`Y8icltwaJs)P7_SQ` zJ1ksTvsDQk^^rCAu7}1eZf@P^e&r?H7^hCw$yvnO`1MuvBzoS&it7> zwUM&4Qmn!(Xm?q#gcw+9Tx>GbFY&5w8A1GNmL=r z2fKhcQi(-5KWY5y46ahfH-=Wu2W#G6sFz0B64O&ey_0=)l9oH#C#o`?Jedv!10GyJ zwNOgW3}Hs!!BT2{gw9ot$j-N}JW0CQW-C#>e4GG^!Pg>XddlbeT>P)y`0^aB(y+qF zlgfIivB6L4SXu|FL+f6Q5(x%B`r;)zfCulU6^)syHl@`F3oshYl6SNOw(6Z%;TUdS zh71w>m@={$H-oL6D=Ky5bFAP*rze#KE^_rRAhY$40vpY?>%sb{2L3~s9RTI`p2xxM z$yj!0ywEGXj8lp!eCQ(6+03!~?2s)8EtqUhz}+%_b%nIMKGO?{b^hC$6Am1gs<{ zC(=`$XeODr*ZUG;x>0>!^(%tN1HSA;dHNcZjXes`6^w-+OI5fGS&;5ZxeGG|I*K+u z*=P~4jPcs&aoIkK&R*-)x)yf5s%;vsRtA@QV2)yKO;dm~<{m}LEOAll!O~$)cY4%G z-=g_>);?x$Mh9txvS6}|B-I(esI#z#%-Hx(Uz0w`B)2vvY;kf2zH(N`g|FEz;$rD`J`bpmNrZhdle%TPQ~=ugWB}+77)C==crbFUIHT8TR@(xE-e!IXh|2 zOC#-w)~4`z%yjJvIj5Z&)gVtB5R+8LAX2Tr#;v8Kh^&9B(9=(ye% z(u{7;Tt;_&cp3&#(~hHK4=Su>P1!oWICrRHg7n5}sa$cKL} z4eb7iRJ!N51OQ{4w(=m)Sao>oa(&COtqi6M_p3z9k3`9(M&Fi^pt5o(1>JYq7x zIjg6mx2>bK`~DOXYh&mNCiQm;%Fwc>$!4@1=9%15nSPD*ia@x8ze2l>HL)K8qLnVC*?x8%%}p*p%-FpONN$8p znsABj+jdl19TmUl6oN-w9SbEAvy{NK^%LuL!95sya1TAPvX9mcB^bOfZDVsJ#rm6W zj&#Q(OElRHbdr=ls(#A<#dga9xcmT0v9*}@yB_gmf!?J9j^;r1P88&g4jFCcYz zacTq4uB%oN;SI6alSL$Ii<@*jGg+a?Db?LlY%bAbc$Q8_p0>$-=#F77Y|A`Oi*L7e z6M551s*;L(E*hSNhu!ag0|c)Is7>6>w$ZkQr8mmF?qZf0wLlmL-HhZYWqF1aWAih& zo}wkc0eY#M?4zn02j22hEj&-Qs!ih~P4txXDkmxu7SXsbvVE_n{qU^D@2rhxSmp|M z7hZ{t&6bgy{07kJbrYpuP7o*Do#d?Vu?5P>&#-mQkC=ccV_DfIzW0!hOZ5XsaGwa% zy-Iru^|)`e=s0dP)ZvxCkRMThIHwz5Ku*C7e}25M2mSmFIMVEmTHn{*aj4fznP%-9 zMvqGn4TN@26;)WVy)F9n%{&)5s2)e3fXH*1s-VrCjmX+g%yl zDkAVC-r@r~uOnoZ9qcn!*^v&>s^aR9BDIH#BV6U@SGgHQ61pWCG-=O8uUD^QmsCkk zwb9#Q)GMu@{TG?NURIz9P-D^fb+ z4{Gj`A^bX_{r(*qMkvBwKam)}ndeMN>f|MUt*&jw9dNfKCcH!51dv@lh7c4s;_22( zeN$rsq=&thrf+6ySGzY{%xbz}01tvOn%& ztGjqT;p$9V*>Q7|chr$1@#sj)rTHbza;#Z1#ssRwCOGa z#Vajad?MdRaBmpxr9y_0qcT~Xk(jQckV;d{)G!es*dg6B_v^clo&00=&1JuISH7ix z(A>2AeEOk7?b0j*k}Wr?k^-@8+Lz5=>Rk+3nKTB)5~z>;gu;m>Bbh7PAvPw|;dL_y zbj53vcWPyK6I1F|i8kW5SVj)|eU)t^(!fwyslobqFs}J3`9@238D#(*zLIW#5+H+k zG0!cPu5^Q6n3)utxpiqAii&?%kUng_myr<%`<@|DG=RT$egZmn6x9Sp02|vmC%vp_ z;knp8lP4tx=0N&{eR-zR`5mY)cEkskM9RKnhQAA|DJy@!n(dZe`OdNYzc3xl;#D@}4u>Ye(TPbffjh3p}MvOFc- z-rUB_sfTjAm$k9b{Ii`8-yV`_EptOES+yn6F1R|yLLieRGxn1np9+fkLwOIon|a*i zwSxm?v-IxnPg8;^B~)b0lP@7#?&2ay@?}cV`c^^%u#b6cmptm$n${W`xh;O#cjUbB z63pVH(sD;E?~$Z7vYIQolpUx86USy7aUaOS0A6$CV{&MReMTj_-5EZZW~)o~vFc=r z@Kp|ZrM#P`?vi(Imubz=gp%}v!!AI+JYA7T~@8>Y!aNiLKn4X`6! z<{eyS&CFIa0)-+kx!ieEok7iNJBb(dAj_t9lGP4FNvL#%!@=kMvA%l8WWmN2a}()$ z7v7c#Uy0o9QEb!NclnMB@bN$EqwI>m+LAq()SG0QtBi^43ltznNFw(Ek5t|Gd#E>% z8A$>Qm82^fI4pR!(pB$u4f=@ECd_rjz6CpjJK0!RHnPNMo53L9hy8YTF{XP@GrcmJ zFbuS3f_2^c2*Lb@$z97i$BpnMf9$*Ky~&J%f>^nq57KN7#8!yCZ}pRD8;vt4_tf;? z1Rg4wE1jj&It?7?vgB6BY`VTU(RA#~S_-c)z>|%gQh8+=@*}e3qQ4ov^&58ko7B-f zXG*Mj^lH-n$PqAy{x39k0g7#3sTT8>+s=CW+I3S4w3r-Pcfs~3R2Eg%b}<=(`a5`K z`h@RFIY1i$^=`3a1d3@CRSBD-4_gXx!J zQ15zL@3za?-0A!*(j=GEWG-kvnaiI{VrP5xnjh;%&vAUpX3j_X&r}cH*mgUE+``dH>BbOIo7Gpkc<9_*K$+D#Zs%c5_uhNZ+_R zL|5-AoQP>kkClUDxyCdjQ5|>k=-9y(!@Kn_ekSILO*5%7UiPI0zmOKW z%&5(@kuA+;o0d`&`!ce3Fs(hP0sH;skztPwTdEydq%(;G!Kc_qyyX_G$Dn()p8U6x zGH_e%5~S;wip{O)6b#aZdCm=a5C4uoQ^R%R=_J=HIwK|RRB*Io%0e3sIMyTKPVo$F6fU%6!!Z$a%x=HCH2RcctNKI{3}0T*yn{HFKh~hCfViRe z@LhMMX4+W-v&Y6-*On_xF=&TgC}3L)EE*@8wd#%QyHy6ddY_Zid!MJFVLQ6odpX=o zi*RJX()Ocr-BAkDQJ1dwTJ4ekn-sXYnu^saajppYOKNLc8DA<6FgmWQpgx}aE%A2H zfqGN|rNmfHi5)3k68c5fM*;3pw-^evzzl=|a`5o=5Dr$EfVMx<==mXWtZ!4*yGZK# zuTpEeo8D^n=kHTr6KZt`>|-+8n$o6K56YT?hH=C>LOR~-$ICp5^VsW|ywW0fs{1vj zfR?E-O3KtEK&IYmsN8mU(_>;hC_(q_f{bCct!l1br&g6^N?_Yw;97W`W=x0lpyN4- zR`XEy;fMPWR4fyLx_QdDEnc{y5di^TqZ-5SazyMb;jPFU57CS&k>y$sL}qY`Ii=%P z)q#$xL669x)C9E0-#Dwt@#xmc;5pF#YTw>=mOol6zHG3SvyY_Xam1sc03}L0O_G$^ zj*&r{3?c47E@p>*e$)nva#W#HH{R%AT}Be3jzq=LPx2e^vg2EV1DkxCZ7@#2cM)v0 zTR*w|ib@WLg8n1g2r>^_b`#HNNbJJ;l(2*cVXjFmI&y%DJA*g;vXM)XBAo|c@u6Zn zVIMCQ*oys~o6pI7AA;Ccc8A7Mde!lYAYJw69#BwQuLNdRGubuq<6+NinX$)4u^lrD zJ)Z?SBNI0 z5cIgMm49m&okiJ*<=o$@yzv__+w-nr64z_rv`KkI<~^+uPPA!}67WFNg)|U%gC7lw z3v3X(pUJQo$(aj_qa86l3Q}kLz)0a4x%47GPk`)RQ>oE%$aV?1p-T~I!3-iw`+~MH z;X#EkH`%z5h8abS@v(#a=`cCPKKU2CQR$?pexu=S-@(0llpm>*8NfdF^$P#e!Q+u) zLU7^sanzb=>;|F``;Pdc=fiWIXkZ~l&ODZxN*34Ll4w!{Ydd*Hq4?dhuZi-jaBo?+ zzQOQn9pK7Rq|zHNbP*lcq#32|^jttOf#O>c>-S!f(0;7@Mf!eU`!DM8sg?7tK)4L0SOJs3y@9~4LU#9qCMcd9D zn)1!J=1R>oIlUNB0lU-PG3(s)$p>jV_{j@*)#Ky^EyH+kDq3@-1VP?G;GGgaC{On3!2;!Lak&4%E@s@ z&lIK=%SU_OQwg~|S{1(8sti3%F=Da!_{BEZ9?KJJW_|%~+ulgBN*|KeU*D+W!<9o8 zFm;eN-uS7HGui@}wXDwdW{uH%kc8MCagQ7_qSp}R5s~E2im_ zq&v&!1*bJ;&;>Pdn%vW}KcoTC!`8IhZ3=rQ;a_5!#zbOlqNaAtj1c;-D!s0$e@n=M{|)^M8@2e zJ-(_Q0eS>JsecbiPQSYb}&T zpnV}hIel*ES5kgyIIJUODCO|U$o0fvlq02OCbe^9aO}+_%klfJN%;biR>9&s?Z81P zDdi&A7Kb(k`4nCAY){X`C5ahJdu?*Bl;uy}Y-ZiVWl{?be{A-+mIa`|*cEwM>jQ?P zoIRAfeK{Z?8g2K7tc0$J(jdDl3;p{Q1nUXoD2 zO@Fu5&Jf3Kq9zt@5C2I1<3@-&1F%A4I7jhPdn+#RG)wW)Fq!zMk^d3w+1GuOYiS4$ z7mq8pR37P@t{Uj45m*eKWmu0P0`Y8^~|E_z5Cff zdD~|FKoOwa_BYsEPux-cCs4U#rXVvBOQLftb~@t$ZO}josuiiy7;RbrdHF5f_FWL= zLE5A&01z~7!2_b{PqiQyRA1IlmZn5JLhSt9k~ocXAK5~$KJ)@$f--go+k7cY3r(^- ze2>`%=`5E|xyaGzeIz6M4Uj{fGL@2+z{Sb_+(@-27Pq0MGde1lalxS-0czf87KTg_ zlv!MasEe^1O1BdNb9r7K=ZlAufO2@UJux~dov5%pPO{I-y5Qn@|Kt**TBznhfB{c^Xu7#QbanMjDoLjiI3>M0s75#A ze&O5X!$G+CB%Pfrai;AY)x@i;-C3 zw3_Jo+V-ICC|BPROQE zrsew>Dsw*hd@uhfWVMxXb~j2oJ3PngRZIG!#X|1XOt9~JBoy)|P9LV>49ORuN~b%G zk5fa{VU~Ne*IUtOjXTvigl?T=W?J04tC_JaauZS^rAhG?NZ#M4B0HhP+vu0(a*3Tc zm4O6|WWl&HO7+m{00y)#W>_MQ)5s8qBwC{;dJuKfnDDcR zjr$MHXWRW!QM;!8BYl^HdN(Fsi9O2Mc0sPa@Tu{&hBl8vnI&3Ndh+&aT~R|K=c{AS zS=Pv3=k_c3aSWZkrwd2-bGp^#$%o!;t&aGRSg|L+Bp2s>1?vJK;>5O0z&lSfjI^P{mv409h|HVqXT5b6 zZl%dEZPtLl7h6Afh^%dTc@lNft0O=aR{+5kPvHz4Bq9%k9m_6457cuiZFn+e zL^n@&x|QntW->Q zy6i7VZjIVD%pA)Fq#ZJwURLH(0je*Yo_*_%Rs2P1iLY5KYJzu8kl>~1MAE!#o zOr2ai?aEfl@;@_F#3d8Kj!_U@R8GlE)UELQabX8OH5teWl30UrSgS|{2ISjCp&fnUO8eZj58H+}RQ z01_ndd_NqAq(deX1QlDLovt3>H!)3}RZ_>h?EbovcM0&RrNvvOMKZ8wG4GrQISshD$H_VQ5JB%MxaQuB0w9> znHX(SM>D>gJW;7Jh1Oc#W`?cr>6*)Z*FxIG=(426ANj&7nKKDbw# z>TNiBb;m;6m;05c&q$gYjkCS_vBX4ZJR_q@Kv?w?%{43k;!w$w@)nEW;f@*m2nmpw z3EQ)xRN2l&Q%{OzH>Lw;?HhJgy_5g0>A-r{!oY6%(kbo_^bNs)mgV<;uqgRF_#N@dSPE%Ey_77d_+X0o@qj<`MOChW49+q;2Jbiib!QRl zE4M5U4INHSsq>?KG2MVg{!?A%(}V`!YLY$=_U9lFxVYtx$~8Nj_iz4ofEOXbnt zy7>BmfmUPQWTuowTMDy00XFtfDg1$50LQ>qIG5Zb933q%_D6evMxb8 zGfv(|5|+J4NKDkwR5))ugy_0yhDz=>_2tf*4{CjgO|jcCZXP1rESLtxCvt=K;{3(h zL>TvX008g4fXJ`wlJ@ehfHXz@!C&s+9|PPfN-h9oPyV*rQ*|O4?CXIs?grQW8dYA=8Nlw`4*sC7{th6C$?S z*qy=@+8OHXI^J0(NicS$71Y4U2+LaDGO8#YWDLo!1kc#tQ^;vfFHj>i0xJk2d89GA z9m%e&nVKgkM&IOYpoI-OG1z}u$L_08w8ogT!j)!*%5-tOq|nZqQ66>P{?b=uojmE4 zZc}_p5ZFXp_5x*0`RF}<{?zn|M%wcJ`!}^yXE9mzF0+$u)ZHO0JKrh60In&Xh|>3d z1)p=`*JH9nLD#3%`K8Ny%@R zzX2eNnod3LmWEtRW$8bE8iih-J%Q&#;Xm1KR~pPo+Q?+-wO%#2^*hc#*6K~j8D;eG zZqUER79be1;;Wvwj$f7&eM`$X9<7yQoo2=d8jS+Bv|J|W%tZztCx?{;C2g35#OBZ? z;xudGTy6)%d-M-nR|qMZEFKQpeB5yrMxZ(bdixTLj36x=g?E}!gr(&N;qCajQwxx+ zBU}|LGqRTSU?+I^_u9Wr38P--EP_H8fvB?*C&?D+dGM0k1-~&6LQ4yBybu6@AyrlFQ2{C z6XX=AHARm5#AtqsDOX@tGxUgH1)_g75ud~hh^{g|_QO*x4=Gs3>?=gFSXdmMXSrap z?V@T>b>@0H9I5@-lXA?W;drs0)pS)M$v~&>dW`fz&*Mhi!_*q#W+~t|V6JpAEQJ@#frYx@-EZMYN!Jtp2mr8O`Wpi znV>+J+%s-P3a^0Q`;9C>!#;1EBCt%J6Z4B%!kL1Hd4k(c!@Y)A@&h;h!?v%+vGGMy z_iFj+g9|kQ59y8i#Y`-0B5WfQSd!2zVohGby&ya@l(@YZf{?t~PTb3(3#NGtj);Qx zrqd&`9}4~kWcOyiyn7e0Jk7eVte-~Q6K|2A+rk%d<`Q~wxwn*6-F$E*QbvVaWOX3d zkNIXZzkDco2k7F7Sy@tKo##{D#W?ng1ZyhWT6Rm8()K*W_NOx9GtZtvz7JS+>W6Mj zz6mv7`ildyZb!;YXL-!W^3zbR{E6wITq*U>^U)8}9Q&6gceF-666Fu?348rfkJ-KI za0y_?oRs`BE$O4UyJzfE4om$K$_<#Ja@uSrd}K{0SXTxv(SqiH1VvVPa_Qc^7;wTq zeoq={-`J);ZTpmjeGwN+EkoZ*r=w)a{1NQ-K?63&B4CR9vSJM`8P~J=^%D>DIJW#` zy{L#rp72JNoVUU$@pgCP@|T?`@mP86`#Y0j1~;P zP<*p2V1;J#M!o|p$90}R;V(= zaYK~45lb$?X$84>GpRS_-aDe#WrSu^#8^LG_J7+5`Csh4cUV)+xA+^1h)C}sC`F1u zXd#qPq$5>2geDLYYG?^n@RcgP_fQ0+1|l74DuVPLsx$>5bX1Ch?Z)@}e!u5D_xYWB zpZoVc^FXpPd#yDyYi4$KlG&f}+Ewkr)(}MX?$YajP+z9!C7Ve|jaVSt*YYR;x&B`I z{egPi4UP7NNJx02#GPDxoZ;dyAEZREldpu7xTFL?>29#E6U-Bi=5dC*x_c}09e2Ir z<8gOU=CcADN*elVz}?*Mh5EzILXFH}p`I`W7rwhHJW9ckV5Bb+j&|Y+MtXUpAi>If ze>;Z|CJB`0Bl_@nK|oA3wg2%ze5K6y zPgR40g2aPB;y(Va5>g5Z3KEji64KH@q6QEZ;*E9+2706T|Ls8&j)M8S`=Z@_ym|h3 zbaM6yKr8bR%l}u!kiLe7|8e|(i~$n)r?!7xL?@C`l1@(YQXrsV+tqGqhC%qJ}_`OiyZFDEp@#~(=?mG0gyK0&B|^3C0m za5J>ipCC!e%F0X0$;wD7$jN{}vhx3ESi=2L#G&!W+27C@J{}hsM4RZ!iP+EXNGDgg zgoiKO_3!FKH2mRCXdi!bA0IDezW<fHH896Hr0HNeU<@D=F_H;{=Am;KZQ+ z%O2%}KnFSb!_{1gBZ(LR;yC&nw!ZtP&X;?g0 zw~5rb>i}8+9YE0uhVnHu)BZzN`ybNz{J-dCc;Fvj|AW&1luhG8{0Ks1dGQbxRAIjU zXrk;$lx2g^zJKIAqRdRZSaTuDbwpXrpIAYny!a>I`CszEAKCS9`EPh0v%k5i2C;3- z#C#st|0X;CHyP&Uk0k2I5Or?5AiatHNv;1SyZn*E{>VtL0Ak(#PJftW)NpSLGvf1Y z;y)Ka2cQcu1Q-K&0M38_fIGkofCd1G&)&ow6u^{tT>XEr=lt8=m}uopv~mZ)h!&av z9{>{I^tV0WPahCt zxD^24wfBG7`#c2z(P}va_er=j^B@L0z&CRvnRn(W>jl!Xz{#Tw9 zyqz!jJhtuc35S0~giZ!fhf|N1PfB~*Jqf6?r<%UV5L}WeP z<1OOA=ivO&+bi~kKgru%cgNg2W(E;k^LGAUM>P~$v^zR8fr#x{c>qf~4s77y0j>+O zwW-!jVM<5a^^6^xcNcAZA@8f(Xqc;9IpF{k_;owe_|Fs$ui2}z2_}JK#B z^CH?SlHCb4GR|AJ(&;F%7YerEk}7H|2q<8)3xV&JFy87#6-*4OM8OLu3Jdarh7u~a z3EA-hjw7mlA9uG=ok-8Ai3Yo!x7it;dbR8auGT@a8=L9Emy=bB)-%0*DCW8`^O>`o zPjbS^+8WM`@{qK z@;?5}X4hbu*R+4VTDr}4fqWQl(80T-*^gm~faguM`?|5y6SDkfPfa@|(EW*bu{U{m zmlb!>+CvA^8diUZt9X-GjQiN!gb}(u8%R=_f~WPU*!zs32m2pa)_WR4)vg;$Q;FOE zILkC~PZ@{yc$v(DY^OGtLX+SS8pYxX^J5iQJBgu{@{MtklyKXS9){$g=AGIT?l6L0 z$`j=P6n=6InOlV`{Q2Hs=Ubq7>$W#So3zKWqb(F?FC4vQVVyr-Gimf_EOR>K0!z9x zEXpsTH!8go(qrWJ9p7F)XWR;~kj#eCC&(gdGo4Et+oku7AUlLs4~roW5Cj3HYMwlQ zFQ+J>d}C6@e0+bxvS#AvU*bQE3cq!21o)0Q96>&REzSwR?b8{&bf6(jjmmVfQB>-4 zaC_}%&&VoUi9e$&2g9Vdw-VHnE_+u_!+!KT#JR!i6~b+3OXMH!KSz@btJnKwrDt1f zHZ0tGYRqG(P$1soYOvKM9ng33U^38{ct;sN#xqv~YT;Obhi+YaSlERIy}WthcMNGv zpB`U_oE+(k=OT0PR+uFBkK04v{r1E$Iolw4mx&4*r|f;l^6I#+*;ro zCROMBZNLZx)MVg;!bK%+9(=OpUc45*Hmnei4M2lu>_FOxD+UcQRKn6vSb3rhHeS83FqNB@D|P$j{;Y?dt)Y%zPM?%?+ZP<+0vmNS6n6-f`8wq~ z2326Co1S5n&rvr{E(wj5A1eG0cRJ9F(5ds!qm%lhlYV(jHX}O|(ysiP*2M)z&-HE9 zx3esqV%Y(aPg5BcbQz&nQYoV$A-VLO!-bvF0R$rRN^U8>J}?N^xmrzD+H{&m*?NX1D7Vzb)Lb_Ub~_W5-vHzw8K5&zg(2N%|EYA~NB2 z{bNYxTy!n2hho>XUenqM_n7ZcKH<}K=7c+>^+0Fq@`^kyJW~;MI%MD>NWvughKHeh z`_ySwHKv=(wdBig7DtgnUFU?#3zWTGfcq1>C2YA>^6==39{UhJOs=Q0jFk}d2(?4b zlbDnOtus0+XE!RRZ}RtQ2CqX-fqTNW+L3k1Kp!ODz&6S>ClN~K?CtLme3sSJQkI-S zzk$!C_mm!s$GHk-i(|vZt8JfK88r`n{POEzxy7|+4qlC9Gmq|pk52<|+HGayR3`pk zLG4x`v-U|(;RcS64npM+JNa!(_x?$6C;YpJgO$S-u8P=9N7uIxTR(dM10_1?@mjPk6Mo zC3ORP(^Oi5a5-?0EzEKpPoJny$st+E>ITxr$c!fua+Rv*rePPYu7K9-iI6&aQ3~zD zOC^UUW5Jjmg8eltwz+Gx3S{Eabff{HaV^4$3>c%uJ*noGu#;?Vl`2sP8`s-0rkemWcf#|7Bcur?5#Tba|;4 zU&ivpBUIM423V29m`>J^0VE$26Ex&CO)^bLYJsh*7=0sE1}~C4cFK&;UtA@iTz7?} zTk3U|q>n!JT8juIC5W{`XNDoCA;?XS4~-o?A!YU~Q^`NRj@Rzye0_tuZ<0TGYqBuN zroGY!JW)eCVP$yWP#n(LJio=0R&5^D7-!+GX(D0)_fe3>h@7bUEYA)7#(2n3S*iLTO{g+iJV==es>=#D`m< z;Z6BjUk1di_A7guwt+wpdfiMVIb_c?TQy2gJf$zHiCLYQlhKCs?H!;9l$m@=JREk* zh!Qa+`3P`hIZUePw55c0pe<7)E>6u28OAm&RPVEM-;cT@;KN-c|%_=seda zzJUaHO8I)kq~8xP<52XkV~T9qameSmVOdagX?;ww6mXrFxsETEJhC#&hH6pQ-H%jH z#5hM)IHK<3`t@c-`7yWPIEL!^Ta)(>qZ&h)=f&1?q%VrSzg8(I#Xg4wwhykwhhT>L zK0|N38^Qpar%+3Xk5f!Kx+RbrHhlUKe0x-2uSaUXe0k4xW|5&Y=elMjeSp>-en!?t zUcGroU8*=6^Ku|iHL@I462?~d5iWaGPG!_k9LeG2%`aOqp79QU!!IsdWH%G1QUtR5 z&}gH`){&S1!RzC+KR4ozm9vD)637*^_KPG$T2_`y!XL7qcDiR-Lg8Y8s zPS0pE^sMdDDmWY&7bQiy3U+(h*bgR?2zA%0M8cb!!Mh_gJ z+QmrIQ^7WZUNgl>LXVtE%ynM)+03^AsLcQpZU}-73qGmxI#8QV=X*0!Mx)C*Es*Ot zqE^aFJ_fvUucgMVMw@R&%dQ-!g-=-89FCCWzZiUb%nHGcWZ4HM=1_ zhZX}#t%gBTZKFC@pGzzLxMUWNps!XIY~ltL1-PdQZO$TD=-)(A<+MRL;p1A-#+o!h z%G-+hq;1q~Y3Z5?)>H|W-y9mE3016P^2uW!=vI%{d7*7aWY2>{2URDjEz807;y34O zzl4;AUlmWuO1WiV5p;1>3Qyxp$og8SEWI~ugL?OQ_E3c94KG@?p1h2aUh@vGQ*4eV zUm{Rk_(j=JE;ALbcb#>Gudzzn$RD19HLz+@AWRfkibr_|CQ6QN9$P)ly+YRhK(0JN z$X0R7uF7a0%vY<)OG%ptaW#O|v!7zD+-U`#F`DMx=8M;0oXI+{vuPD}=FR|8wnUJz zi0SjXvlu5kw@*lCQVD>D^9IM)=8rZEtI~y&je^uq8JR6WfSsMKSK=YH^JF(XMtS*+ z0o+s(g6Er4dX{OP9-~0oy0RQ*5lTmXG4pb|S(r4p|2=rAt$Yf`&HYt|ALa=PYY z8DD*^V54=c&IXmqheGHuA`WuvXT}{|l{r7jjfs$1Xp!k;O*g(0AD3;>A58gGn${E{ zY!Yw!)G~B;@*xM3h>#rOhH6@C$XLIA##d*nW8|Cx!i04!6B6z4D3J>1tWpi%ANw_v zwO)gDuJg)Q>2$PNfrS?1`J;J-R!*;6JncG3SXI$wY-EPL;aAym8*zD#(NHaB^$4lj zTzUCZS+t0Ax>k%OOWnPD3EGalLuyNww`B%jD*Y<-KQ7`&wG%?6>X~dR^JPqzo&;|M zebE<=(ckI*l}x|Sn2)DIeNHS`8j}8id+?OS#L@j40MsgA_H$#Gl8-Mv6zCd zj8XUMyMOA)1TYV&*3S0#CgZOKE znnP6;a^f&qviv3VyHYs0%YuSGbptsZwe-Pn6h&5Xg@7(I5%#!}u0}m7WY#o22Jy%Z zlvz10#jrA`vBc-L(V4oveQ?*X{+((x_n-Ml57>gY`Wf1J~>a-1M;7CpJ$+ zovLRa$B?PjY`v@+J^Hc!=;&tFjQ4|Aie<64D~40qCxtM(jipp<6&6=m@8;Wr#8&Bs z7xi4+Cp!PM?mCr?7-(z{J6nb+*a;+YQ>=x1H#hp?0wIt zzv!&5dr&_S%{7p0>dlV3w|tGoHS;@h{o>S*lJfT99ml@xmjb-0P0?e70l(qbyREag zDbi|%qa@{xMyJ2Iy@@K%txt*dz5KF=T01}sWEhgYl4P?H9OT|;!rI~SDav0a>#n3_ z8fT2VmXFT-IJ6;ThBfaOajS&e4$dWHuwUr9P|7k_DnMy&PGFP1PiB2z7sda0Q1fbX zZY$55CB)bqFOEtu$S=edjGKz&KI2*0G5+F`Fs*p^>ieD>0=NXNVVMJakd@#MG~s-E zWEzP_%oTTBex6)N08eb^7f}S5!NhWaqTUwkql_$IPpcaXr5`W3id-1J#1{}`JM4!< zOB2jA=j%?FF*QuPC!bVaO`QG)kR9yDmR1YhwL@k@3rF${vfm|#bGm%ce{;J^X2s@C zrq-g&kJ!io4FPUA7zVPsKQ2u~wdfsr-f{>IiUTPkWKrt1##yWzIkDO6BR#0XaNCYc z&KHo2!S$1eukP-A_M4*MSjxTAAwx2{lz<@+Zy*k8vRl`AlajalqofL-X(6c~>60dv zFd>4P@^nAylnP$&)E`A%Ul-F23?d}9W41kpjI8^0dJ`gSSE9pIz()Tx2Dj13L$*qzT%%jHA zK~G9xTY)MM@T-KwXGlp|e^80_Fsc_;oD~|=qx9@acJ;EKC#78uD@x=&IyOlpx2aki zA!|zdc-qIuKsh9OT_d#$+-HGB8Q3xlFltUh^MmFtDmKqT?+Q%^qCG|n!@pfTum2pn zMrZn?_#h5uQF=wjv>~*R-u1>#us@ox^U@0M=4P(z)_i4n#UH0M{yHgUHdYTR+L!KCPakJ{;1BH36RF>!{)V*Emo3Y-t1eX?gq?KPGq-;>MJuOga zA6wWwKM#ALwuE<^v7%f3K)C$%m*>aunC;3Ta?XM#Q=lH@@ZO2v%hbuUySMh;2J*5k zt##eUpXu3b5?UuS#u9}Q?i}Yaxe_{Z+M%G_#qJLKUstBg!Oneby4nYJ_Ch*0M*4UQ z>dyR(1Cd*6{zv-EmSgQoKR?+|;$}Xr_cK?tOZgBe|irOX1 zedObB7qV}Cc_sBPq4ur0Mh)63mHfK#?l!xxcczy*Pf$xWb<1zv))wb>KOPsI0?lis z_VeuYMfBS%WT5X35zVRlKX8)+-)%b1ABN_^N0wQ%o40=w0S7%dRgNdW?w*7;wJ@k9 zX$5YLeEnuocX>bmbam3(CGuXn+wI#-Q46t3=#wK-hHF>JnzF0>*<^BBPi6-f=R!gz zN?2?asUQkdwe6$~HBJL7J6hJPuFa)0_d8C`e@HYa%+&Xx3Ql&$M{~5>a317hvT7NrhO_~^Yg9KHhpz{;b>k` zJ%xva*9$lAOXe`sJD<{5obG|k-VJ)OpW}#kKW+A2FfPt%m+I$2_cklFt-G4L7dXzc z=YJgEUAtKBcBt7r7b6_g8D@IjzzD|Gz)>pg!*}Vrst9Mhm@u~v6km(Do54L*^nlS1 zmTv16&-*uzx8{b+Qu0Y&FYhD4d&hrT)ZRXLZ@ZkT4D2krk0d%{xo+*r&{Ul8bM`9IKp45 z{PmaI{q3KI3Tu^X$((&06uGh#8tjfO^9E0&I18*L>(VJr8BH_P*JrE&kjOZedJ0eyigW^=bJ&#IIH zg5gc?9xp=fdKLfkl9=VOA`V9IMqjzt6$lMYmT#q%K5q6|TPL9+(*j>C@mGvWiA+Wg z+hpZ)p_cBKb)&rVZuU%uZ8C^hu3l-Tz{u{ojTwTWe=DbQ4(}5fLtO#X?Vdmmp#REA zGnf1DRIh|OD#MG zqx}JiQSn`2Q7%3)sU!tLK0b9!^OM-PLs#zOc67168RbvPZEUq_PGGw7Q z7s+WFO&B{s8>4)eatPKabM{dg>{RB{BzJ#Yzqm&~EY}>DT~jK! zxMQT!fJqa;$~na8;`(*r*rR z3eB#w+;*x%dgy?&R$3CZ_>Ho<%q;q{vvU=1I3}pOID|=ix^!mhmgbg=Me9*|*swPz z=XDg2^Ca+I2U1E;3U7;I72o1Xqn^%pqXT{9+JS1W`UYRc&7r=Y%af0y4_WV++c4Hj z=Yvxs-Ey+MgK@WoB}MSv5clmwF>>=oT)=f^@y7m%v(ct;Q!u4yx~=fcaOp~PcfKz{ zFey%bk2S{_o)r>59?-1pcTCk07zEr8`F_&%xpyI5ZPZ*g099u*aj$b35_GatSqdzR zk%{7d;@4_Kv5}`iS}q)E5eRizi!!7L2o$$2bu1HRHj-J;hb(rwcyQ;KTC^2#pv1Ir z9Chq(E0|UH79abur^f776YA{C<@Kg9_M*)Am|JInuT)`&gOq z?csFKjE<0x3HMZoG@JJ5pJbwT{PvO^T+5S-Qn*v>9)3(lq*W;M&CZ;W$iY-gt3toR z)EfX+N*w_O%^p(GsoifpO>MOkChZML^hif-Ol+gH1X)olyUo>a5E1nW!wy4i3`T?2 z{kLV^wzb3bukgatnuem)_eaM~CX}-!;{p=j-Wt+$KWhAbOe6Afd+N19I9N@)FQxPBJ zY+7H(WKo`b~e6XOm_@MwcDdGGuq6?9Mr0GB_j<(V<_wn~^-_KVLesf7Jtx z-fgUBW2AL~54;f5kkCNS@x9?`ZH%B8g=SHNL~q#Gq%*#Ww^XN(6<4;*-XRPuC@qNJ z@N^Lm{9K0KaW8OSbD$eP4(TyiyT#s0W+RRXz;Up7EWO3SIJO2l&aP<>47W0(oie>T z1q+w!J*0B&>|$;|F1VuA!9YDbpUo^&A<71(pmv$5BR3yuq?C`QZW72g7WV2s3a8J5 z_z&YbLtTrqmX}Un{-w}6=+Z;HEdj?0!j>2f-aKA|DO4D>D&kwqbNXJq$_CdnpIo|G5e5#wAfP7}h@*j}Zl!Ty8I?4f-ijmlae^y z5pzc}_extzt6A#7u^D?5SsA_3@zHa4n4h~$4Uk8V_&pv`!#3@Vy@K|P+4y;P1;wr0k!U+wP4LVPS6hKoQ&BA@YPc0V ze*8F*QmS3pUW|)*$}H=>kd8q86I37-&@?V)W;RlrS|?fc+T>l{kHgmb*R5@!4M;=* zT9)F0R7xKVRTkOMNyx@=w2ykPtQiLHFLu>We`qou5B#(>oGjp}8H%zp;L$|P<=Cx) z;Z$18$sH?i1rZ-SYc-gs$EB}f#p9{oA2HAHGM4q%+?GkX87-EADx~a(b{f@9)FT+o zymc%4-t&*cUReKdtLSkFCEQ?Jej<%%4BV{J>MC-{X7tql>`}N2ot?!k_AO|Z+1Mm1 zdMR{zsR5osA9Xb8SJda9;B`yy*ox|T#HnngiNUusX@jz|%I$DmDLmKmQ*1H(J);jn zHc8t1MZl*X8<=u!^$=Wmy?v3L!b-wvva7U)s2dbE@*($K)=-Y zL5ZHpdW-9~<(K`pYu(L!0nT+@MQn^{ff}rp^mop2LmTUwvW6oV*uN#0>mX2#)GA4* z*PP^5{$nd6yF-^R`x|E$ErPW99HGz-!~pmn<3-Y0hn}alnue;V-NmmGknh4EE(f2I zwB}){H@?-FdxMJKvT?Xmr_|;S^*YX52RL4(?5-NeYteFXkMB+6SUO*tjZChPZ@zs9 z5nDUws_!0ir~C;IYucQ2l6OITkbEfW!`JsmE81^ICLZpf7OZl<`s4kc6Tdyhcn2{g zfYlEs7b5N*>>i48+jbkwn62I5kebq{+UHt&dR$oK77MbTn)rTu2l~$S9)L=Xys`}n zGhT`*704J$PwyUu4i@n%BX!GwT*HwhjZcPCZ-{p3Un>lk+Ey->JKdHRaSy>YUXFQQ z9h##arxCYAV7#)MgADTFyFxnqaz)^$^RmR^DDdDU>!mZolb6J+>1q2}iCioqtz>S_VfRx^3v&V`}90tr~(|K&;6XtG?fdnW>iUJDzZLQN5Dt+}F5_cW8)B+_$4 z72nD=P8=l=QkQeD&TWVaSD3ep7df9v{_t+KqE|{`muk88h^PHlffw$E?|#M$R)a0qdP0{VF76rY zH4#n^ZGjAnReqq&g#CSigU=2Z(^M>X3cL}Ow~`k#G~2H5*zE3c3)B|trRei%mQb^_^M2vP=~4$8x7Ig(i_Fr>h}`Ku%!CK-bPr2|RX3|A+MxHm z5||mDdN5LTkj^?=>3;m_U~#&owWO*iU6kA)P{QA1_sSeJ3+ng46`v~Ffdh8OHVNkA z{o=G*d$Cc5Z$8*IypUI{^novT$kF67T$6v+;E<{4dcl?U_AE;8}ik*We5wuod`8SHq_$gY(U#m+291l5JN zY-;;Ln7kcrQ=Sf~5MFYeHH)AU)n7|}g&;IyO$5jNrxNYsBi(C7wG1^E_zot$+Z-ma z(m4WkOMA0Z;vS5)h(Y~l0%g-VQdi7ELg=iDYzZP+j%r!Swj=LZI68k>X{-%0;+B0^ z5yuV{TSFh;^cuuGV|7xUZF?_bLABo|_ITw%rC}v_?!%r!kyZa@!*(Yy)k=plYhYV}l#OYA%e%C(73lb=6GwwGacdlS|ajwBfX|7R* zC#&AbZnsqon?>-fr@W}FHJ-UclStWtZdo#TTz=poxPEtia(JI0ns0o~0;o57t1i0A zQIE_^BDu8s%3aHB=qTtm#T#bzw>zeDG{(gdhn_v&Pv2}QigE2vhlB^N0iCp_BC}!{ z>+SNl->Gc*kyxeByCM1jV3+z_gSKapZ5|!)!s5L5fhR&?M?=;fR$yad8MPMUp7YGu zWX_RaDz#-RPqHmc;J!ULD&yIh*L%sV&fm>LtI^LJbV-0qF2pZJURmXqf-%-w!p|B; zS?g&{vb2{dNV5vO%`3=6ElzBhw_@0An6wIy3crPSU&xKjFg|6h^(bw-YizGe%$yYhZ_TY)6VI9gXRum1l&bp1mQ-VFlQ)0f3~!Eadb^aD zD{9KilEx}yqhKg3Gc99gm|d#{Xj3kdML|#>15XI+@-`+ePqWQTx$D|`c}s4@)^8k4 z7P-&sY#c#-Wn_N29E{cCC~6b*O!nyPX+P>^Ba>OKTADv)q?*;RQYlJtNX!%hDTz> zoI)pz3L8#0F<})@O7)>EY!=xKcnqA`+;w7SuFh>9WhmYHBc*mg8?oi^j7m8AYHbhv zQo~Z*?xL)|u}#n>c9zuU4rPqK79-#8#8;U2qO3A>TH zvLW@MG#0xu8F)hW<#0T&X{B)izRqh6G^&5_%WC@B<9pmS6WTc4Y zQaO~vTq`Z!O1#L``%}E;`8sH=l|F&XUlH};vU^{Z$h*)>7Z0wG35XJRM^9;87vqa# zxW?R)r4=pQ#HyMBEVamiqII<@(xPqeQMNYGs4N~R5gifs3?g_Bv(i) z6wmEe_i6X}xoC^>#m4qREnRsc>x4Xm2W03^m^H78bQw*CoEy|_<-Nx`3vd3#J>w+K zr*zW-ML}os;Dv?rd=V6C;oO;)2@Ic!dE=^6Kwsryh~68+J^NREtp-ZpQt!@4gu*`6u)qvm! z*^j04jEG&UQFgJ{B9-v5l2qdl%&if!lbk|;h{wtu12J+$NHe{lK9NNJ{DpgdSDrxV zt?;H(i2yJ%*S7P{G6mn_(DrY@(#Lk%1Dh*jR(#eUHX3lxTAJkO+az8lsswkSV3*+-2 z^xwJ7qKY)(rYw@*9z22+>PgQ`lC3KGl%6Er0`aJJRjo9(Nk4w}(7AADPz|`RK2cKb zeU{p25h&IX*G5ooz4y{~_~h3QRk>yW4?FNEk~;r>E6~+)&1U`J`Est}VZ*Vuvuf!> z=I*t#bsgjO(cgep`O++gh8mCjNc8Hv_8uuQ@agh+QV0ff-7Gt70XVGPa6kVyz*2P6 zJz)|4Ej59Wsk*uu=0*D*A9p9Vd%O<&wF~6`q5i#&7tQo?Qid$DaC5I^WK%fb+BS|K zx3_9fMLhpp-G>MHm>j+GwFq2QB5q@<;9dTVQlo!^X;RlFyQyR*(#&CdFT5s@gDIm; znq*52-RzI?1T!G^xD%Ij%-TjpaRWyf&eorSHMgr;lFQFp_N-7%56xq^w@Wg&8MKH^0iWek-K-iM^G@Au7)O!zbMAo&p9&iPD{`$GZnfI$*aHk2hwp1V8mXp zX%EyXf}=Xjgbpf;x16L$q_LN?3aqwfcTEemR$vshy>QDV*Y@iB5nMl!D>u6bZ*|p} zH-V|M-ws%WSIAS_%Q|H%CpvIX@qAU%QXX04t6r5ojzapCc!ES88&=da`1jV0O*lFm z9jG1U|3tojCTtmQK1RafF_04sEKAj~fU+S;vng8rxeY{YOwFyrCta$(3;kq$uMx*b z1P1-IqM1MSe7vO*=znHuR%L4W_NRo!ZA|Xj*T2vj@ym3&KZ6!E)|A3KTrg4QY-g*` z*q$ey%T|@EY|rc$DHur11-{DlD`-6*!zwQ7?Sihy1`4F!a?OFg{t8<3RY;KIeou`h zX%ioK@-DCjz!;bxwal7b$Fj&P75q4qBQh~G5)O-U@3XOFqqb~*QXSX9R8`iB|Mg^4 zEBj%p)$95fwHp;nMTM3E$pe}XDNUnQc9JKT>%7o zfm&HrnkQk5ilZanmU+P0Me|g&DDOo~1u1TW!fJDtMN*GKq{!icfhu34dL0CFN26fs zfQ85A!a0V1s$c0d>pBvgC3|c2{z2Z`Hty}l?-fo?dX{%Hjr|(Wm!R55-qiUvd0^W} zEWO$d3sA?9NlV^Ck2_U4iW({#V}ij?1{W1If`0=ZIJ$I<(THi7SW~lKKd&Sk@vpvd z*S=e=jm~Q#XIWYkmeIy&6;S_|cf#Asp#*E2N_5X%G?Ke2WZ5*=;@zW?s-w}+@U&gC z^CIQGF|8+;Ly9uXYuph`B#0Vud9~ZDA0%s&nm+`g#D*H zk5vx2>rA8t52Lx8HYXnk-}=in|KmmSmd>q*eo75D-~Z|xdKdVjf55qlBKXG7^&i3S zt}_mT>s(jFUMHQbvVlTpFdUOeKjKd$Z<8WodktA7_LzBO#rx(S@8wkJG1M!=J(_P$ z=W;80VWNlVr98tkPN~V9Ye%m((@nnsS{b@}O^;i@-u(@DWq;Uaw`8>TWm%(^EkREd z)KVY!m~sf7+7_avXsog=Bv2Z)bq0uV(qPRQ+&o!)j~;lW_@Ty+ih=TD{8?Uqh7K9^ zkkQ+wJB#B(z?P#cajV>ZN+TlNU9uSwCT43)m5n3EpkYPx)dd0G%Uqz2{~OzLj0wZK zFL=Z1Adal&EA1&8Z;nlMN%pGO_dANnrhzq(d%gN1vyh=H3;NaSP7^~*5Y*N4&Zmg@ zDYBxiD(W2Jflc;}Z1#v|B4+{268NbBTE=&CVq`!YzHj2)uQtlqibfh0O)<3|< zu^~=<+iPG(o-2MS`eAw_bmI=frcgxUCnU1nfiD2e)F{U7quo=-p4;>`OzY=#B7nTV z?z>lGFQ-PirO7AtSQG7bmIZpSJlz6Yq$TzM!IH|RFu z$}ub%=12M^ORGk6@HwaRpQKDRGm#z5PxJ9x$xr5@j@M=rbCOq7?S1X?Xcq_3b+sbj z9iIxw()mBs;)d2je*;tD8sT73ANaN^bxn{bp_eZV+uO8HqE>ZjB3k`I?=dD^<6EN?u+)oA-$Ld6 z#MHB~&ZIWKm$X^=9@d%Oo9*;^vEB`KN2Ax(H<%ck+p>ot2v+INVP5bMCda%hJ8Xl! z{OmM}v@sDvBpW^WWjx&6ds2RfR4&#OMk_@s<4-<#i(*eD3mz~K^{p|#jo4t= zl&bVviOX=Fmp7#}{`Qq{ylaECDFAzIj6r?c9rf;2HLJR7zRkx)Khh*51~CnYd$GVS za1C=0d~06dj0AAobZxqo;;)-)&6jt#=-@A@4LdyJVh?vmwHen0PuOxS&L!V{e`R@q zP5v0Hwc=6bHu%hd2x|OwLwNO?um8tt6iXwS*wG4Laptt@Ryf#^pA4CG#%j7;It6VK z^y;|E=wZ7&X`OqRQLFW+oFX!0VSh>}zC?S~t6B-%i_dSUURm_43K6Kp zW_KdXFzooE+;k8!~1I=ow zyu&jq3cXhZ?jF$-cK6frLfe~tls5vmrTt3-n;(tHCwvRfm%%UJEUCU5bu;!C+0BN{ zc3EdxCqd=ra51l2jSKBM=2D@LF3%6M#4X>q)wA%uJ3#K~8kY_1LCtyi*ej*Um}3*9 z=!B1E(Z~JgfhFA8AJVT+6p!_NH^VCCJ~jE4!~TvWW7AzlmMcc;gEJ4DqMtD4Zm1Cm z9(?9TJy8t)EQdfAPPpEE(+Be54b*<%X_aSAVl%ofdsecJKOMtYSEm~W?=DHwcr}J5 zPD2v)Q?mW=id5K|wfRU!c-Z2vMfL%H&%!K4o0he6+^FbtIGd%M@w^cZ4I{4Q=&Nwy znJ|J$N$EXabOQ)ZX|0*ufF~Mxafa`1hkKyMPAWqt9@E`l_;ib1GPz>vK5qi&=PukH zyX1rriif*3lI4CUgzCd#Ui&Y_v((ju2>LkQ><{qLS0b}4r3!gbBZsz>a_d$y1(9Qi zo(HT6>OYDfkXS|P^d5HU-he3&t6mLZi`X3g$pILs*vRZDv+BpFi>Dkt>&;AXt zg8&Q~-rrB!WUc0}tgdOQV^hegGkDc5TX9X~NMJ)cJv^>A=9N4>2o$ecS`7ty)^oL zU)-G206z8Rq%&D4d4Cx-H<5n|Qx}T=dKlZ`SmE@T+QPd~_KT=L;%uBDvKjX2k zIj*W6|C0UAYy0qxHxr+WLHs~|^rzJ0z~q+R*9-j<-TU$JXGN$nB^IQ1ULFMYElHGl z1A;>6eU+Z)CMYXYtTh%;fGV0hL(6RTb|}4emkLjxD@GV5S%2fqQ_@44!`yI3c8S*F zb|ghhO^9KPpjUoKE~dc8y{S*Zf{ytJsa>orKf6OcHmL$rBN^k5z=e!?X1rKGy<@$8 zn&jPi9{b(KWhC@T^_<7Mf=1F1jO)-M2>4*3nP+NLc0pLwzE%$S9b1b50bfv#XFgw_ zRseAZuw8%fw2o7Z_}&QbRl#PH6v+lY&p`gUw%Kj-jwG8-CJ)nnU?azWGdX+A#CVz**9U z;InN6S$;8^0?NFNaJ|o@baed|wjOq7sdVyG#|?sz3ia5SO-J~V55RjwxHVTAx@KfTv2&S-rEDlxj->G!B;tQ^*cGYC|nKp&y*-B zR2jR)b`Do^C1ubhy-xNuW4Fb&demKdaZVrz%S#v$ZL&t0x`6eUOrV!bmw zSsw4Zs+T|Ynaps*75Rp#rCRYmO_%g#dTCAc?%t8|eAcTk1w%&n=gY^)gbrxPHx)Lp zidL&{PD|+QQ_4g?tMu^SuPGvl9(xT7{^SH9-`v@c!(Q>d%|Y*8B$emH6|8&<}gBV$$(ppttWdHs?v z=vVE2#FS*;6)1bq@g%(zx&d{3d*?-70I9PWg{wLOfpE-w(t9%FhkxDd_%?fE&6SA* zL+$-OM{!g!V%-O2_VFA3XL$7--}8?5D)Y#3`$YSz)rLvqu+w>tuBm4v%VQT@577+y zmN#q2y-UZ$2j_FeekAlOyLguk6r*=3jO*O>b-7~P_nm@3}PPy zZobn2aX!e-qXulVy*@(C+S<(LF3cH~wd2;$zLrLk$evu~d}bDDa1)d#)yBhsvg5XN z?mV&_Yugtxcq5e{Z6HLyMlRds9wlp}tdKYPyxeE)OW)8`8*jrK#K1cWL|<oUV%VZes>On8N6n@D zR+zYsGczS_d9C35spKs!JePHcEtxj{m!Dp!Lp#=HJ{)F3m?FPqr*nYJ*UVMh2G%}1@E6g? z&SY}q_}i~(%Z)mBXDnX!Qk3gcm?Ib@%6%OzqSxNaSSz{CP&m)YMp%DZ2k^a3zV`Ks z^I~G!+$>b()rgf!OV!3y27L6k2GQL4Cfk82Uyqv@bM#xTM{!6!{Q@Ur zNhPHrFhwN zPY`@LLHihC9w!hMQ}@W#w9C8B-%0ZGRYqKBK*M|zz!|&j&EYJW6k$tTip28jYGg<@ zyW{6P1JCP*g(Pt+Z^=h$-*KQ6)xAjBBPkn##~}9B9W*o|J-grlizQC!F#~pxB z$KtX-(-lZ=IbQY1UKTm;dg-MlKo3CPz1SVt59Xo9(i69d31ceFkzr5@lw;YQp{W*J ziVtcPy-`oE6*aJ^-DY(Z%DDIw9MAaOl(vJgUH9Vyo!#foL z=gRphDwDTqrXE|+@;J~H=OJ;m^ZS=6*+@%DTLf)*pZ35?#NF4v!lRwAGcIlJm&LF4 zJIzZf-+s;P1i~>}nr0oa0S=J{O7dk%Wi}PUt|qB))X-^OSQLk7a400{2g6nM2DEux zwt1$c+Rpcq&|91i9k~9Z>C-Th-U~4)w|$iSs$TM|MUD(^+uQbo^;J(tK3UOf+Tn|ucl{fzW7hyv2KPCUxhhj^AzJUS zQeah%ps%vr6x?wLNjyk+P$`0_f|;hXDn?)vDL~J-&*xh)Pw1(8E%e zw!S#Pyew&40gXy*Y`FYbqaT?YZC;ex)#oa>w&ojax$;fo@UWGq1`qx9etvK7d8>h?h_;Q_^LH;Azr7_CV+im>I`PBEoTHlXR$>k#<#^ z7wjB)a(SW{-q8J=05NCtc>}81u$QwNG-?b+$=HQ-XUEvbuN@`1St;`Ke<_-Uy=)j$ zue~LF*Hu#G>f@{>H{O~TVF}wWi$GQ`2Og~XAwSC_&ewKc8ZG*XytBv|GhGO}lDjc_ z-n{&h#gUMo;`sy4VzFvmaqlyS2F32!l5@sURrkqxH?#GWnT>`EEOUdB2jcQNgoa#2 zP-c%&zMqbz65;5cN4-iiHg>by4Uc`W=!;-@+}nI(8(%zpWZA1@VioX2S^DIGp~vBI z<>>KG&>p4I$ZL$WMwar-wLN*)RkEz0p2E&UUalOQIWn&5p$9ip-HUtW-h6y>4db+_ z#YIUyHnzf(-@pDE+r-qM(ZoH%n$>Slu!}F+gPeT4LqTVv9t>}Nl- z#Y;jme}}6%qw;mAQ|p?;o&SINH|FQ(H%pS+{C~X6c&2egn7-6yrH6{sZu#I*(B(}E zM_n;hdl!G^_|(;Av@7B7J(1GF`RGu68h}Pe?L6OX~+A=v9qG%Xm>7D+kg-6hjDEnS>_|t0{XxdXQII5TIUu5&%YA( z*SrQ3n7VRVaRd53XTG_XBv~EH=KaWcJXX;-cl#|USZxB`IIi>TlUPPU9L)Piv<|ds zK#Ix|=sAvG7m~sJwlU@3WM!q)09bv5s?nrobKl*OMILV+5l;Ymm6s&9r9)_X97nVvigcXhjEeDS0~!3ahQZxf*r{3I2oIl ze`EV%QToMsJo{960^qR!&ryA}hlp@olbRlKN(lu5xOpc3?7BrOX*j7yGWT*+8$~?@ zcqEl2Q!pYpW9_3Y)+u;~L@$ra->16Vnb-ywZtE+n2laCqJHU8IQYOG`S}Y4GyTIOP6(^U2b^3t6wu?Tiib< zMl_yDHu%&n@vY}P^p10b!I?uOK+8Xb6!CNIM03Vyy*UX`Jq_ zWs`eGfcxYr2_`k4>&`zc7QJ0gHNnV~9V(5_&3{g+n{}JL3T3d@%M6?F4(M{=0t4ys82UTAIe%;ukps$`PK9+f#uq4&&oNQ zVBjy)4AzDE-kUY1`j)KA$~oQ(FiTCA#72)N(*oROQP!c)?WJRSP(>-Ot2JNj7NF$$4q2d6^pN_z~sMnWsM*j&yM1>Wc3MXB)s0ezZ=vFfNGP0QViVp$pQCpV7Q7&x0O&T+Kdj2r-{7*cCcQPVmz=$640v(!9XFTuO>%AWUGc{2NM7=a%pJBn=WMzOPoAGpwf4OU z@%_>zGMQ@;Myr%HOhP1L!IzTYM!LnD?>V3wYqG-dR_Vx2*~f4pf8uhq{ROXN)u4cfh=*!qFQ_0FZ+3!;NzJoDs+8TRdKRmweJ#Iw1-zo!aFCKi;Pfm zFbTFG=r`_(3rb;ts*h?<3c7)IBjB}sYDqFaPMILe>1hi+M(lyUjO$IiE0Zl0J2{{T zFKA%Mxn(X)7Ff-|rENo@!FvMbX##q+}_ll)cO=z1sKs3&$8gYNo(rEhs! zPiiQA?K$@9(5fbRfFUhjgoNg!UkuEtcVMXH9uuKbxN|LqGu;~%&I^>Kc#)t69{dkV zSocJtfID9P79(1zpfHR7mPtet_=O2e65RNrNC*{7rT%gePeo$SxG3l)&D?rF=lu~z zrFW_C@DHox6W6@)Hid(1XG?r89g}qn%HjnF^DN+zFYnDhIt5Zbl}E^b-889#+&((ExEXfX+*q6P!xb-%;1F^Rx4@%}z%qqb2Xboj(M+?#s1xYk7Rr4n=P zM|S`G_OD3(yGS{#-e=KY_^?8#qA&RPr02#R_$z)q1q)?nriDCf`!D7Q!{bI}@r4p| z_TIb`kviP#{9Sgm`6M(-FYNhmgVAR+qXm8|J0~YE_W!8el6qjLixF|q7@NA!e-v$c zz$ZXx0?ZG#AUOSm*ZW{Qu(PEV9RX3m>9=WDY&8jc<-w z_?dl`h2(9{9GAcvQ13jBMxK0s`VyHmZb?JLrH!xG+Culs>$Grsr*|BDOw6z)T~Lpq zJSQ2ux&8>&0U-DMK1(m4|1GyASeJ6CK|W>wx81H*J+AwEIP9zQEB}6d{u4agvNN$GAfcVAn1zjQlMt-${BZVpRkz} z{sm3~_9j?j6z*yuC^X=Gm8a)bKYIAF#^Lz({tVY~5|#p>&Oqt?uB-=PB8nzu+X_UXo+YBIre$*IG?SmPw3 z5jfkjtiKpR?!QxK6ym0yyp`JKn~EM(dd5ggm78D;VCt8X$W^nH*`n;Bp&+EnYE%{+xI#(~JjkakS!Pdqa7Y$q)HX4YeWh{-m6%l z%`Q;}jFE2E26-$!kgrs2Ejmj*ucdi%$8^g>DnTBbNdiMn(urWlWvcy^u)Daxt4(9) z)geg|Rztge?TqCec*pBN$Ph!N{2D#D_adLMKliLeL%HAsB{>8`Gh&%>hKK)`aq&HQ z%nW(J_5oZZK*S^?l^ADbng1z{Vb7Q8t&N%56gG{q70URHr&uDjr}teEjy%VRHmgl^ z3;4$t!^VG5ffbd92jQ;+Pwd75BCsYuy?h?3y^7apyywP!R9W+JZrSI1p2Uxa0p4C> z2|{0bsmnWGreh7YHL1<<%RJ2}-Y0z7ej#+h)8~5g5&4!ixs>x!ANt&csoGswtz_b? z5Dm6?4WhN;rPB?`RPKGPglhK2c#UMT3XrMW*DM)7U8?eAr>H4E#R7&y=vn!sM@U9~ z;E&&lhJ9`wjS7(4mr!&f^;f$)*PH8d<587k28&2gHLBN@LPwe%!I*2nr@8DK`fusu zk)BIx#y=7R^;E^K_|~c(pL#xhB6ZI9EfyeyP2`u`&le@QM*t9wBd9h!cpEu$@njom zu760rQvI?m_nl&{ntFrdPoZ%&HHWMep%kGf_)W#mjY=r)ddq9&{7*((Hgbg#IPh*> zIpojKkKd68Z&>-?KrP-*4BEV7qV%K|0F34-q#;llreb0^e!>4)A#1VN_8YJyC4{*nhd-tQIUcuK18kwYILm?1`K(tn}`$jm^l#n=#! z<`2@tf5ke?>Xg}#=fBbm+zS6;-32{JA1VHQ8965NGIDwa`2O~PZfQVFy052CoyGO$vz2K_N~8evJQN| zxywU*Y542IKzKA->DbD{^r~-Sl`H0Ui~u*(Q+erBf!vG{E`{T();YZ>)cP3_8`iV0 z9_Tp~-lwfpuT^DEc{|X`cwESHW3*3h{+haPt9!*dUBk}>SAap{!~845?X;2I+rH6V z6DvgQXy09O%7LNM@hY2Dcr>u4B&{zUl=!7;fvYA)C`Y}-rxWgRY34(Z4gZP+Wn1mf1Z*W{WF6!$RL8N@H&hg7??ww^5cqUeQX|rwYF)ThJ2?U3w z`X9H}DQ|Zolw#Q}_cBPUw1{uDd7Bn|d_66t-7rw79f2N! zUV{2weAUuK?Q3-aSV~{CCCdMip1!-ms_DZ8&1kF?7{cL}NpSFEJZy3?6(==$eY}0O=_yfLUS7HPby=UAPXRci z;Hmi!i%4aHEMp^J{R?Bq0)^b@)#Ryfcf>tj98d+WK(_Ee}c!D-!!MML1ms9l-D>G+Sf*6O{V^LAx%88x+=r)>)(=GFKTvavHk=?kUp z!xL`^hGB$x{W=9dX`LhFfj^hM5K zF%tCnPSylCVP?fqO7=Bb@|MRj57{&}G}0i&e^@_nchXKZrC~9HaVe)GqmisPQ{!3R zDxUVArpE{3_Z-J_815&}zlH1`e{AzGwwvbX4^$BalBlMi5hOqH`c_7keXehvPFzx6VSGy5?|d7qvfs z7LFor&c;1h`(tvTEi9fRz~7E|F;&m4+fix?{6p?ON zfUk}-Ua&pMma^5mdowZaE^Swx`ENfQ`6B zoR*9x{b;X?U_si@>}-@=u+e95v7RJ7Hwq)ey$L5T01gtFUKQ1=pxw8Hu5UMYOb4h? z;S1aBEUb0Cf=%aBMl87SojU}H6{H>i!wTe}4o>a4Bu%-3+;gk>q~gqxfK0AXIi4 zeD*$ZTSKv6YmoI9Zmb*y>DZ=G&46k)W!-(zR$Barc3^{>Z|96*Vhs;R0c|iW=698r znvv#VcUm~7aQ$O^x)H!MF{U3ByHS7)FsGPrgtZqP<&hewXXGHxx(${V0JCuZBT#Oj zdkvmnppa2O?KMC(Wo#$vLW+Rg$T}yMattPK8XF&5`q&_cuqayia3gaeg`Y7Z@mX3{ z`ksm5wEo&a=hmJvF}ag?=UV3GFn|V>O?YbF2=X=4+Bq{ExL)K0Agwp0p9&|KXw%z9 zwXIW(V)TcbK9lWqk_kCU|K3o>I^{A;CKupKw{o1BA_LLI#AZ7GD7yn$HiFcEA|j>_ zco|jtTY@DIxnRReu!b${<}yBjP#SI-@sj|3pAOXb3SwVy_9PV(_O7<8cXZ7-?K_vgXf% z7f>~k!mTfO7FVZ}9O_}V(Ih%~YUz(z@Zc_JiO zkP2im`zC)5mLdBf#X(tt=ureGfO07L5JI88H6~1PZcZ^eh9H|Al)@>}oJRBpiVKqm zq0x!I05g`m3XC(3re-5NM24Efh+a>Y$p%)#u0*mhJu=AYNOZ=+jf6gh>cC(tgJJ~3 zuEk$plg#acX}D4?%hp)`*qJHc-Nc!pC9vC}B(`Re@P+B^ZDQ-Bz=Eq-wwz7h z`Y~bfXDK6$26JH2Uf$T&+5+3uFK2@{*VjZtmE>;K5UKfbuxItD&roTa+bRa zn53ZG(15;qDXV~}Mz+CaNayvY^B7&v3+7IGc*i+kgHH_OJ;jF0t5>hQK~e-a5gNKu znw3_O+ug%sp`*YQ65*xTq2nvYu}-i%#Ig!^i#D;9J4>nurb1Z0V-GP2H?yN9>4iK9~4RVL!JR;td1E9t1yltR@qy3Y{| z5;M(kU-`@~awYnyrQJx3tJWWi%)+S7b+avxZkN!tJBh+(=ir7wny)*Gb`?p@>+mKr z)kB3-zfKqZj$p_gvH9mZm$qZ!hnS`hyiu48=-1Ouj5I z&OC_!j?{pwKU=puL&$cZn7Q9?k~UfF1~WVSGUnoV-U47MnA26cV=ZY&6QkTOPASJ@nw zW|#hze>I+A0AZ3s2BH(#Z1w@hlj(NAaAu@3kPp43$QY%nH7&G2zek&*jWTirAycfg zm9J*nnx!z-VD?r+nOyQ%d}4jqLd<|=uQe(AvdB4NS7Lz#rlvAez9G9cAWdcHM4Vz; z{ID0+LF73Ym5d4!P-h8?WxR$lDc?}54pD?j(+Z0X7Bv=7a}nT}mlg^c+2;Pk3LTM4 zU|epkA220K;tb#l0VLRBGYpwC`3^dj}3qrZQYWiqjbOS+xZK0Nc|}h}Y_c`t+R5PFqb@b?svspGwQ6ZOM$f1k&R1HONAFv5QnrdVN2?h0 zUV(Czp+t|WG_*R@RW;j~*pM1cv2fKI(x>D&5C z5M9gN^SiTcMxI3{w8~^G7oL`HaIq#(PR_&y^kepRlhw{uZllxUuO{h-h|2Sky#_-Q zU_po!*e03J4jsbs%dk^=L7$x6*ZLemLql9cKtPJYtp78jC{T;yR21iY$tY$g#x`m7 zyT*yQd+30Z0&$F`UayBQdaTLXlbZN9+-JS<+eE~C-%J}tBDJmk zM^96TqUpf1M9DoExb3}{J62kZwMkIM7kt#r_nVV0BEJtz2*)SC!GsyX@OLkb6N#TMj^~v5f4~VP+`BX}I zv)}>vPhQ3xWQ?#?qNXOCEbHbN^V9lLV%6YX@vqnSfyS5+DEoeY777Zr?q3lJSB|Oa zx$4TIqw7^mgRFeMn}NP#H54frbGH&3Ao0D%Kk#k5jr)F4bw`n)r|t~9NPA#4AYpew zzJyM|9@W-8O3gIc_Wmonl?N1)L}4>*P+YPW(xxTc%-ps{ZO$T<%vMHKQ~W4Uv{A8( z|7sX{eHvX}O-YiI)AG|)lP>)_Fd3znI3>i0iN?24s6HP#tj_r`FSU<|ADv3!)Rmgd z@BAibMoi1ZaBm2{*Ti64k~<2-e~p{O{?lKiQ`ZxYl~x}kr>mrbeeWpi;E=NbC-aeK zyLP|Rk8395gx)RW9}=|C84dMQjAlK4d?YwqM@y&i8#iQRteY&jkTZP<9{zg0bT%}# zjdDy&R@G+S*yIeXO)LsNo=U20axx4qOb2jovgdo4&{HI1h!I9~V*HtqWNmL{aT5`H zYkOck9X3zZ+?=r+3mcou`Fr2M%Ae{Qsb4Ix0f{s`!Lo}(D>}2GK>%l#~oIdlT zK*oInx8Eim)&FFXn4)7U2V)b)d|G9ih59WY%zNu{@>0R_QFsGVS+3K&!sT4 zHgn^-6QAvVEB&SbZI-JX5XGdkqhf~pz;z5n$r~R*k?P$9?1iaLTxqe%DP{yCpq=`= zmfuoSzi1to!Y3?Z^GHEvUFkfio%n(9Th2>D#MDt9x)9@zYvdOU58MHd?X-K2>h*<5 zo4PtI1n%(B%bW4UbaqhuF7V?YFaxelcUVbxwxmih+zH+Ufi-Jr_)Z}~srfM=5YarWB$g)seoL0UqR(4(I1*Xky6(r=rS!`Yf;r#J zUdTdElYsC-P8Kd;5|M{#&P2L7&4sz&4M6tIg7r2|A#P!-2b0$#@!yC6rR+Zjjdvq) z;Vk{OFp&|!a#y1h^j9nVhMbCi%^lXYxLQ93tOxpb@@uVfONb2=Q1(E_F3i704K#8X z?r`84TH{~PYz)WF*FQuq6;^2}?D`4AG(8xKXGCziiSsPbkhix%ZF_^KvW6}c*<7TU zY|-++DAa^Fs9^x?C~3Xer2ru~2Kv^_q68adnGH|bD~=+2w}6@#)if%=RlnmJBAV{v zmot`#8IG0+U?(GJ5u+DtWu<$|wRBmPCRrlWft?I|(t$pd<*x?*Vd+3@wk$(sW64t^ zi>F(ct<#-(P5~^*{bS@t=Rk$&yvKF~BR?7Ghpo)>59d~qugI3eM%1Ft5b1$L7WyI!HYEfwiMXMxPfl<>L(8<>~3u~TpBRPm8#E6%CPo#>A8xkWUR~{nr;QL z$^B?gWl5FBHsRB{N<27VFj(puS~rugigRe1Lm9|iBS-~g@D1nPl`efzQX&23KcXIz zAQ^T+Aw>0jH9sNTu(5uKZK|pp7ey?hsFY?aBZ-TtgvrTgsVkgrz|!;x2H{CH)Y9K}~qF5_S)2!O*?}pzp{0Kl4b4U5%Hie5^*V2Wu+JQI+ zEc>mSC)15fu#9h!sYX|_zRe3C3eDzuPz`AlxUfs4^o;0El)v((8cDVE%HU{$#p&Bj!#%p;Ezv|A3TnD)?3 z8q*!JXu7FuD>#mwzZ6U^!ObYI+IGh!1k%a7v}sRJs&d+?T6sYYzaXFE#HRzIP$70i z?!^y$7|+m^Sy=AZHlr=yEC_kHUmk4FtN6##wlxb$qPs4*Xd}{cu1ZaG(6L7-g(r3T|KiHL0)0+r0YmWs%YD1Dwrnw`}MyI&F&P(;T-BC5gI|q|Kf$__NtdU__XJbws+(-T+6F$?4 z_wqW0IgTs`hN<1k6+3L+*2?$vwOvv6yjp)4ot4)%bIwnvP{av#MC&*tR<<#LXjnl$ z>AGxt`3y;04h*cS!CdYn%kEj<&p>q*c7S`&U%+v~lH?qA5BrD&rUv(}hehZ^5e{-kTdO=btB;j%r;^ z;y1Zh@O!8$`l9`{NY~n*aPNhR=`u&)U_;e3NTWm(PGHex=btuDe6FDT=tS_kHnhLY zO6Avgrf%NVlo!i5-Px?V6?a$sXZJ7%?+J3N+PXX3OP1SmvT!oMN)wCw9WLKbE3tyo z#8nIz3|W7n=X{(`KA%v~_R@qE_j|9Gr26J+dZcXNSVDg5lm>ZmiNY0eitrwIvAp;- zF1s}%B6v)_70l+5H)OFhm+=x>!#CTaPvY_(j5+D;vLr6Oob$-0-c?S>$g+GOJnlm8L2ZAt+7ugoNo2jj$4mG1K7 zSnvh`qQ{UFHmPf`v*y!~w{bJsuQy<2Ft~wfOooBS&wh@LF`-^D&+p1y?^jSF)T>=; zBN>9AOP;@aOAXik{73F(^Sv`%n{z>m#g>PR7z)9N(4lbkl4Z8;djmh$yI-PN)`bPe zx5N>Q+yR@36Uc;A5eAXr7&oEr3M+8!z_s(ItsYyNR3Ives8~^;iz%>h-TjzUSF&|9zR;6FXflLZEwKJy>8E2$q^q9d|h(XM^Og%D# z%@x7o=@C)8UoVYzD=(ocX?0OI47Lete7j(Sgp3J`#aj&rvA8^1G5{_2Ih(uQjM_n6 zQ^wyg9UmbkgSHIiK7TlLhGMnyd3U5-`VkH>f=*Qr`wse>wsDX!ij`H#AZoLVnD_t+ z+`lt22-OVR{hmc9T8hhPFKG_h$xiAfALOrSFN-6gFSF!qifQoT1hnAskG;@XpQIyV zuGN=BgiEcfueP(j8H_z)uO|06QPBOcT;**eNf^&W_F8RTdx0pTxLMr<-;23fOoGjk zxjAG(rPKIvKdODrVoQqBfvR7w?MVHS#?bmFwQ{gJo|o2Te~Z5R!x*Ec_6?inX)E#+ zJkwtO?$#@03a_c7AbL|ltAbn6tn+o)1*uc7yAjl+WjR~v=~$7rP%{$@g1&|29r}Aq zsjLV174N8|s>!jvT1u^A9YFb%Z$e5hSOPX7w-0Jas9Bk%6^7J4v-|iD>svONIrGl@ znDU~>bZd)o;DI%9>(f1}Exb=i(3M?sU;Xz`M=yBT2G(w1>(SR2CXU znXwDoot#qpjLS%UDyanr;mmIhTh(AEf6uYloNG3qAySEDE%sDmfuPqh>9Kv8@ZSU3 z$~7Y!lLhBL9R%&0J4FZ8mLP{u%-)CpVdGEOi^=X--7k^$mc!sSj!;lUxmFirQ90Tw zsN~y@M9;bFVt9@RiX5^Uce3qRFaa^?t+{8Y{c4G4KZE%gF*4(s{ z8A5k%TWBjdKO{n@_oWHb_gj2!w$}mDzezswHMO9jYk;Unsh+mrjrLUIgNFQZcbge| z9T~KSW2tTT!>GN1eUkQp&X!J1 z*@=z;x981!T`*ybZ=l=tI zSazK1AQ{gs$}V>AoRds^6XVnR-GoH=fce)tBzCPuf}VV?*J(M$3sMsijGO+N)AY50 zGdp5StuZ%k$g^~Q8J_Q z*>zT$rjdFxfTPSTqP~#^HAS*QK+<2SC`P5(@**y^HkT(Bd6ypSHryjqo)cWUIJKw5 zEq`Dz=6wm)lZ$MS=CkY9{)go;w*hAn4rk*?cL}REOhsI?9K=K3f3!H$%W#w2FmZ!> zyPO#wv-Y^~uj}!lJ&z|?yqEk;YF6@@PKnjIaG59nMhay8jM32DX#1S>tg5VvOt_Mc z%sy(F1QS!3M%D9vxGzIXTCk%Q=Hfz)EGwMNGdRKjuYj|^L`}j$Hk-EPD(fffFwB;veM8Sj_**g`j zomutwX$Csh$jcyYGTrJ3jBVPsd9Kf*13aJ4_T(uVz7R-4xpc6J<%j;m>U>a0@=mg= zT-q(s_V7&%MH(!f^PhLJMg*&CwmDXA^hE2EwzW30x$kpJlR*95?|h>RvU<*xitF1{ zE528#mA6_|tM;(=^@-{AmjAESkXzqtc5rVYuO#gr1jlkahh$G&n^;hH6d5P(GaA&y zwkjXSYr_qr87rxbZj+|;bfxQ(wcC^3d%g%$8TFtg+TFTegnc-^qj`vSN>X>c(7Te< z3!Kt3_n0?WU8rrVR@`a+Xf~k!4{Kodab1}WENU<^zK<`p59WT(q@yM%JR~Rasl3EA z_oDd@kaMD>M$Ladja=PB|4mWayc2vG{TXNRlKZI4>`@0nd_FzaCH-TC^Nhz`I~gVC zTx+EuWaiyzWP6uk#li-@R!BC}ueS?V;jO5$KR}~`cB_WV)M9fNWGyyI|?dBqMsUCf=jcz2e?3mF5Tp!^X)My<>DFg;<+^ys(Ly1 zU+)#vc9+QulJ$kpzG=M8`!pgncp~B~i#{=vj9&H>^P|qr=AX+?mD37`@4<2M%5Nz` z{`6{UZgf+BHPyK!?Gpat+fBBqpnF085yWw7&7%YK;u;+EkE@L!F)EPD%JO$z%dJo~ z?9xok9$!3mpScoDgk1af&?}az5^(y^0gy zse7N{KG%>F@)ng~n4jisB+$`?D?;z2*4W&hzrxVo`95&C2$8)vJ%yUT+D^a@uN$?C z`~jcao6a8qvMdv+gzqWS5?X(+?7b;Y>*t^b&rZ6)3nz5b6*DzuW)#+Mzr zP95Ap?Dt}{3;(cOgp>!xbCI}(BO;xP+|3loLe+f3WYeUj?%1gk*MC^<(+AU?_S{mn zLEQMQ|FGT^q=3(n2@$#A=U>sfn!s^Ct+12R5LeANh8b}8m&lp;jS6B_*=uRW#qEmP z1kivv%OBObrc-3BqODrSg(rhOLgkEAuwR?5r7Zf+^{>(E81g~GC?5_rIm3O%JiTGt zBNvHGf8|n?zTg z7-6+UoEgr*PO1vqlDTTFw7)+5FvWBn8@RryA@bsVwSPqeQ`@mA^F6S}3bB zAf1xh-T9#v7#+ZsfK5Y=EUc2sH4v>3_0w|TsTz~LIm2whqAn9}L(Y%U5`yxbEBSPs zEGW>MmIKHsUBvt_O6qzf?NA%+!*S}5;>-^{Sk{xRVBuE0vewfruDESv(;rUK|Jg$y zUgZH!&)i6WnSyrql~mfZRZy|IW~ozhcli;HESpZztI31b zq8TTNB=^U+WSj<)f}}bs^D5vEJzynmF`yLAvG??>$?D^r*m_@I{vEzlsc9*d(?{0C z2mbQ;1J1W&w}O2ElfxCYoJ$@bvh0*D082elkBBw3-J%1|;y5$1&k%%un_`YKeEv4^ zX;VW;#bKA=<9J2&LI3{C*`F`)D&nns1501z$X1}PIV;=rB&V!&d-QfP=hGItjPXlv z`D^iQWAAUs2g$2`_q;673=)=9Tu9gjca2@p<6p8=Y7lkM_@8s=d|z#Ppy=*d&{58 zl!kFyf181xM2Czfq&KO!Xov{D_*r*G{h`ZhL!?3feiVOkJF4x*{?Gf z|2SY#f=C!hoj(o9dw$q1ng%zm(>y;qhsP-sSWK>Ix=F7d^*YmMDvEu*zUWu{B)(>V5(?B70djkmF@|6&Hf#pp9fBakW>BbBE=S9fsp}fW7Zfe(7=^UEYMopn&_Uj>LvJ^H+D5>s3obG zDC|?te46+C1+>GSdBoPK%TqS~jnj)8Jx*fr=%NSwV?`1X6HnnBPwg%h!Bw{+Hf}`R zgA!aX*ICZrE?)nV6p=Jh20!c@*wpC!-kfP&R*2LcY>5uZ_?a-zZ#rUWB~DekqYd>Z zG0?8a>0T8YWL?z<6_RnN8F^C&s`DlgVBAH~i{l?>#|yF*Pj~HM)blaf<-huj0wcdB z?5R)nPl!4?1cmWQ?fJK8a&i_~)t)Gr6<_?`QPL)&14)i2T!GH4je*ihuUE*o>IZR3 zDB!4E9vRN1t6t%9X$((ess8F%f@5?u!|umy(arERdA*G--T)6+h0h)zQp?-FcXH>L>mB-LvxPrj^#B|wJn>9{FE)yOsNU7I>+OMv&CQP{;9Hw_A zwkaXCb$Ct{r66FfDZHn|zmB~*2P3OL5thGCMt?!-ZRi%ZErz`4eflRM6I20rQbnnV z=OeD!&XYU4T$W-CR)6s|*Qpej2CAobECo@-6!F=(ZRPpM1<@T;UiSGin`oW$Hx7FH zYSJ>90pc7z0ZE_ft9}i!@S6SFS=7CwZ3L2TZK$UR$yG#V>$iHaBQRx_-M{CYiV}ya z8D^x2n0)yh6N!4no^CGr&1}ae$U8xBF%*RF7P9n_{1zxUc)^sOp(DyZ9DUkpBndt- zV(DuoDo+-#Vn4O(;>i@4ZfEw=y(X+{E62BR(b(*#mM{K%8!PYk8I|YtnSwyyVrJ8Ta;Ivc_@U#TiTNJMt@~8 z-Vve|M1TfuzkAhHA%kT-bTebJ9LiJ8+ogWl#070>&J*~gVBnoJ8(d(ey;SnApsEdj^*hm{^J%HT&$P2JOm+A;%7zEK<7Xp^Pq`cl6IY<0FZ_s|ekdEBn# z<~Ww|ETgoA2Q$eJjY=eT$QLFxOCK~0!Al2b4Aua*j*l3xrE)SIgOLe=+@?|wfkb_m zQzjvE_r*=$k1xmauUX|}*I)FD)bJqoH+FZakfDVrHgld;sqLm=x&98IT`#3wKZkW- zRHdxz(Mj;o$1->Zq6BQxz1yi0bPb-192dymG*alh{yGJ*#CLt~P&x<^R7{Nhhn2`G zVtRoBo%^U+cg9-0G;bkwwf;V0(2EBT@DgM-Dkm3E`Zl3G7dEAZV&na$zaiI$W3MF; zQ>`&Djls1wm+`jlF{%RvdSnXr7Rj5y> z3D-X?Hp)J$3;MEzQ23!hiW6U`1@sUvHNh}s(W-u~RAg%cMN&yRp_~Y3-(~+SU`#?% zdX}(lcX!ivIG2{7SGfi0BM%?`^2^nF!i)K)@7g2*-}NxQNp$XNb#0rZTwsj~veV%u z9b!+Lt$LuYAtb8HIAq;(#$*Xh9LT!ccs=iz( zemC9DU{O7J@OyUz7ngp=De)mv%uA_EbIHxQD{jVlH@{}zX{t>@9EDgdP2m>jAbwD) zC#lpmpY;%=-;Rar+(s<^NNMdL59*Kqq>erc?~J&zbUIK)S|flN{RT0sI?9r+Ap;E( zS>M;)koCRE8q`_(FoRx#!T=7A<}mGywyJH|?ECZleq&E=hb-?o=W4w5tl1AO8hd(k zMv49T=M8t+3=VAk;|t*@9k~fpQ0=VQfn)1+%XZQe4~LMy&{Ea&Po9HuUuW0iQr%zjQ*_cy}Sep`kD~kvrkr2*R8_x(YGA4)G>g(R3l|UZ#`{{3K6H zA^xNGW^GiD+@%RLrc;u>j-vknb1hnb0*baDG}K4jsGhw^+eA#3*T0*a#BgS-?Z?}R zWtM16lTw)2sikyNH0h}PN*%fnXu^6L;dD-shNYGfp`oFs2)n|C(3RBf8p#to7SzqY=lw{j)q9uM9{yx5XVA}E zm&e-+aOt4t_(ZPbs+yrKdzsx=EmK`@hi(mU_B1(o+u%g-X>_ntP~9q23Me$Y=*rrq zU2Nt|%hT9P^#1??T8f%vaAm7RW^mTS=85Wye2r`=@^{AgOK@fIwCm+ti9x8$$yx2x z{v!*L$RL<4jCCwNH^8H(6_Kef@L8HkT))eN#)P{ajQ77xFR;IpLi5`Pr0|2V=O}>siAJTMz~IexL*SB-;t!gg3L)*a@RG%5KnUFE5AXeqq-dGX4lAs zUkF^x))z(eQuraAix6lt{T(ogB$9l~5nZ2LB^Kb(Nz~I0hPX7%*!{_kaLcY2;;^Kb z2;^Cr%~iTDq|`*=p*U<^;VFoR1&-fA8q?6Tzd})St{NI)sjuv7z{`^Ot&Qql$NXwN z$*!jUn^D+8oE#6X9nQv>Uf)U0%!@yUa-7TPuTnWFpK|p=?ex=)sc)@_bkx2Mn0p@N zEMsOapHXKkxz9`-l_OKqU&`jK9J0<@QZG~U@8=@r>0e?pBl={+Uni}jm&J8_eQzyn z)iVAc?q9=ap`X*J{+s)s)BVd)N%>d7{X+FO^Ym8p(O0%8N{XUMZh!YCM-Ru){{a8Q z04NXv00II60s;a80|5a60000101+WEK~Z6G5P^}QvB4nG@Zs?=|Jncu0RaF3KOv~a z3+PL8Lzjq*zEVT)wm5|LTAM(y8Frb#juL8qkjZgfZ5xy2!6>vC77t1y;O66I<6Pe> zWfzl}h5$f!Ck%Bg@OWUQANVB#@(|VX22~Yqi&%%ClJh!njkPY>xuHt*H4$J7!?><$ z7;Tz>2rq|z{JFLiM@|iL?k?sdOu|nP6?7#l5~Q^~h^%<{@dmxh)wX@0EP}T# z)PCXo-eY2pVMGH8yu;=RancwrJ%x@${F1t32NbaQnH5B{uP4I`H2zBIh$V^>#Y*@U zA4nKR(=BXRG*ywOjMYQmY3fuAn7_ zJWM{p_YzitOKhO1JQcVBih7i8aOy6Hj-WjT34vc25wteLM8W?6h4{krm{<$Ro1-oU z5q-zF1*NWH>~ZOqoS0RMCjGXLD2>ZJi(<&xL0;}7v%&A)Ju%uZU60ng_YUNy0 z>6p}CBmT0eWy)+qvxK3?{{Ry>%^2|&9j3P>P~p_JQ12WeC?5^xSaG!UWx?#X<_Yr3 zI2AMDRN{!(Q)V2Di@0gKsCZAMf>yPeR@&w0^)6iu&Yg7@$K%`@GBY?%Gxsf`eG`)p zs7$;Fco#9sKy(WO_X_HB%Pm=U z<^?Ln+cJpnEU)e=ZARS_L1%7RS6dF{iF6upoy}1d#8{HQ7#ohu;sbpk<|fSHJxj*q%f#nO-CQ^m?=fD6ktxVET9{%n!I)HNnWIAL zEzmh;p;Nb*25aMU9hsX|UXEdHFS*S5V3orb1>)s-CgS%O5NcnqI+QlOok|8S3*ar8 z?}A#I@OM#kPrWoGJxzuyD$16f6A8DYcan?6k?^ zc#_U+z@LrN^k;U$td`ru&&3t}!;Bz~%rczc60U3%Fk9`bv|2BGTK`t!U%ax&_>O z847%yO5Q@?QAEsj{{X5K)K>foJ~@ih)JI!Y75=2O*mgv5tduRfc$P-hYUTwGshv>> z^)9YEv`s7Z+(M*D=MdW;spAnBL6wga(g!bHOPoza0E}Bw#MsJIZzXpay`-S4YxS(T z7Jes)t66!Q)j_K6263>jbAXf~%m@+a&=f7D_XP}GokYm)C4R^R&acd|mK5R6VTGpI zM#)WI!s0OQrJ7BtQ^Fttc2*&H@+DwzuHdndGn=SOe7rFOP$xt^S>%-?jy=a#K3Av( zy0+jY%gq`;smdLW64T=k?pc@)wFEMq`+*M!US~T#Bdo%3Cv0Bn>_X&Qd=j)Kia3bK ztHHTvlfj0rCOx%qLo~ybLqmq;BLOZ0wSQd8s=h7D^LdYerbNIEiz}XT%1!sa8-lfMf-(Ryx4P5=lMFC3bG15q1#h2N#IA+OsxBy0ysE{K(nmwHYitx ze$g%A#bg*%Ge%~BAxf?u+7iv4%bv%S6Y~=4=e5 zV3&&{)>*=74YL(fX+hZuK7qur0sEAeEiNwDZ_>(+{uIkBLx++AhUnM1nJ3dN3b=ZP zN7Y6P6%P;_bh6yFBHblxP-Q2oorowMr4tYr6=tSuRNvsoTelx#yl)S!}?(YTiz*k`}Y}Bs2LE90Y5i(Du zsBKNJ(j@-?5cN1{s(GKE@kQiDGKVq&RT$gE@f4;5C0FhumoL;IVl8&C&ACeE;r(}$ zEhuvjP2}zkfQw7Owx!<35!5bP?d}3mY@+MiFu!LjsD^Jr;(hwB`P{gY(-B+eoJ(_H zzqk$!3(RW%K0aW??YLz?RoRz!iEC7ApqMQ+D{x5TVdDZYQ+TA_=P{qMU<}OB%vK?7 z(J;DJmk_fDktnI&j7*hdtVA;k%hWQ&v@WHXn&lvR-%%`gFE@g+$3oG|1z)$eTWD#6 zoGVFevs}t^&xmYNg^59Rr6cDMMqX^M5gp)d?odyY;tOS=caeaX#vDgGd5OwU_A!rP z9M_NX!O$VENpWjS4$K0k>Jic8A`}(mNY>4S83TxOk@&iaTs3z#*zgk?TDns(JdmcD zS*?t^#^IqxT4_?)P@oktRVE#jnK1?H6t*qQLX!CoJ#z{r>GSNJ3^gwHlu$*%WOoKu z=$mF8K#Nmaxoxc6p{b&`?^8Ug#-U`jLg58xi=59?yu|YkDYnlz4_RB6mh-n_+m zVMmwZNp9AsEHrP!si^@NTW$Q4cxbFez;b6qA~FgB0Q-}vN$5Xt7;V7BSlbwY3u1`u zXVex%3E0o15vosRL>92?uz7;F>VW%)9+!)LppR4HRV|L-To@-T3+89!L{)M>aLsxk zzi;?r*-j&eOs2sY%n*~ZkvIWO%NS@;($H~}bs*^?|cV7v&!9Qrc2w8pFEZOdV!V-p5$(%Rr{(GV5OBU1=l zE9fQ*xsY&9VZ#Z8<9-p?kPcXd1*cOg7~en5A60<32WI({imVT*i8f`?h_)5RZ4tnL ztF!JB1bsw*!sv2x^)V$ktA*E6gNbdMTwgNNV^N1Tu(7pga16%Lwio~h8)6J|Ur5wl z85Ui}u)i!n{;{cHamVUXu9`pgTSTQ|ZC-611lx&aOsa9yx)KLaH>eJvC1rY)j^JTm z!84NmCP0I4aR{p~dM;_s{$b6`UJbPnt&6&@roxt$R;Kkl-eT~x#P*-=YNEI}mK>`g z{^g4e=B2f;OW7cMs%14GIbk$|M&&aq_{B`wCFlN#%nB^*e&Q&`L#r;?Qs~AlM%kXC>yjcYzA9F6sYAS8W0vf)N(F=!<&7vG?9Vzi z9eUxoC-_;sE^=jlrAm?J7Py@`sH-j|RhMrt-@%aC5SDH`oZl^Y@dAcE$Y?y{Jz`m; zqY2_)Ep9u^_7+$xwl_ZvyTC>}y?kg%RS86|iuh3gMNOtL#+lI`$(tUinJu2kb1wml zg&3Cy22XH6=HPbv;#tw>7R#VeggMMhFy@J1H&J#uge;sP zu+zE0HW@4-Sua1aI{d;>p!1DR7;;$K%EGWez&l~ajcXOvMg>~Ci9!G#L_OB%ybT_>RnK|cSb3AD+3pTgQ;lk#4BMN ztK6rw(ZEWWRBBLWa#iOE+zKWz+_j# zJ6Mv}soCbOEEeuJiHq`(dP*iSyWka|xn)LvFVpS>BOk;;+b{t9r64g)x+WHjfiU|I zxDCmuot7L8s2DG(dKK`YxD!M-Djx~);()5Ug)mHv%{MfZ%5@S7h2IfC ztUl7#xp{+B#j~PVWUnvk8rE+K-IB>-`w_KvI~9Lhk2sid5yC65Aha2023f$2SA)dT zwuCJD=X0W8)8p9sgsfl+jpHqu%MS4Rme2k&g|Lm)3nguDvJ;CVo{Cc4>MG2!tH2yX z0_kt4xmJrkY+#)B2X_o7es!KqqhhMU2N~ALxg6 zX6*eVVk~Qz{A|Lb+3R%CgL1N)R{o=9XTv6i|m z;}VYFg8{mT=Nzn;%w=c}VufnFFuc@4%TTB-T7(USmJm~S3qK9_QmU#BpazEozT&e| zlB#)`>+RxF6OGCS;rfCli)@FZB-|cDC`~Ep_Z~0e2S&JF{{S$oZMm&O%s)`vtikc7 zrneFd5zgkLH_w8J5SB(ix#SAH>*k0uEF630g%xqYBLEOfve8 zBW@}NB2Pr5o0)26DxPDETVM)qcw|V$#o?WxMHdNH$`}b1lx6%H_cFF+_Cof!-DMva zhuM@4h`V!KGc4DCvvm@{RV$(;4pl?B0Tt6}?>G#&Dl zrbCb8hdqDcOt}PAW#8PX_Oi>LNl$NOkijDMiy$poLat%N%|?ED1~7l@Q~+&a(f5{M zp#Ehg{1dpQj}Tl_&u}hsnT2>O%mY}c=?-bPzcAZg7l;mQtx18kK?!RlF?_&KD4hP_ z_L+o7m6$OV{2>jnNM{*k^pC9`5CC`*h-S}+!3b?wMjTGMJ-{n=S;p3g znZSJ|GTx_p2Sj4tiyuXIuS9LPdaj_lYGwfYib=Wnu@fXemxxR>f~jcG71T-<(=4l3 z6AzQX07W9)!!b2^jZn9Vcci=SDyqXR#<22yORLn#wkd~t-xqLP2xsQx{5Kr1Drqmc zVTf4FD(-ow2>b&ErQFQ-7RDt?V)&T3Q`}CqDix*F4&d1-&LM_@{w5qYWRy$-u22x7QU+rz?s+~bhq+!*4ohL29x*zFYEY&SG^xD4&^aYv zQ3+g1jy^Z?H3VS2VU{RnX1v|y47A=*pf+miRRw@=aAbiRh&4@RDK3BFN=6rvxvBM3 zEovv~gghX@wq;VfM1)|NA5#=q6!jV^OT+|S+qV<8jUMAc$P(NV<-p&}pj?+NLDCRb z3Z{J+`G$+aKMRV`pOH!h6&t`a+;DzEk?CE+$?@E>8ab|DTI}5{7NaPqm?R?2kr*Zs zcTJFHUSgUa_xhPk7{u<-!Z$~3}rxWa~;BC`~=J+37LkMCbhP6xvl(vXZ{F0~Ja&Hn(2 zT@3OwMBBp=T49*z{{Sc^0^G(J;uSQ52IIH{N~}TUfn3bgI}!`bb@vQJv}Lmue-}56 zMTl22%|~&LsKl#Fua`4q7c)$?ha|XA=tq(L%DP=EI2nE`g;|T6{72MEZ?#ph+5XWv zAi)Cd_cK&#i-V#&Aci3fDD?&PN6-em%2EFS!l2nkW87rJ-1U|~F#+aZY?{Qo+&02x zG#iQ3+tfS-H4nl|M9&+7q{J8zRTvz<$jDc9?xqSoM6bjI-5yfE{Kz6J0wpu?^Om}IRvMHiwR3Eu6j)c2VeYxii0i`Vu5!CpJAt2lveRc;r?fZ z`JNZ%cvHwr>`N!oBUSYpIU8yIrfavlui_*v7l;%RvG8UHAnrGbMRx-TTHA7n(eWr@ zlvsvUE_&4L*&0Z;7=v{DGCur3UI<^0sD-x%~6#zQ5_=BX|#y;`YV}W!2($~UPW{vSnH*BDMpCrfzfN?jZ!Y}NcBkm{|jb$9> z0c*B#H95yKr@%u7S+68VsOg15<3|%Yp?v}b+S0cJ%^n79fn zvacmT^Y(5i+n?ZWJwZ1J;`xT4_cEECBOMv3p5uwb3qrO^hgMq{$uP>wx*$=HG?xnU z&OFUWE~egQ`=j`)Pv&sfo2Hsstk_Y?zjDrxH7tj-s58tbK^4$f;?>w@Hz`)bURg@lO=5QRs={3kPIz_>5YEpsRw2^MYJq zO?8Gpe;Z06miUBifI~B+BM6=*(+(Jy6i5``5iPhGzv2yuE6*^;vRH9bV`IeMBb#+O zE8#FC`?hY0)yzd8-m~ftugv(pEBb(SF-Y^~11Ietz#D%vb&js5H+h$%20M+iyYVi# z1AWUhwq9WK{hP$Uky%O=qs&sfmEszrMxF+xwR@3lmJF7UWy>C>Ef%pk_!{*p;iEU| zxR%8n^A++-hR2N0VpZ=G!k#zgc;A`herJXGo(JYy87`zA%Ab%i;hRcQ9t~JTW*}92$dQ zu(7E0jg(Iw4*vl0`irx5@W1XVo5y4?$h|4C90_s4n|P$HR{f*YxXfR{nnAmpG4X_+ zr3Rkj`p=sT9cSQUAj82gf}MN`j?Xj9HfH|->rW@*OFUmR5mlPtr{?mqV{{Xt0 zE?MwFEYSxuGkcB9>52rqm{>V$69QbrKWRr%aKVBh9djB{%UJO`+z&1MO)Pl`D{JOj zv-nJUduKFg<_VjJiOFg!@$8thUzTUD+F+U_xp4@6G&G9TEE_2Ce%ZiL4a=7XrNtW}mse8S%;gfVxLRho zOs2O`6@m{jtK3mWHwf()%odXII}85+IhhYrzs$!h`pja9CNEAg6rG_?-xkrWUE{C)jM5@a}62e#JTW9cYkDHX{|5X(JqR#F>Ll zQ~8?os7%LRrr@~Tt|ARxT%=x0J{zQc3y7>nfrPmm9kmz?){tfH0(1Tx%Z(g}Cz?8q zw`w{-wP;rd{lAiN5t(r-9}Plo4y*2DAx|?)%+F}#xH!bCF>Sew=sFu^>77IYreES9 zz9D_Yb?|v0{{X@)<(PZ9hp2d;bhmRiJVCz3yiFO*Dr#R9RvJZxMd#ed4X-$d0q+>L zw)rqsKVsa{zB07U4PHh(hV)L$WqYPvrFGnvHBHR=F`dE%e%Pn37rmmJAYBs#<7TMDt7e+UHBg07hrgC zDxs5{Zfh#&QQ|UTcoWpRnwbZPZ6~;6K4mVNW{7TN!3`=6ePLgLGZY z*s!R#x?b25Z0O=T-vMRJxNEs$Z1}5aEr^)^0GGI}pXi!JCX$Djf8f$&#INf(SESjG zxlFemX?^?vxdr=$QyG&jVTp{dn3nz|?}KoH zUBF$;n}PoTF&127?XQo_P?%@#6g!MbiP5s==no=Mr>!$N&Yi-q3f^2qn7XL{0BG#1 zL2QtqlYvXgkaQ!YaRylK2s0~U@lN9W60hS~l4*wOQ|TT>q6*T^7cr*m1Yu$I+{VJw zNs)-HqVPAB)T5tbT)`VX#~C#>QzikHGqq8qBWOL%RyxDPdtlm7>b+(l)_t>FCiz2O z1t1M`+^pBl^`BEczaJG8;Ie3LX?#Q>3%Ka-%(}`voy(M;CKQUNf9_?T)1gm+a+NB0 znqkty;(4KgP8>p@TsawJ77_)p9KK8_}qu@$0d9D+anN|=~YLA_7=6%GzbAmRaZG!0c9U4krrsd5m#4d>H zsACeOP5InyHZL$m0kumrvyqL!bP;0*l|-vb`GIX4hc^IbrB+=7`PJeI=T9#$&m- zW7nt^xIS)rgWLe%KFDOvANf-3V*Eo}hEt#Ylrsa*aA4K6p)Ak zBmsvJYWtorvXf2ekL)IKTK1W0e6vGs>QdFjWk!_OxPS%*W)|2ul|9*jn@z8dy}?ql z=9=?9@GuCrOS&zXNq zPEE>RQwxIP{egG>Vh?qN@o{awha)?zNiOC!B1nB#oUyQ-jDXW0Y2XH)QTyWn| z{{UkuEk~)oThwkgMe1?2`-E`=Dw(J?4CW=1JNF|1y)l&bNpA8ie~9p!exT*}RhpT@ ztiQxkjw|M9m<8>E8y2^4Nf6>_KXI`dtV>fng;Fj9)Iv76F+#KE8t`=}rzNc1hMuC|g9LH#L!{aUE-g)_9Khzs>jbRkC@=V%mQ&@9lL=FdtDJJC zNLU1S2rnbDF$=z!uVaF-5te2G$uobVQ3s?0%nBtX$%XX#m?>v3Q(|A)D&{z0**|EL zFL1=;ndC-DT2n#Km?=WEJ0`3UA&O%kzFEQo+va7uKBAR$?U#vX0SE!Ure4-j zLySw3{{V0trX5W4EI#Ac^vbAPu{nd1gjckHe9CeaEyibpaMbQW`8qc&1LWp?J?SV`i`d8Hx$!`I1!{APv~C~uZwKjmjUm04F@cH zsfLZd<>h3d>M5%^{lLbD>mC;>AY}H@I35@58z_9TnbAkK3AZxf**l7m#o}a2$Hu5z)X{1#_na3z7=Z1FzjN@I zX#K`e!yRpsZyAY%ud^+VW*thJlzv3XeNJX?^NF?nIe`BFT|17L;F6J$D))AbQ z53JV^0R0Q$jA3lHii1|{e+hbRz)SN;zgl{miAM9{0a}<$H8*z*gU9leo0Pn?`}o)4 zPZug8uPiI#R_idw6){lDEbE|_Th0k|qi|uLaTZ*zMV0u895Rd{Dswlz-kGue_Z|?1 zKtuKuLLPVU(g{`fDd!_Dzc&lP_U{>v)3ydA(%cm@wSVMtTBEm$`D*hBxn0N4vU6Sj(%q3g_#28@%laCS3j(dyB zuhc38HfH<=;)%Z!`8bv4y-p^$n~t?H6mbjF9-&or=;kg;&>3Lh@{AG-@nTJ!G_|Ypj@yHy}xU|kg_?EDYYPD$2 zcFQx9R#9^oF0B6mQ9q&71nh{K-E|6uB$;^jpuFY%Mxqw#T7b7aO}va30ZZ;+gm*cV zJPu~pz$JkN=2)_dTS&_2%OoP(cV|oxPZFlvxJ%oY?_0&dpf8a#TuujWW$Ey~r8Wy) z%>hiOnVD}ec%RNGt=egv^u>0#6NIZP>QbpH1CxC~e#@A}nCy?|x0W@5mZ zdcQC{dsL-#X%oGTSKP3h&BbBpjH`zTZmD8+PNE6g7u;KIVIQe^d5$B+Gx;KG+_y_N zwprT)gP24UI%W%J8Qz{OQ;5A^Q$|fIV1GYw7wCZXp?NM&c8ob=nULiP~ z)YhT}B|MWRADBU@pom()`-a*fl;%+it`$taHb=+AS_ItWxqKysftbd0#IY_Rc%WP$ zd`v&~FS+zVUMz#e;-!};yfG6a72OGR#=K4{swxo16BI-)8kZYtOH;}95Cf}yp?7qO z=92UnWhTVZ?DG7BH5C}5T$sq1hM8=bvz1|!ts5va#;v?plj0T-AC zqEYa{YQXrGb|%6MNd}0?jWb2fw98) zK`LbkXc<(#Wzq90vWuJX5(Y1}23x;#D$V|(D#eSbSaZ&%%nh4h0=2{pD-MVoV^AIT ze-MBAmq6Sz29R3%=L zjc4%*llvu^Gxt1j_{QKnpL9NAW(?p%l4FBYlPN)CaiHTcJ??0Xt8P;RYlvlBMlnMQ z=2%IPgv2?-&UC@`ADpoYUzm^OELIs)XQ`@REIumaxKuFp8nL;4ied;RZ4l7b`RWJ; z1)fry0))J+dW0HZP^gNac9fHd<8Qdx8zR8wfOwc%RvZZY1INjO+zjepiH1^Y6vsB* zN@B8OltXs>!)#18O5D9HW%?rIz{YV3%AR|fGIuOUR!~V} z^ACh@9y1e!s%_N%xt1GlP(8p(<&?pS7%y7JOH7d3jW;taFz2amWej3Fbr(*eG;|jk zOWg-dw!+{%F(yfPYZ|LWc_xyb+B#T8zv3P1Jdh1b=CYQexVmR;zNHsd>Y}a%#jS*T zgH3C=@XW$Fc!|y{)S;zA98KK50W5KoH!qI)^AqD6Ox<)tr{kVq+C@&kxl4!YU$^v6 zFUvbE?SX6YKn@R#RNN77s}I+%|6mkjVC z8>*}S0EmvFlrNa5dyaUKw-7SJGK9`~l$E-Ffi66Gk2wBkxiOg-T|oxWVbk`NR5S({ zopTewKXY1Ghk6{vElIV!k(U6CrY88->-7~Gby<6!L{ET(#XHuQQwrj2o=6f~M zFjfQ1q-wZk1Yf(DUJjVAaKFW~B~?$)?pfi-6&qpo0JW#8il;W5I_%>Z4BtS zTK6;u#hn^W*5*HhxIGT$rONrakAWYH-k+#E1IyxUoU@784S7mF&2&b~Y)i)s2u)vy zP)DG|Kv$E5j!YQY^KywR3v(0;Me~I~+TdiD$BQO6DUo*%*K*(na(I*lx#DvjOYU35 zL?017Co?f7yu~ylUSALthfS`frO4-~AyuQcS=&Z_`j&UBva4TSqOHea&U&l)|14{p=>0lT;{J= zAGBw$ad}(y4%&$E8@yBdmPagAM&N)8<}!^Y$e4_Q1g#MuynsK&|okm9euZ z2Zh;X`hmH}<&A6uFfSVD%MeC{jA^ z=eeo-KpDilt|`|rX@Qcm65Ino=*6ua95a@Ild@L9vF=#YiNNYMDMV|d=3Ym+g0yo# z1f^F{Yo-i4sNl&L7>rTBsbnlWBl2Va0K-d}cCnvGnF^!kXp-*c?3OBI+J7 zkU46gR`Dwm+@xG=m-I_2W(BZ&mR6-Mx`N9VTdLN(hAXQo{v~x*$mIALl&^;oCGHi0 z>8WvLJ+nIkYG7?$zGW)oPoiYHEiV(syRSb}z)#{@fq9F>QCMD6nU#fAsamc$n1HuZ z;?-kzRP$K0XmK*r1KL-pDH)5Og=2}8r8$G1WiTFDoWhVn1i|=~Z?TBDkYb8g6770A zi}p1NEjsZmMZ1axn>vRAf?L1mS?K0kaUwhEG&_v4g=gAOl!mBQ4_Ky8|;IK z%J_=na)Bet4;>3%JVkYXn@Fj$*2}qNhiqW0WxnQ1vm~pALrFlZAnJhW*NEi4C$}xl z{YrN$vG^yaD&|-U*-s3_12D(vxsX+3Hlo}vBEC_Jv(!@KlpAggzTGzIXNug@{Y14iEr+Rreap@5ndSUIALC!+MumR_%2x|gB^iBmaSx781|yXAbVE_P0^wn)e#Q-O+M9Yo0n5qztqi*Ui+L3WQ>`Omi&alP%_b3)Z3@r2Op^F>B^Fp znC&9lD?8lBf&-i}>kkMo5SSx{!dZGU#Iv`FiI_oIsA*Yc+dGwXW}ArL4rN9ysB>D5 zd^ne?Tk3H_+`!nL6LGeg&Nc8`2Me{#fZay^qURfI+-(=)HCpL zJ){KGRu17Sj6h2gE3?%85hQ zz%SgRna9A>;JLUJyRboG2M=U$l*V5Wc0ksLnAqn&WzrG1 zSeI=O+^to-(iuUR%9R3CubP5>K7I_q0~?lVyN8U5ss%0;M##SGql(2h6RPVPj+(G5 z7b=Rii0+|P0mmJ-M|3D{kj%(LvcOv~KA_puqaA7vy|($5F$LAjarH3Yh*lU&f|6of z0Yp;PnBb2|e)4EC&Ce8S)FYi)nJS5oQ<&5O%%cpe-9sltbsBf@?Q*kt<=n-rz*t;E zi#~HV&+WOUUr@Rv_nDLXlq^n!cAFK9!#7a6+6!?Sf7b&mZ-|$e4-FecNXXo=I${3+ zE@A|z5QD;3E8r@d+$j!T38W!fmLS92SU}g4+||mAR{^z;<=tf>af@dtmj%tj_-3wG z@6KYBPTB0MKcuMD%Ny+^v2g*KQ_IDjVt`qW1`(HDnd?^W0X*QdLWW zMQ04Qeo2X<5>y+4q-Kg>XKYi5@0sBTE!r63Ft@}Sz;ZQHa=zskB1Hmv3yZ{|Wk|c^ zHB$KmTFN}J3wD=|CGYrwje1~?1N@*ZEMt(>U&TT2v+;=z2%Fo(OyfX)qFqXJGIKLV zT8J9dPQ*9Fa#$c{_K>n8(xrh|_Jd@$vyuhxP&BzlsExAMFp+@Dt5NCm2Sw|+iI%75QGvU-Vb|hxFgk@*s!FO+ zx*OEaOsFI8&D#L6k;ySR;$HIyJ;9tsU6XBF+^oEv_Z_aYEmz-U!w?krtV&roP{D5{jv zxRXZP3AG|f*=>8o1wKgmB@`>xMpSmFa;u!jlQ`s*&OJOwA)I>*h`!uQ;1B7Fl7Kic zaZQkGEL6@e2N~R@ZWjZeiu#9=RBSKYbGWUqsZ|>M#cS8$Ff^>(QvN}%>H`r}6*6ZW zVvQr3H1;rSfmilRD*`#Z4@J$omeJ#;ZVZNM4oZ~0&R0^!LxN}1*%rb4CY0A{1n!@h z(zQK^y4=MS1d-_6#2m9xw7)$~68nscR@{9p*k(S*;Flvmw?o&PBB*zg}JF?}UwS}Ok%oWSd=4rtiB30bJ zYq+WdL$)2JM3q$2F-LF~8-#|nE)8hvTG-|%@O?x@s3}|2I3|CD=+D4DB~dFd=7(6B zD<&ibW`}b1L(rkXA=+=5;oyJSj4N)*Z5C_w0h_ovBis%6vj=LY<_gP*E*rRmQ3k>> zoXTE=tQSknw@Cy9^rEDzJ4aX`MRVp_>>tAdqSsIYh&=)#w#RT7=G#A?va?A>L(smu)|} zeF68}N^H?kQA+p(GH69@)N>q4H!7uDI2xJJUs1;rq0Bapxou;vBbwa4(%sZ2Bl8r? zexi-0`6e47Rdw|=>RmB)3#+fVmfNZ~8aG46W^CM-2Aa0>a44932sAy^O`ssIjfB-k zZ;6=Ks0Kq0tvm;D;N@ALq!){Xt$9-uQdv7e{g8uyYT`7$4948=WGC_LsbF@s7puPu z{px0do>T{u;=oNl9Q!4y4KLte981NmNtQcP!*LYAbX;`RuxU$iC=<+bgckEM2x$z% znTRc_?mxyK%`y5zW5lgPjZ45vTdz>qr!MXdsZp=}%VOI$TltiCImTkh#V;C(Ont=b zQF3te3ZK?`2LT(%%pz)1701TggQK3K#8b*Op&ZPqYKg5(F;{#;5}z<|m2!lm8MVU} zu&&dX1ev|{HZAP#9Pun+x(VC%C5->I+!)2(S6!_<*b&>i*{Ou7nDn`olWR3ch)pZ?aYt{K8q7tZgn+XgBjQ zFBK}YWmQX4DCPmtnlIE8aQq)<;(oLC!x<$+G2x4YfO^lWxwQ3GbUGcq{pY?VW1bptLPMuh5S@u^yiHN-G+4s47V zDN>6V9YJdK81Dm^ZSWw*Arj@+qhBq<3=jAS)_2-q*qd8VQ#lR1%QWIv)q_WK1M=|z z>0^1AR6gLe%&t$46rWVIu3q5niWL$wNHXAYnM5iusRsPQtPE2|4i;q3FlF}*{X+p> zm}D>?lnCT9hD$#TwMLhpQiR=#eV!o>(@i{~vk715n4+PK?1NU9)J{PAOqX8bwpDj^ z7tZKMK)%?c!}kY6JR^j+nUf?^(_(@HYf_s6F{l|Uo+VV)?O^J6sfjy`M z1w?ixB2d#?Noum3GKw=QzxH6S+yIXORW2)aA1}n=;DMWm<~8COq^v{xnqoIA5mk|S zH5U@&Qvi9FXxxntJ0MI!aZ~0Qf1&`cOSUM(@s`271a5!LlR$@!#v~LT(Wwmtn)Of7cAQx+1I+>11b<&7( zL*&gA&*w0M>Y!jK`I!!Kx?ya*DmkEDGb>fQ+;sLqI`h~Cw3!LbipcTvlDyllhtX~4{i)zS(M%iYGYd1$xxsnBW zjQ|$q075%W2BJ9`(Pmt%gq+c)zY#>k+_^Y$dW_)Pin*57x;HW)C192+P5x!D%Xxb`tT8ZdN?^3`4=@Y$Ul9iD_4u1qb1Rmii?f zb185SGyb?X^Sm%nxQ_fciNN1YY6`^G?i2$VSg;zyE;hHGCIm44(Rn|?mXmkfMvZq2 znobv#vkHX4xI!#@X)Nd!k;AEA8)$TilQkTwGNtfy1jD|DwJ80ubD4lJrye20@MqjY zXrP?;DvV6-!AYon-ORI83WMJ~WA+c?1R;^km;ZYlG~@?6PM zu9%sQRu1K&&1=jG%b5K`10V{@!-YnW~7RwbJ*C`IR~i?nJ%fiTn< zf>2yJNH?RzM>YQd6OfoH{qX?Wlybztqz>7_){0r{a`o_z zz4EKgR&S)6=pB@sXk@<7e6QVI2CLdYE&#lVc|1sGk`!<#kDQq_Za}cLMQcahmNTfl zAm`1wUpvg>thn|OK#B<0=R6qo378)3imoc_H6Tkb9_Socy{wKqqru~kX zZfyyPJmE*OC`7Y;GhWHJ_bEp!Yot7TXD7UKg-@D=oXSwaU{h1~#2s$%HaR4@*?X`1 zL8nVboQ(CGqZ>Oi{x`K{?p6KhaNWP{6~@+o!n=iY+D!Jdv2^k>fqdt`?J=^%VYWK) zuipc$hrw0dccSQH96LEF1QBPnRea9n*MMg8p6U%*2(123!XC>LrswHKo|rd1u1{Kw0K zbek<@hOKN&iga0wuSY7ptdN-`Ij7!F)qE73%*B&5+0qea(++3XeWbHGJa_X(QsEkx z=DGl`xxyF3dtD@+g=YJJ{Tg_wAZ0}9T(p7htJwL3M}O1F6H3;h7VYRECteVF@|wHP zAj;-Za{{<30wy`_{SU|L_1sGKmlG$fFjoHf3hPODo}ZfoMJvmaVa>w9R$)P)t|8Ewv1^{yvnxb zLauytBP-a?M0)2D0z~vGb^3M9bNi4U_mw{Wp0j}Gl6JM#BO<=s+9vQ}Kl3v1Dh4;_ zJXF~DOh@G=awZz-kbBmtqpE>92 z>2y$Ws?tu+ht}@Rv}aLSL)Y|IwZu>38u1)l zljid5BI{m-JnQPc{#H?+iaGwb@*hDp6;#X{kC(^*YqWNGwXjj_#qgVeuek5Pr{w@o zLSQV?!(*=XFThQ{`@5gyry5-?nlH5)R0Lp3wdb4t{jfzA<6F#_ zqz${(cxo=@1fyuHbN#|OXI_mMUD^2Q-?(E|y5whjVJYs!AAXHjO4Tv4zJ}pnyI*tb zBb-2$>_=C>Nd}# zOjs;8Zb#C<-?El72E<+c$Q}L2M)JkUCHwb+((@nBuI=Ven}r9b=x0>*D}=k)%2U{5 z#XVvUslTY_YGfXER!lh;%yqaF^Ugmxq7jfo_ct_fu@*5xU~3UU0>ccP_?re%us3b5 zP2Qdx1Qp^P>!dYJgx>k3a40Xp9~Vp+SMG7tToV563@!}g+1rZ$*U9!QV{KKXK=ej2 zx>vi;jp;*T-fem9cUN?In7Nx@KhKj#8PXfyH%=LQ)(dQiSZ!rfc&JsI0P!3NigJm* z9X48B?~M<7*_!G3eySoA@hAF9%d1AV#A7K?n9Vg0F&_h}8+93f@_5)Wtj8OITn?fY zma`PQ9+ZpZgyy6htPc`=S;0{7L*=mw7586&$pM=}K(kE*EWXzI?A2A}HAdU10p~eC zJ1OC1sy;@U>xd8sepluhcYF~M_)c)xKJSN&q3)xq$TN9izUDOu47k1znkKBenir80 z6x?3WrSk;6dODi>@rmcdwBV7wt=Lr`tzICi!m_uu##Cv9*W;ZC%+DKIM^)`I#fOy> z5qKb%xgsPszNe!UC1cZwaYw?J#^h$rDn3lkpd)({w^d7u5|-2?@tuYZ%X9u^Pgs)9 z7*~vcOH-!rNHunKLJDEbYg{&vK&}|VZ@~xB7p?vRup(`4qI^EyEZ?b;7}wd`cU!HP zBCnJ&*qf2|452fpaQK*lV6W?34-+5?KM{#8Nl3AyPTo{KR9Ah|BOgECc-y5|{f+CG zW_nO`)Ed!I`EhF7i)X__EKaiEtEu zFAs0j6Tav3;TzZS{I$?%wOqD>BTWi?`j)bCu_onTo)=0ny?watKKE>WW#;4Ru$$Jo z>3M+ZVsvhO+`p`)>0Bo5T4KZExA|^bOe?MGiq>-qkGch>ZrhQ@uKdo)_xs8a zN6Fiuq(%>4wJjsQ;hef>x{ໞW?vS{was$0HSJUI1rfzYQSA8pyT^j~$l&)I%{ zKdSvbO;V|A`VpO(q|#l^O(MdAygBV%RH+(I7gpuTDJ=UO)cKf|P|C6VP=(%lFvgWI zMtJl2IsD!4j4Q&tU3ZW&pL(FL=cB8QXZwFTEqxNXW_+8m!FB}s^jp^iV^wJ)Qz5=W z{a(tR^T#Ak^Jgz4IJd@6Edp^6tHr~lm%%yCrIqgbBYY{jxH~q>E^( z(h*{Ie)lvrE%KHsp`8~X(|m@p6qR&GYh7%n$kx0BSzC-Z{qlV$rMg_7!p_)n{uaOK ztSv&}%r_WG>|jb>P3MGpajB+&!qYif231n+7-CFE8n1ktEktVCY|Q4&HzD4#y_49# zxkqP^->Z}ASo7sWWkNS~@i&v%1U<@{(UE7ThOe_}%66OK4mA%d z;L5_EysNT)V4JjoY`!)U(^}T4v~3;JpEC3F2De}5{j_J~hO6B{SS-*Q06hdb$Um-H zDk$yD_`|hgO9P7piK_C-+gUR$j6u1eXiZ$BXxI)tbntAwvnxZiaTvrcQ18N1LU$7| zZyPioNzC0*`>ZLs`vJXZtjf=8l)$5`Q3?gwB9e~}y(G@w_S@bv_Xxqs9Ajr3pLm-r zyMEW4G=+TJ{1ycSO?10(i5W8)vdLv*1+TysQh_c{&fg3dP3-Eszavlhx}`M}j*~9R z7qMZI;bZmyRZb>vjVH0;_dZXpAKI~vT~RD=^+lP4j+}hxl4XMwPrJ*0&c+Fn?JEw$ zX(#C*-(a#;dWnhBCsusp^`gewbugc z-`^<=#kuxqfQT32g7lG6`(M162HeBTI0K#m6oKQeeyt~2e`-mKUtLoUug`DhoXX5p zQuE%wG@Gg*O~QUA3^DBb^e(#^`79e{rzt6 ze8EqX4C(6&v9mF*?#!J1+NLyVMhkPAHu)}mdT^_TZkJ^MGjo@ymru`$(We91TbbqW z^+fNn{i~5^@hG2F%KMWAY4z$*=;Mgh>mLmV^aJf8p=R$*m2T6$`1JtU_j~L0;r-2% zuyAFeWk$*<-s4wA^&4n&(VZ6ddsXK@gMqj1k;}7BEkEflJHN}kdt4FPqRCR~87%(` zbBUqt0`;ZFqE1EcS{~QWIWi8L=(9?hU7zunKiga_h$#G=RoZ8H#tzZzoNc6gfDbi9 z!BtGgD-IaGSx|lPiI0^w=dl^&2(|6DdyEr}>&G}pDSx=E7x-7sn)y0_focDPgtTQ_ zrDbDpJ?S$v$ZGAMQx)^t>O68VT_%^)dH#KQ)!ff{wI3@#Fi79eVgYxuPh}L)o4PIj z1#qg&gXAXX9ZnWkKXJJ+w}UtSVQXKRVUaxi=h@R*AO1f6Z$+>szjm!M<9i=D@z3JFh)Z-^Gh}XMjsyidQQp z`Q)gu!Wnz5vAm>@45J6%NazP&RJN*OlmRy}Ll3?uu53|0v8Iy(w-)_Cyz*yA1rD$c8EYkD*Fzts-`S&Xre1;$5 ze>yjM?o5QMh7u_39rl9xA*CidYyITAjCEyxEnUWD?&Q|6gwh|58!SYlHq+-HeFo2t zK0;VtrS)Y_7jU>YoBPe_^OQ(A#)dWtM{q&qU1Ni z4VD};wZu#6ubjQuIHLcfW>FC!v(rd?KgvD91J@o>IgRxX zu-yGzieRdu-sMsu zzgpeSk=M-+kO_fbkc#8pPOMuRZ+dk9L0s#hQOSIaLp1k1$A@Zs|FhMcXjl^Bkyz5T zb6xRixrK}VFXcb8EfyUvri#g#qx1JZxqW%ud4BD!ww7u#^SbfY6lca?fTJ9rwmRrJq63f!-ID|i@|9;DYIRS8dquNk-!WQm2T0)^NIVC4O**6$S5tDj))nj%u z0?Q-wR>g{gG;u5P?6vEHjC09u*rj|bm&$O5iOb_BYbu9gPfk3rPz$2%;P=3<&0Mv; z(Y0AVY-OiXj9ikBqiFwuAH97rK+qRu`AzQGr|bL+2(|oReL64{;0r%Non3d1-Zd<% zsc(D})f$<#*qOLyP{OZ*eOk@masjn(d*8+U^P%JWj@zKt<-Y))w^#4AW=ljLYH*Ak zP#Y${8v~8Z&b*|sO=-sYk=WTUwQI~>bIt1&g%Osz^Ao_``|9_9W|eV=tginBSaVr3 z^>4F^Nl5@(Hb)=MBtngtb^9`o}bQjn@*p@ykD&;-_%1xyi zgPxYyLSyf}D2OxbT#LT`ibZVyxnSK{*k0Nf9Y-i#8-GmRmg(}7p0Fyb7ukk$l3PMW zd1vn1vO1w}8YVt7R_!XS`pJKIlo;`7JD@y>kzsRIEZ%$ zVcIThhRcxH8NR#nKKq!IifS=%H~ZIylW5+B2hv+`s0t1z8AF!7dqKe z#id=lLPb6DP9nzdk0FEc%3lEBLLupAaTrA+QJmvHN9O<35&z!+P$UxBMHNNvC{R=q zb)(-m{*O8$@V~VDTSB zi|#58^+vG|ss?%WdP-Lade{!yaqX(AxdsP-wT#NL#?o1Zqorq8*KLrRO3N$gf}!uF zQDE9aVN67nKrkUfpHI9XKV4q#NjWfhs3Eu*N1yT zd#$deyT=OF;AIdi$z*9h-4H}I#|@?}`U|i@4yDtggI3Y}j^o(I>RhtyQo3H#*TEph z%S^E6Y;BQu1N4k%yPe+qW}QZ=)o%naePgsCki}g*h6iQvdvO&ts~c8m?dNq<47OUH z!@#?Q#X_}-vePynRdS}a&|m>(km?a`wJTH2MK29S=&>54YIbxzft3ux5Z6L79lO1n zYu9s|Bg)cIf4+pu9pXUZc&7Jh$o@IhVADF27{1Bpid?h1j)ltbMEpiqLQv z!l1`(9ueNfr?5U%O%%Zz`*0b|fj}RL_OoQkqLd%dO2L zdV-McD7OZ-Alw{PDzq z)yCCL0kqzFQzpYD4sjoeuiG(1Fj8Um4ig8v#Cc}qd!d8%X%HwMd|FB#BhO0~Zrol^ zCVY*fPb_Gbd2yZ*q~*iChX{vjc#O}r`;itNhG%YdxvsmggB_NO_L1}Lh*=MWdr~A} z5U=4C9AT#!!nxtHmlo2)+duBH)9d6Jd!XS89Z*-LJ-B#BThbl40^ESMCCrlPk>)3f zg{nbPR=MdDW171f7$q)dSD`&kp)<7J$2@=4^fp2S$DH>s2kw~g3~{>}jR@hi0^iu` znbh0_+QxO{UqE$`P+z{r05}k2XR?PPG(RZ}Uqy-?4bg7KW)J&>Y#a)ZPJ=SrynR@J zKNOm7pH944UGKcT-lMH^5+lYjsW@Q%flwfa){yJtUyZG4hqDlzRWZc(iV@z~9m^|A zx8ru`ObcA@QOzgf`F$bS6_0h-xTXxV@Kl_?`}pW#_7Ex5%E%RHn!=?D5g!mcVu7-j z2<6#V{NTQ2v?%l@9&DE9UbO2SyOKpl+1YG!bVNmGps52`iBeehfcNAgtq?zRDsQm zu65)HV^6(-Jugj#J+U4mHRxa}vS&kTVQ#yrM{E}}A4@aXoEnxVpuD5vjAeKB-#kg> z-`{1)$J;5#D%q_sFLuv+X}%nV z^CE9M$x`m$LKfu7ej&FHk+)G^Hl2g@JcFQ$=XH7cT(3PCGFh#I*hihiN_wA%ah|8% zU+?z!)c4BA6f2#_Zn9w`)}7qC-k{$D_YU_;oO)lCqZ@!&6jauBKM;Q7WW(m`FhWnbs(w+fYPxe@(StrW!; z=`)Y=hQvL5VB$w~Ha>uB*3QnadW-2_9U`^xDwW{<2_~h%CG#A?_j}*(Y2krCRQ_mk zbkh9=#PD!~pR3z_eAes0?K)vTT5S^jqS%H-b+S=hc z6ZF1WGP-jlAWRpY+DiG(F>&GXKMWSAnZzF@sS_lKa`n$0R?{`No7CsE6e;Nq zmAk08`s=pEG*lr_x?S7lcs7#Jr?}axAQE?}at<|UiT#)Bl4s{Z=RTPb45zGlqp*@VzCy* z3(I^(d0Bq}hSHhf?j;I`r%+cn5z+JdA;|KNT`716y5z-@aHNnF>Lfu)=VI6;W1%Zj zMw_cU0!ra4;w4z*C<^aeNNP$b>SGf@sw!_f(68q3FPoNZtrQz&tWdw&&(?&YZf3|D zaPgVepYaK!fXgdRPDX{<=NvfP$=P1lf{_wt`_mTR&nD+6Ad+HxZT3P|BuTxC6m4c% z_Kn9plZKZbPwd&;O9kTwQSM5D;llhwFK-arUv$|o2|(Q!?9wDdi0va!#FaEE68ju=k<;^;3RJ<*$l3>YDJw5x=# zD36sbn%SLDlpLHH_i#0kA-TG>Ij^>H7%+JE^l>rl=jJ&~>W>V}GI>I+M!`!;r0asYz9uK|NMF zT`xAXw+fqUMhBvh<$r%pWxoRzxM6ScE%G9Hz+27KGxLOExdetGOi;Mv0qiN<@ECHe zZ};A@YAR1S`^8a1>T4z1xRSv3e&mU}dxq*kmqZDfPs-o<2!2DWBhj<6N_ok9Svwjl z;=0K1*Q4&Z3VJ%~1C}D-NnKWwiz32z-3Ox-o&96*iyf%&n1b5+G73v*ypRS*?aEjHEk`(vPjxJ0KoS1T`TZv&t-yO~5F&u^&V4HZh-QumOeLM?{T}3v>rZ|er)g@|R+J7&M`a+GSNa%{p zfsrOvQ8wDGHZ_|+a#>ZsTo?A2v9yKpz3K%gsiffCPR2$a*Q}v}-holsMd*s_%J^(b zAG&f;C^$6`^xXzb)k)K}(d|+Z{@1%Ak*$adsx-uc^$%VKx_?9^h-zsZB5EGoR zKxc!qp5Lg!4_&O5>HZ|q}!L$p~T*kT8yWcuC*zecE*bX7>g!qo+E>~SbM zeLRAggP};TI_&&RFmc0gH_FnPqc|mde60OBFa!5dUuB!4W8s)!ZR`(kDq5w%*?Q#e z$E_^>pfP?_P^c-oDm#K0%D(v*5PQg|F%311os6O_!FGv-$9A%M9XYb4rC$o8J(9J= zv@N{`opv%$kR77mnU#dHG9;(QZLRgV4Xu{dMhd-VOJqwnLj9!t87eb;lzAsuRX(l? z*JkRYc#@WuRycR5i*UUWEKWO0{tO~uv2p6{+Uc2U)(VNd?b9Ys*$<-bVa)X$oSSEg ze~=qij?=SmmGOpgYO-;ZGPt2_L0Fns6^!u@*!U%bmxKO62oe*usgM!ey1yB^b%5528r z0N_mRMVDoL=N@Y-B@XqGDnw?#3<=X(E{ zn>{6eSEGny!H1sram~@kHwi8xS8LC@hlf8Gv(k=VEUQH}0o&w~A((Z3dK;Fl6sv$; z4K(*v`y3h#q#9u-0^y^I=O)6kavZ}3?!dAXir*0pvUX+Mu@Qd(+&++@E@PL8)t@+? zn)K7Y&x)}K*3lgH9p}RMiyX%pzybh?8w$n-n$Zk1t^k1xe7%#P9Ny#KvGFB|1piaK zfT?vDx@5oO#-BdUBLVJBI6+HqZqGYH<#qhT);%w9Ep@LW576U$2|+-r0#}0JY&c+! zY_sElnkvL2VauQ9B%O%uQ|75-D;X_2fg1elqjo#AtlIGdHBo&m_EdO7P!yI8XFE^F zo2el1=BoIoSmUWglpQ4aWw2@xFjty3CmXsyHXnDvG_?_yuDRFCdeCCDDcdOE)Ge`c z#UfBE#aTrP9?Y@9IX?K2EJvO%F1rxbS8O?s9wnF zZoh2D3bx)_2R5zQNy*S8ndTSQpgVjtwFl8PAkU<`KSH&|dw1Cc$X#${wnreMM+eTq zps-1*Ifgh(pBW$h@<4ZhEu|i>)YI$4na{TW`b^V19pHJ`mHQ}SG}l!sID%0gC+`qJ zG(>_ORdQ0@1C~?R=?$oD-Vtkl`q+_!*89(bS47Fzn~rW!($KuaLb=64fcj_Nb68#v zbJICG5FRQ|v zDrjsP*D})H+s6cT!8L`9Q(wko=eJXdmR%+8cSqxpSmky@hmh#Ld;%N5iPf&Qm=B$U zOlwkDc%LEt;TF35p?fUEXT!_pYeRI0(6{6&FW1_0^JlktpD|2eB7^AIr zS*3r}8@&qBlI*jpgpYR*WcjP*5nGX|zXIHkJ+x{bZ!5swqfP`8GF_R^m6g8mwCseJ z1cY=^b4?6zb8~Z1DwtYIl+qk;9uFS>ioU5KB7bTODrtZe6ZojSqGCajjIKyW*7w7x0P7j&!2^6-L&sfizagUuoXahAFT;Tu zUvN-Z;x>wFYsncBiR}rLAoKtwto9)5)B6q3aG-F);)j*__q`xKQ5=8e78nlH7>lAYR1$0Nf)L2Eb@*JijfMIgm zTW?WY?m2QX*q@&1Ioo@OCG-QFEX~Ysvc88ne`zxhbviG0`l%szRJbcT-JA2fVMGl2 zBvs40DU}Ibv^i9O8m6S-J$CdG*O5AzNE_NL<}0~=er?Jk%(5-_g!jBKL5ndbD~_ZT z?e`tXFqEdpkDn63H@@WIqHGf;M7f%Y|@50+17ISO%b#0@8GYgD%uDU_kSf zk|N{5HI>!-)tgHq`9b>%d7gDOao8Ua`UX+kap7;9!ff zqtORJ0|SHZD;}gJGOK;CRj{_Yed>Y|-ZYW{K*ocJ3qi#z@Yy?_#(M@rsu8CDt>*UQ zM#{S0^NFO=_pR8|HZN)>|1lRSUo2|QT!u%a>-CC?p1Mt?l`sn%FmYf{(3?~;v-U*8 z$OIyWji9E(Q%1376KP6oMCX#(8nsR1{{omUl`pw2eVtVt$opONGQdzS;aMN*;~Reg zumVkR*P+aLUgY$X<7q-<@%?6$oiXNEyBGA{`itA7bJer?cm!puQ4-AfIQj)|gcr9@ zI0*rU#mC3R$EW=F8z3dD{tLq_M@Lv34Q)23h*cK_-4*-4&|Sd)AKlgUZruAHaQDi8 z;I2(RRfD?@{!Y$$yzIh1z4MO2lhDQ2 z0t7%V^2(;`VQhkDX2f1|j5yA_W1o;4^zQXM!?BfnBDTOqImsjyl&vFyYn0Pewv@u{{%#f`jRW1ZdCR`t)0;;h% z^c>i(@p=UhZXC|xs@w+|uZGHQIRdFjMO!>18)E01V_}NS2RqZVbw9z zNb%UYlRgJTP5@4?SjI`oB*WT!8N~02!RE`535c#B)4b!Itw2|AaT5F&Y;y?~l0X{P zUd*;Sxn2PLnYP1xFb)|%jP1UZDE?+!lkrd`u=M!%0xS34r+HNlf^osxha1it?MkDfGYLCQkoVf7kHqc-85n;l;~c(xF(-h! z`(T~zKsADXAnrIPF>NqIlNH4up}iM4sb8E!dTY*lQyR<^TD+2Bq0-_!q;5Lfc#*^U zewxqkNW5{2f`S*k2nvyRrzrcC`Oy0=`t&Y&P|D4gCEFM?Vc*0!(5%@zqKE9C?q87y z&W|@_IN-a?`}xQB@ZSz64!HiJwX+bJ_js#4nt2B)EFlX|MlqB26((I_n?3qc|M0)npBXc{5 z#vq_eq+@W^;lycN-)wz2X;i4Q)DlM>M3^;}%TLGa82%x`maA<*#2^k>qeZ5cerKcoIER|0Z3yoCz^Pnf#KK z`UC-%ZJIQ&iOAsR-FkiGXW(Vr{QOLaCrCJVoz3#`Vo@&EAMt&-dnV}=TyTUiKX@`5 zICO^Ra}}!moo|d{0yfoIX(Q#f8c=hta}`I!OXf_IYF|&5azBcQe6L zh=A|GcJOXLW%CJ+4R{qvoX07aAFQuJ(lRJe-wO`S4Qn`~r5c*1nJ8pM$`M&|Ca~L0(U~(Mp;}6R0Yir+80|=zAc0#F zqRmC-UiXeP+Vb6*y7xW0q^wE4q=Tcqo9jBUGy+9LJh=od3_c(IxnHO_RVh+byhX?& zDCc}`_wuaCn?2ZGgW#mxO&!Hynae`vDDYushIs7KC7%u^J&>%U*1f`l+ArB24^qB* zCpXf$XaDuFUVBC#cG3rAm_8mT^x%uzRJBFz9duVv!~x!C6t(zscJwPbF#0dRH8x@f zoxo4~LL~#h6iSx2QI2)x8@2J6;e!>zzEP<5=&n9<21ClE=0jnGsI=8N{jW9?xo;eh zz{m_b13vmEJN7xs^WO!HqzAyT67$0|G<+cJ%BdLJ7X51Bi%1G^RmKw&+IWdMqd#?I zCV|laW5qOVw!1(CM*9I=ngC+eJ3m{Iwmb6ML!%J_ zL8K+sA#*%cBuZz2c?7sFiq7+IfOLhPhspD8lGVdHOowv#(IqDdni;N%SoNIxm_2ub zvD^tjfKQs9GA1~fZn$T3c7CMiua?DTu1iE`AJC^ga3L3u#bvq*!S;1FUmHmuJgv41@MkUfYS&PL zzG;q4CPjsdHmLjD4N%zBV~wAmdtB{s~3j5-$27xxAIJ&hv@zSugTNtzUNFP%40 z2uAD+jA9q^L1Y5 zf`Pqj`;n^fV9mfpf@q>7nq@ihekIWZMT|iDr?2KPTJ&TK?g;2mim%wa5Rc{WZEyh&vw4cw(I3Aw#Cd~6(&x9Tp9;|TzYQ|i~iqQtZ;#Z&^+ zQ0!JDFAB7c+D8`*oI@>5j+%qCld?mL>w}wAajJIfo@R|VAlhErtmQh6gH?S5lK0l# zro1zL7t<7OFpu$NSc>a1tNT|*6cIic7$(0289aEz=Q=}D=&k(fPH(Rh9h9vkNRc7~ z>8VS8wuv%THVRqk6&({Dc=)qHL{mcN3B;m?nw<#~$ya>mVq*8o>qsrv5}rwD#=6_GYy+Hqo+lfnTspHckxRrLDvS zLlHbsJ#XbtWdqz}myC@sUSZ8v8gDv<#SEXu&vrDno}JI~+!L%#SFv*L+}s(4Z5v-Z}8?bO9{5kSQy#l3Xqu!a{xX6Gl zcR)~sFWZ}BVU#uzA)3F{qiVj$I0K*#hrq+_IM0h(AT^pwU+pu9IzPXvf)+rosh=-7 zB0j(gUS49+{`Kuf@5r;4k<9RwbBgJ^N2RO^Ew17AOt> zZI`RM4^o86mkd}oq%K$^k#dKPDzR#`2j|1>Lc@U{UZmSMujnKYFD&`s^!O|IZ94B; z#X~-_@5wZpS)?D?j)Ha+vx~I$GGPh;5kEnavV+iX+%RW;Su!^CZA|1l6YIW~P*P`6 zn`c}_=u$D|@d$@Y(56j~%dX_ab{iDIwaPJf<9>VUcKV_G)ZkVi<}eCP;}%S5+iaD0 zd`FCq*1S1_gqN%lgSfvN4;WGMxjufOEe#YAdcsAOGDn|@Q+rs9yA3~7=~P95CpmSM z+yg=miB(G_!4dqET1P-9&6Go6;=SF#81VF+FjO_lpLS=^ zeb!kAa?TWl1Cq$9YDU_JxtlXOh>KN(G0PA4hEy~!hlKn#@|xU$@uY@O zxG)PULXZIUX$}l~;naHQEb9hl4C$Q4T&#)9L1-@{3nsgMJ@V1KrKf0Xq6PC4gnclsQowKsYl`?!2d9BJvA zm_VQF?3^%IsI|9179x*9$x0g|B~cAcyN)F>xS=3OWX@{)Q1TG3n91V9{B_IByT3n2 z7{||_&6R%;GVmfvH)z{-%ANFvph8wc$xRMTafIcP&~tra0F&s2P)UrFZJ5w+oVo+z zcbi=e-6gRDjuOr;FTzpl{Mb5!U%XZG3l<`{w|H!CoOhU>Y1jA0T&!lBDfJeSn$|&h zB>`of5s>X3-+R^i05u-Ju06oVKZZmi=cxC*OaIh1e)>#@B}GvADODl%jZRu3&q;bKT^A91>QJQSckaO8v(3Rbe zT$IW&*kwAf>JiFfJ3|$TvRV+rcgF@@@E-)=GTq)yvAo`s zk_|?6!OkJkFWB9>)!Q?+oNGJHJ-HU|MW&4%*d37ouG@~hHaz1ri6OdSEiX*NJTy@e|xOjE~v+Urz8^Z-puB1&gJz9`niuOED8Ng>G8Mgc;j0Hd2zU-&5; z1rgu7bjP@oMpE-TD~(Ys8rP-c$eI*7YjAgT#^;{4zu!7`zz5--6FKtTY->G;a&-I< zDBYkck?D5#muHzi@qhckA=3aCw%zwCN>G-Ww`;0xE0e~Z;tueG@ep9a6-SdVZesWNqg@46sSt%oDNuu!Pp zqIbXRl-s^=2^175*&Ma(oOu#uDJxI$GKk`9hB)2|P0=`JjX4n}aW&|2bt#P3Bh}y3s?yR*cHrp;EHw$2cqeF z1>%e&MZ`76{38$UX%({JKFFJGMR59Ed>J-B3+3h!zW9P4V&M|Xq^=6mwlCc>-Yi`4 zIHRUutbYM)l=3quERwc4itM7MBst%6u(R3m<-1{M=B7vAUw}OMYe=wk<(BZq)~0l9 zmAM5#ec4NZvj5ny^5?}=GP}%t=LfQ6iUX^3`gRePBG1|hNsmO1bscn=~wM>7spo9xz6#|pY0gX=mDO`3#)YTA+TI=s` zDCa#4@>1sI{}+_{;D7)8_nF)D{}HnmC`usrfZ3>e3cxD$za7T^8=?0OsOr_K;QS_61JOtrfa|HS}NEj`gYGmp>Gi z8lK+xOQ^gDQjRtC@FqA02p~Xy|p_ z8>2f8cE7(e7f}B0)+|Lvv466kPpCpStxcHowbklG>p@UlSHY8?k_=EzhY4TRpHTr1 zk#t`;UhxXKseVc-MYTEBo!qUx7;Gwd<6J)1Ty|^fCfghYAa1d}95ZJtb1D3}k7ay_ z&jj?f^=48J{YwvlE1vA7%e*RxEAz)+AC~5NY;bc$yQO<`nOrS6bGZ5i-I^|OU)L^@ z>*nJ}-wMBq5CWKJKT?bR&assBj@s@=mV)-!c5e8k#&_}}e&|-3So#M(DjSnhT|-W`40=b5Jk|NLZqFhx4)u2`tg3Fme2eb(uWmi*e$@3E9(K^ma`yXo_TcfrC+A7mPM!b7gsRtC2E$A0y>t5C7W zP!-C6D35#&NMe+=gsM{+n4aY;4N8m-d#3b_-+9!tBc>kr^c9sGW;UAZQ|+AeN+k~x z(fK|oU_^}k38i%OP;GNVmJ07FH{PD6@U`+DTje583{_6-x8EVd{%bh-Pv8gNxMxPz zz@LWs#csFwZO2gS_1L5s-U~B;)#}}eW(oe-nIQ>BDgegEyhpu-#%h$qvy-47Z`v!X zKAq?Pt&vy8Z=knf)#p{iv-Zv*SJtHZVfI(6?k?fczV<#dYIdu11F!oxd!L`|JjTrP z`HA&;|6qGJwE6E@s{_HOQ_t5S@LM;Am-)`%lNWD-AIX=}Wxx6KtW<67;Y!@8A^LsX zd=sqpx}UNMHTx`$^VI(fj6ie0 z9hL&l?sEhh{JhH=J#kYsm4x#eKu}y5S$M<6fnRc`fEQJPE&?+V98-^paD0q?x44f$ zvep=yeLHjjKYNvIv?jwZ?q7jb?YMu5YbmH=9tfF3Cn3Np2aOUiBThmf>}F&d};E*l?x}MQsn3x6Sf=z!3YB2eR+*ytd`z&xY8!}rD^`$ z%@I~nefyT@Lrs&?b$1HFD3?Fc8ZzED&QPN=s+isd*{Fpf*!D%-y10rcs6W*(1A1?zAIhcjzVB1yfV>Jt$f&Ai9qTw5-Ob2$Rb--$w$R5F?uhlqkGTyq>)sU<51 zQo-3Q#k>$bT88z!OQ)p^syV5Qmj)J>bo0#3Yiv;N22OzKf~ITei-Ki%frf@V&1(G1 zdxu-T82KZ3>&auc!~#Qw%ja6jDG)1G{GG?is+VoKZ6XArDD%R36kz&RRn>Jxnk!RmxHI=;>=_PFo&m?A>gCW< z%Ys=z5tCQC5zdmZP;sNDG|mU5f4IDI9Ys z%2*z(jKiAXeLTc0)3Tt3djjpR_TXlmm6zav4*5&PaS%CR$5jiXq<)Xo1VtJ_)@~wG zfmY@Y2F=BTyn9`qCjk&yr-*jaFm>iHIB1*&%DTj>D1q>248K@Lsgw{G2Z-4iZ7*o} zsEa|5mW`)!tF&!ZfeXmcjQsn60zqsw#!ad(FYSVcDWSW~3*AO{?O?O_GinXK*QyAH z%99OhzM;r?b2hq-3JMHU*2517EnkU41_O~$lucC%Ys7VJs;0V>lghd~)1IahjEgLK zc`>FwAuzH7qYt=308+%WrS4p7lLYO6_Xy>Ue&bE5QI(y7+8zmI2MT$4RnMfd9&T+)R!$^3~ zgUq)2W{>4|#&-G|Be+VwNEjli0{6sJEdZ*y9x5=-z`%9&`+y`+LrTF%;C`Q&Wv7~# z_o5kaW&Z%@1g|og3%7Eo)uV=^4ddt~rV{T(h7q=qYT~j1v^i3xb6~s1SzYK#DMV@t zTX7GFBDYe!OjVlnXoGNqg~`z{>@A^>s7O#?C0@?r=hrKR)N4&dYYDHrndfr*m;q}> zssW;xva;XiU#PNOSk$ZtbD`V##67)_2IZ>aeMH*U@ydP+%w^id!dsSQ=*sK^i&zR~ z@1*VPaDzxC)rEtq*FoebxyeT#AW)q>#o)ze;>_S5iDGbnGWYPPw9o-gLp3ro=~qG4 zdFm3LaZ`{T2BBEmpiLC|>SRG&EH$4~m>e&Ssq-xw+%aqGnTpQ29q$nt%$I_mVvj0N zH({ApxdODh^}obb+tPse$%$rGDOUM69b7aF{6WVfcq$$m3Z(3*|Z` zWu}A6pyncPOVb5)>R?sWIKKfBRD1@A-Kuf=kM%O~a0m7zwS{f4@AoRzUA&iWb1UVZ z3h-?En3M(0*~hX9dDvBVOdc|*Hg)~N!Uhd#xDKWE_#zH(%%ZpRoF8APM%+0V+do>B zF0nAQN31Aws+XuBRb3qLBU1xp&1uCe;TJ80AziKYQoTS{ z1qZ2-pW8~0LQxdkF$;J@HR3sf;cUIi=m1qg`-ClBs9uV-{-H-Q^)~bymjL;IRIRJu zsc7#Jld_-LEk`Uoe^0Uo0%^rQ$*Ti485qAdFk1D0h=!$u6^zwN4TM?kO_1!^(7x;$ zl7Mt*j0;lI9FBN0@LZe+w{XxKmIr>X61+va9>=4r%lfHY)j>}e;Q4_@1Xh>w^bl}2 z&Yu4OYWsld5{G6n^^S;a2|=;^a34IuQx8W4wm87(25Y~V9)Mct;s^{2X$Qs+mRW|k zXa)I~*3O2Xc>e%0iDWWVJI>#tQJ6B)@~l8E8*~``KdF-*UPrd*`JCL9SLVBhMoPtM zh^{`hgI{wo#5R_Aml)eMqsDnZ1SWKML4(Azu*s$;%eMajJxZgFW=i9!R?6`ex*wUY z?iPNdp$?Mr64N*Wz=sej5Bi6~u}CbcoHAw45tLT=;88)M0a)CA!4+dDb)V-WR#|w- z7AY}s5HAdVVpgiE>hUV2xvpmX>H%y5WIao7ssLItUVDd3RRX6l3St{;=tK&Ig}m`{ z?o)D~igs~uJEL+i-bnJ1dZ9I>0j_oBYcEpgX zcozVxQus0AfeWmg;&?1S7vc=f#7(`BzzbO4ncOd7D8+f-m{Wy;4fgi|)!?&^y}I`X z*ErZXFPLsGHo&&Ig^@yz-8t_5{XlP5RlnL-^h9V!X}*B?il}9Yr@Rwd*EU&i-BA>b zt3s;!f z1msa?#m28a(0QmIb%peLsNskK3kR4=8&L`E)y+7t;0njX_=L9>7t7QW5!j;BCi=`& zq;XN0?cWqdojmG8#1TqlFl%gMcbHkt0T?p9dRW{tl;Zu%fzo!1;EWf;jY}h- z;sYK~b8*BxVPw1WEb{qgGQs06-ZQvRDG(?s@8L zJ|#>iXn=5UR}vIz3a@d()>-8L0LX@bWGxoXCXoj(E5WUIEn@SJX+dpc5E#&M&Fmk^ z`0h0Ypl-N*?p*@T!$|%S^bia|`FZeWRVJ1>E_WKnhgjt1dB9bJ7@As@4EcUkf5^ov zS@_^T5YcgH%9=3bfE_L+XbrFKU)6?|k6$w*AvP}LKZwx_4&%V_c8ug}RA%&;b#b1L)`YipQe;tZXHeJ+V=sP{Ax(foie9 z{YH3p)4%Xpr~*J~K|<+6oD(ESvIj0=wNHS3_=bx93x1f+27q00jY8D8EB^olK%-Pq zG`|pP!LdM9nmt1Hvu59y)yqmk_yaJ2k}Oaw73yDA-MM5O{ZC9!;yQ~Mr&hFsEZ3N_UNHch)KK7nRw-6~p}Yr7qOYG5 zCjqeAZxErO#6RrRI*q7)2vL}^K|_G?6%d@Gt6W?WMl4~Z!(QW7ufuJt9dXcrdJxQ- zt;L(C;Q3=yq@lkU{8!sEF=;~ZTm0s1A!~up%oQub-DaUDf&3s>Fj_EY4B?2)!mIn0 zD~Xe-b2V?=U=SKJ(!^6I7(F1xzCos2az@dOf>s%;gzoe#zmJHd$<7*-&0Pb*Q392D zma>M>vwcB}Pb2hKsb(qyH-nyF=srrEeqa=m-4RGQg0tWI<|?7)t(}k%rK>lMW5#EH zsW#GgAD0Fi)2}2#fd_hezjBSj?)U0AH^%I`MZr_JKUfjy%m$i7&D-WMfTd9nhy-S1 z=A6v8Kus0X3Ox8I{{YqsjEfI&xrWp$%qVR*hoE-{SU%1=W<+tAuM6mk6EF&TxpZ4O zYS)_PXIdd>cj1UCc@|({EK5bRn3|{r{tz<7U0Ljg02$KbVPgte_Dej+fI|f;?~wHM z0ZUrYOs4?@?Upw70q`(ZdX&wIn_20%0gd2h1 zvSR)EjUeGfKgu;UJscLot|8Ut7=c)H2Q3o#EPycIGYh`H4~{*}n5nn1hQ_u>4JWyT z4d52l^x|U!Rbu)+%Z*gEZgOe*B>>9Q@F+gQ0AiAZD_B=QsmLIKtl^c6vA0}Se<=kF zmi35HPJ@_G*h+JmNLw!8LmGpt{3W@Gjracm#s>s%w}>oUE>DYuS5ale!IRW-L=GZh1#o81unRGkJ2g*RC@V|lE?{FqWOP_ z6KY{?q4>-KueT$_)M;GTE6;-d<n^?6_yXks}RiQ&3Vd`lGB zzY{f>@_fRdKyFIiol_89cwO4>>K72K{b5`#*ftLT021NpEIcpbHAXPhB-B{*;v20V zO9SJm#ei7zDwPuKwbSA~%!-5R9f4&UU)&ojF?GY={faorKGGj8d_fBBm)-vW%8JBtA7!vb$Xy*_i?pf^7ydx% z`DYu3>fcZb3LrfoHHZWNHMRj+A9{tQH*)U&ppAdz>>n|BHjj)!i*W&9e8KLhRsoH* zg4$>5D5_oCfb|y9egLKBX4^YBJU~lk=`7RVQcTW@CS%* z@ZCni0f$?@U40C87OiCd2lsONm#b8Hf4OZ!a+tUJhusahgzH9AYx<3HAQjW<9U5!` z^m^`6u7a-FMi_jM<;9Up$nej6$Caw;UAZN=rs@J=d0fFAgylbo9-!%D+bVFj`-+z4 z3BAR4#_E12AS|_KUZEzN9ypc^OM`LFwSC55TrO!NR&h@ZpswLXJohRCR|~+t>QqM4 zB-wv34Pxu6hyF_%PP=)|ZYvkMKQUGpU&;k)u3mJG{{Z-`7a4V^iai6Gl)E8zoE*(- zxxk#xlAOT|4uil))j(&;mWDQzUzJBpBDZyh4#f+6VZU+hf>f!}&!`AlG(P_TsEaQ2 z_=x`izzSkR7xYcQ8&9OK<_~oh6?VPMK-6D|1=E%~)FL%|K%(+T^o{m?#(_dCTD}n@ zgIs4&4hekYGL|hRL3dq3v}!MAan6={gkqmuL?}4O{Ki?9>!;k#Kyp>?R3S8G>MmBc z&@Y_AAe&hS<*&p9hL-#hP_P^=3O;izxl9XRO_5EYTOStGKICJ7?)i8$0o0~1U|%1xP+*ohooxjA!%5d^@&GoY5wjFt%V}E{{YypEK0i~-Chxo zFZ_mRtj}0L5bB``)qKk|DgZUMTgjJ*mn0yQb4r%e;%76CWm90$)Ip&KD$Fo>ECw*W z)V9Lev;KL2s;eBuDvDtiHXERh;S0bMnasRGHHof6EoVoca>CN& z4S$ystwS`!b*qyMwYzJB`Ia}=Lu8_hdzaXPpzdIONn+GY&Kth2KNExCZG!+gXuU%_ zG~SSB_XW`Fc2-}GNlVt_b(?^89MX@hL0MAv zaWMU`IzZYGhu9(`(h3y$>KGS7%rz~Z6Mg!NUeA-D)I|$wt*v?V#46og@%A{1FL)jk z!v02uTX%OE44Rr!TF*f}b3J)eM=BZhJ!aY*H1 zS8$ypF>!?15xY@JrP8b6EEKav0?fqDB}mdQUr=(i3T@94!`KyfQi&}X zGC$VIK~7t4>4f|-DN}vJ!>%A#ZX1V2kIrMXJcYXOPFpUoaWzn@e#F(BIv`v3xPxPj zYGH>mg_+8!*gjwZp<&6}iKPp+S^ zL4IwbvaU53pNPUUdyarpj-PNM_BD5*{eB~?3S$+1L-Pw#R|1dZ{K^y@k@79dhJvcd zbRz!N8Z>Zy607DtCdlrCdR((xpneEG;kR9xXCDbvAffWPR2_ce2v(_8)}CL9WoR}*m-;IgNwP8*_7Fr`HHODrRZ zwv7_b;pu8;V@Vxq4r&4rSBL^2En--Jy-TQCbU3(K7W~Xv!=9q?1<4H%eLy&@`;Qh^ zn2NT&^HR~h-&mIc)I8%pBJ5Y(SxQ>q`-3resT3u-^FB}f}DDSslZrQ zldq_yG+Ft{u{}e8RY(%_fF5Xro=By=TQDslGj*7R!DnMehD-o9p49T7Cbz+9uZ z#AYQGKMc#)wV9lM*l4S{MT$Pu4C8zVkhe49I)Xv@JeQU#EX3OYsb+yI4BU?1kTo8u zFbO~&(*TBq)|N_pme=zYio+XH!K`zpXo3mu^!~w5~TSp;^1F2T;v$FI-0uesHIl7gM-AlF&fQkPrJARUH>Yxj=Qu%`JXNg@TF?0YBWvFj}?o+x$Zd8EeF%6__mk zpbl~30BRt{%<4Bmcx6k=nOY4oXw(-4dxff#;vu^#v2$n(TbgCb>L>`V?Tk}Tgu*xY zglBxW0r)$c3<~0)HZQUb8s4rQKCV(dL{+UN*I0CtgOjJY-LXfg-0R!|EQ$?ZyP0h= z^86wh0BtMd68Hw%zi$&Tl+vTc-G1jBda`_C2;w@0wWbramTOsumD=tlUaG~f&L#R1 zt^jg*l?xO&8%UJg0`cz4rl91R$pccHg1ES9M`*k0>QkzzJG%ZM$6)d=1i6I`=w6D8 z4MV-?7x4&oH7`Z37{F*=4aJ=ysm-O#k*|VNLjrOT2cq7KOm`0|1MDq8b1g4o4ksWu<#3Mwgh<=|=Suu9$al zs@?SDitt}I5CptR4WMGu{{TB8by9(9A{FjR1C!iIUHJs~b1ot<+5xp47Yzmrd=~&n zQekXU=!St+W4PWlU{7!j2+gD8o?~|`D^7WOjrNXkucMfo%*?%7)OZ5+$|C7+bb5Q0 zqd@a`{!t;i`ySzpBA_=^aSDg-WIP=~>)hIHMY3GGg=p^8`iShhBNS|9&0s7SM>8qJ z4dUgFTZDe6ui0(R+#N&hY z3K1i_JAg!aBG^ot)?Q{VC`-PNaXWCMSIxIHgKSRtjzb8`XLFlq$`x;N=|)%p6_;!a zCZ6KKn4m2U5f=tHs2H$phDYdhO4u}Bh!Flso}O1^8Xtp*4iqp{QiZp8%tF&iqAHu> zxqylq;^J~987Lkms}%84g#dj@X>9WV(Rb<;Y}X?$bnz8G5iE(LuiR^@iY+h0s6vzv zf)?pjmeW}{iY-*(CE?C5akB<w@u&AH zNd5%;LWtv#cQ0bsMYnuQDhE%|feTdcNX8J_)kJgwVzF}~b%ctdhKDsmhui?VMQscb zt>(zJ#-V!SX3ue4(w`NUn`ABv-4WKyQy$=Tl+(CY(?I>AKU%bF&*lK-2<<_CIEH$@ zLNU-u?f(GS6AYQn@i1RbT|4=f#~-2+EL5@*#}(^|Vr5Dt+sv;T36R|^+Z~9+#cQ0G z*u*1Uar~J5O3jT};qeea5qXduY#i3KpTD`smlv-7W*efWo?S*z`(USUiGVqWAU!~+ z)cJ%hTGR2SO`qK;Y_VU%&n2HcNbyAC=@dVS2DtkQz#k5a6~2S{YFyt z-AwG3MTV&4SrlxA1wef28noGUE8h+D#MaTYtMI(n>Lh5dk;@Gic!z|?SGQLaqT_e# zi9}uJ8G;Oftr@9iDuxS{LQ&;>_cBWzG_OojgWyBq5vz*o$=qk4{7zx81(z2UU0SsS zLL>Ava=Is_4gu6q*b;Myg8>gR#b#>~wzbq0xo6D6QLSL|*G?emspWLG6iC@)1-%bi zmUT*vv^ILEa*e!+h!wby-a_EXOcQ6=^r-e^3ypctej&RaZ(?KS@|H zrt*K!F?FgmChrtawYh*bdER5?fV#4BAxd9T*Eu*M z0MId6h_hPm;h|`5pnzjeRhKrip%(V%w*)**oRXX9@ey(_b0KHqQs&;JDi*UIVA9HK zyN?Ui?iO278DL*IjWnJj8=?zrh7pnEVzEj&U>oa}`Ck zheHjHaTygnqfupy8kfvuD=!yiKM)-R*w^iH!?XxHMC+9$A~PrR~U5e0lRRTxp_G zKg?Bey}V8X?kyCEZmEp}lhkZQW4Ue@Erb_V%c|kxS8AgOB?0RY)%sWG?p2~F30y5nR4_4dN!|J6(MH9mP8FZ#i5j+ij%c#-`vo-Ysh=2~* zF18s=LzWZY3E39X2}W)DfV*f3Xr_*D0t2iJUt|yF^^>0vWnr8*pDf$4U_&*U#9o9! zw&5JQaRjR6ln;QRMj4bYHQH+b01Nd1rhFxST^-iNw-ywo|K7vt{2ME-w8gj6%uo^S0&z!&* z4eeOcEVsIqW$fcI6Zk=c?FB;Dwjw7{Y{0^W0Xddme8XET^%BGYh?nlkdsdbM>Hh%9 zX(S7fyhi)Nm+cr(qXYi0NmC>Za!SP;N4sKFD#C*NVz-DRb;DfOw_gxMl4PbhLeNLu z3>P{?#wD9I%%A~Z20DyvTg0o1GNPw7)V0E0k8z1`Lj<@`u3f;(qAt<#iPd5ip}2Gv z_bHZ3bdBP?OScegWqF9UzD|ZdWv7E=b-37z#<{<6{{U zXoRI6qSg$*6FZC4r#vN52L5BMD0i3^!F*XN6%oxuP|zutrMBHUh;8>911}^M!OEbj zdy%-&V1+SZz~JU6Sl4{S1WPeXa7#X};z$M#skuUzLn{{KDR;?=!Ju+zhQPkt9TeqPfsH&Lk z#3AWF-NZm+V4|a|{YK(nOKk38jJ!8pAlI@}LGHjiesSt@Kms{;5E9TsA~OUXUHrl~ zxU!R|8FHF?6_2ThLmR4e^whEt4Hv;tP}8ml$^1$WNlv3EQsRib2Bo&+5#acQQrftM zw^M+WEDh>z2jW_e5i=W-(|b1>rNAaJjC@oXo1^#wexZ+|4PqZlK|>$vR0a3FL#Zg^ z^*jjJ;TM{mJ|{FD%tIU8jo!fD)M5|?0C>;!1em%X$XbjQkINckh;=QZl_(`^HjPS9 zs3n$Aa~q$+X126*nceuA+gAL_qOr{|0x7pLfGcjnAmwf@&CDp!mxFPWGz;?x3Z~m} z4^!KN>K7r}sA7vxP{4TMaN=nzb#mhif;akwQiI9o8-b8VDuFKbRFn_PUyFmQ9N0Z* z{me^l(E1=9?hVQi9bNb@>TGndU*JEvuD;h_b8s1CyiJ3olv)QMKNSZ;FE$U#TU<6O z`Xaj?SC|CFdM!pZ6F7wnVDRjmNMsy+^2{n|MQ%Q+!Z@YobWD68o(3a2pl&hc zlM<5~KBCa7uBS2C&vJ;{XS^K&ewO2iO1Oq3BOTj+oR zb&H0EkD8c@YmDK7B1>?bv7j4pxqE)|liU#zZ=3TU&4Rg546cq?U5n8ld5VEac^{Yh zferD7A>im@|s?x_p6jz=HPZrRJo{X zUZHQ|WMM5z6UXKP1trk8ilta?W`TBgc6`jxhoDa%+|G@lIR}GZ%wXg+yqlr^P)M-Q zGBl!|!~~_GR^D@c;w(p8gD`Fo`m%%Y%eSb=89 z#kJWI!E9l9;tlo@8~F+5A%(Mm#LZ!cM8HhqoN6;N7OEKmeVeJCWaWB?; z)AbOuC<*T4NIYk7s3X8m(y9=w&IgRjkuAgHiFj7o$$eiCWmZ_0c_ss4K(Fi{49^d& z`l~qea69AY9FH3h`BX!yWevA4aaC1%=Q(kXhh=a7GF6Ug$4ia$;^#cgSVifaHIa^}z zJwU9zV{l_kR#1wepk`bUhD%i7g7%ACF6MQxsuD3^2EHNSbLJ42^avfr0ymibl3v+6z3)>p6@`94U+*+mwPY228>ry>Al zq3%>iuMPAYgvAzQSS;zjpk-Nw$o7MiDn~@Iv)-AO!;1Qeo;Dt{{{X;Zw}?h#fLAaA zo0JZn$`^1by5Su(L?9)W;B&=^dcg z6A*6WmsF@gwPu~6x*ltC&vkYgmjIafj@8BUnSfl5*+ak}J9fB[)7a509=>K$+U znRKrUP&C5?VDQCwikbfaF)rl<(6N3wj;IL6S?KrF*Nq}A`5<7z#gAcZexTSRp2y@L z#2WysT$Rro`eniCnU`U0sMibE3xuLobuqkEvI?Z%5I7BTMQoT|&ULp_nCA?yV@Z_p z7|X(c5}n|Zf8LPNV)7Qmn=)C$?AVvLcySR9!W%~^D4O*Ete!J{#A ziEo5l*xXkHac~pc5hJ|li$e4|^P%w(p+#6nfvmHogk7tg`-0|_%xl3g+ET<7x;d5x zQt>IGC44G9RyRV=3?Nn>^&ei!+mt`{VHEtsEN*hMD;5!}G0`ilHQd+)D?camEULG; zvoyoYXzpL0M+7Vsdss%%O(4Tgoi>G}{I~811>P&V(ds19+uRUe*%YlFM7d=HbS2SW zl|Y*T*c(qVwu^Rtk#$@wjSiNjI3t4ruaDe4kilEdMq`=<`rvCnbKiRy|yQQUP7X%wkeu{3}1U3!*6m)x%v%HJ>#7i@XU zm}aQ$d|-Z|varx)+$&aX1v&Q@3s@5asQvAOhl!Jwq)@{E&sPGs21-o_G2mjh!%r^# zwbZ%8yn%ks-w?D4T}&107n{s*McT6Cp#Ei1m?OQ)-4P)xtA{DOaGD|fm_-HEs&=i* z7)AAR{4bQc*g)BTkqS06j}X{}4Id;B8mA-k5GTj*5AJbo*(LbBtDBe;^g9pigiST# zRX3}{3{`V&kY5gUSzG-r z@W;QXQE4R+rdw{l3XV6Rjh$eFVT?-#s^mug&FOzn8jI+r2_kJN5uQsw>#wC9vz9d_WC!E20vGR>{_tUl0o;QL}F_$x2sSONH- zqxp(n>h7&R?p++GjDDcHHhYa5%f&_&qwxS?h9RO`Fv+%w$DzJ<$gT!JFOcu^!j1aU~^AW;Vxn^Q4NPP{kYdtM5)&?2ojg<;7I8+3vn5KVG zWL@vLC9My+T(@+v?7LckSiDNMhL5>N@sOa%DveaAK($wzj#@9OiIOGZAhb_W1x&JY z@o?&a)--%GQn;+KS&t(AV%I@udNdIA1ri0V>{S<^9n6oCT{gl~ID>{5V>Mx!hnWN=Qps>B zDQOnKwkddem<=QGEvXB^6^Awv3`{AyES1^>{^lw!G>uHf#aqHW^C`FXM@x;0XQRi) zU;%V!vI`WwZO(pStO^Azp&4t8{{U3-;*?4SrO;-jK|tsWU!8vCU@_c%y7&oeRpf{F z49jy=exSf~blguDUBM&Y5{#|nlyw9_CEt)^g7}ytOlTi)0%V{HsbLZKb4@>(Yk`5o z{vq@7@ZkOa<%`d7!JNg_N{M$t$8lZLUL&=sm$h6}BcWP~6kG8bG9xvNGSv#hk{oj#-*sYx*v4^ z0LhSO!j$@YjwBAjJ`5O6%9(Ud1TBM)4rK{ju9vLLbx2_|uT&Iw449{W{{ZZ@NLyg% zWV(eNRp%#&6uUEPe{l)Yx`5*oJWH}%a?fKI4AD1OpiA1@+Qh!L5!fzphzjk@5LQ`d zk~64fJ@+X#aZ6az`Nwe@*P-rK0#xv*28xDr;xJmUkSa~yyhJHPRa1B1?g}M=1-OIG z=s5RqTG3Z+qFUdmQM^OEm>R>Wd`L~7%@U*e`s z{KvA|n6nC9?xuxx5s!tSf+~Qye8qX(P(fW4FSHIiP8f@Z;CUzHKP0!Iu1u1pZxt*q zJc)kF?fWc+Xc9tYPhEuDGzufHD{v2v6c6Ca_rErWH61VDgFI1@GLDi_UF_r z8I4t>@hh0qRa30#;#U&smMPZ6r+E$0kM3XtK434pm3Qcs2Zkl>ay0{~t-!L4W-zA+k@W8(T(dnsRaz`Jf##|+70sK#u zB2;RFZsxBgTy$k^vM)HyPOZnJyBpMP9-^$&3$GW_BqCea$G-ZY;#1(qgcAn#TOmHd9*r}EeYWhSZWx&Tev1o+)>$0P9g++K}F<$akc{7 zFGqiIpFy@AFv6Yy%t|XRQV$+X&XK zg8(%LsFoHUNQ)<-8O6S9W|n!n^2|haXlI ze^Th=TuY{n?rKaJh>4SwaUHmLo^1{}1` z14bAkaB4AlQjF>(s=)FP2nNM@E*5$x=np<1&iW{&F^my*6S&#e9 z>xii3EE@nb`5@2$vDp4U5iO!QWmG<99A))P3{a{ZDYznroZJxGg4S^!0m3DCd{ZG+6QwPpcd3ZeAM;YaB3 zJd&6R!zUy$ln+}W8d`QDkwrUS+-o;0d5b^TVkwblWFC*iQxUe={VU4`z$|34u9yZpl^!IE-)$ zIj8C?s_VqM?Y+RmnA7+~hT*#|{6tDL)i6r#^#WNSEZ9NUMvYpxdF%Vl%3648RreNt$0dIaSf_;xb_9TsdB7m>4|JQLz$$)%THb+Oc-LdjBaiSX(`*iPMHq!qL?zXYZLLgX3|X*K@Vg=4f8 z6*pd=xbE$$X?HN)KfnC^$53CMQ58DvhVox299q~*YezQXTJ74xI4e+w+5k~bAf_i2 zMZ$AhgT%c>eAcDT-av~PK(?_HaN!>;6QmEML91^Nrr-F57gqS@IkJO6hEM~R2_5!< z2&KG(1da52uE|Jw`hOiTS-atWAa*6q!c8Y6D*%2ng~ThIl8UFsEBJ*Xo(Y4caMr#h zlQ(OBJWHho>U?&?)wiR^ z5EOL42oz2tuMvB0B=oljulk1&;%cOCTwSnus9SLiMq}yBzMxfQat?76Rqf(ngIoj% zY2@VyXwh|k7H16(0DQ*t))c z;Vo3CCoOq13JVY+V!`8J@dyRF&r<6~_E`a?M#32IBP;4)hP<-N)mz@$SYiS2Z8Nbo zPv&w}m^d~0skyu|Rr)_XME=xv0?nqFtm%vplG2 zvnw9o<^Tq%F^NU%e^XjaS_5?ZgO;c;LbHCLs~yeocldxUjF{nb{L4`5SOl7=zWJG& z^`O9ae~7(G!da<@^*0PNKsx(B5dgDr8v);@T5hSF{{Tkd2!MF^5h^u+TNm=o*HhP$ zui^c{!Mx*|$pcCQI)^_QW}07ZYR}5bf^a|qx_~QWBQ%+ckR^d^t9{HA8Qp66AR)FM zyL_L_3UOq~Q}qUbR#rj5Pzw;+{1L^`eB&?Nc4xlWI8n|s`+zQ%y|I=zL#S3C;8~B7 z=cJ5l%nqyO7y@jySd1l}E+rm<{-d6ucApmyZsR{18^@<(K9b0BGaPX>8^N7lyCRLvf0FeqsQlh#HDYHuDme z%xNn(DH(0R!9^uJMg#!Bw^HtQ--sDtOKzHtAXBJ=h)@#5 zwiAs#LqTqSPGAZaHpfw0kZa}_%bJK@IE@%q%JD3aZeU8Q>j%`hp=CnSsqs*|L@!nW zzqsC&A<8Q|5pJL_=2)DUn)XHpy^ohr60igNV`CN^fN;S-Dyph)Jm*lMLZXw0pZAGJ zs)q`$V2} zh@!dt+ExhUwxPe1h#GxITTcX7gwQZv-1&$wur_VXL{6c)?D9k1yjYqXBpZUeC7XT4 zDBo29XDp>gJV0&F1hfEmd6mOYg{mePJNy*q{V|Xgop|f!8Dz?iA{qxH3Mf-eYGy2} zq!cA7-lAjx(+rinU>vLW8q2eZb+26FTp^v{sj=qpKC7f>2D*;co-QJR%&pas0gOPV zi}xrDQ+b1oJv)Oa^B@U$+jjw_fHdxQq^=2&te}Mx2rkwE5%wJB8s29T(Y09ZB{my%$UZ@2+PED(6% z0|Mh(oB@3>NDYCa`nb&%JE!7Qe-DGk>oKc}9Fa^8c#Z4?vzuo!@PkcW?rv4SM5xp- zrsL^C+=pJD#B>)(>FNMn2&S&0K>A;<m*ALUrn`zh;VlZrmbiW~8Io>vCox9oiCC+}erIA~*2Hca zFIEep#wyKV8n*5SaU)j5-u0gYqz+J0Q~M z^$ZxMp+?vJ+z$$Dy)d76A&D?UF)^xOdl&UCKBXSl`iEd8iHVF+;K#$%HDSuPz%%L@ zLV*qq50)pJDiB)M7u@v4ADZci{(A?RD)Qqbq-D55Rga^ui!7K#IW^mjrwg z@k~YN4=lDKxEW%srujdqMi+C<>$WQ#xw9{r$z_ja<8qzK=35YP6i`*rMWU#A z<`5EJBwLcD;>m4pBmj-vF)>FIfVumLTf0t}U~bHAUV*eWl*+}N0i--z!_|A0P}&8* z@-D+b&@Hk4;HOLtQ9I{S`~p?J;DlAs?wFZKw#%YhiBc*Zd(ZPPbKqdT6lVY*+_4Z) z*7B|pP|&6Wi+!!YYO1O0h}Lwc9Ky7WUj$MB5y(3_nre!@CgY>!YCJYe)fi075sE^y z1zCm>6k#9Kbra;>Z-c%*qsCH`@dQamA@-q$>?H^t1+dqICu-g_@$OlUC{cG-hsQCN zNM95e=v-4x<8mGT!3?4CLtAxVWZ5q^2Kkuh%96o1K{t>%@JE4Ebf-daU3qs zOcka*FWjKE(a-dYk&UYTMe-iSflI>R{{XV!Ez4hx!pC*semVJ+xPZZ2ODPUx26^UQ zoux;{;H5VJZIdo$Lt)|w7v~t2_7~J5uf(agFPH_Q30uMHIw&qWom2Fi^c!LbD#QgJ zGd0}TX!Jq=H{7COa78FES%`FW!2-r_JCy7rT-;j7qtpV5DO;usJ61A6!&!?BqfQfv zKo-(1li?DC-4#uKBT}fc6+*$6%(R5G;F`Mp#KkMOi%;_v&=mv~?S7zLtR6(Kg@E*w zTYsfZTq*mygJ3!?$3M)oFGX@_{{S&b6gF{>>+=BaTRw&UqZ+dzu?Pya*)l@52H*=| z9gPq39Cam(fHV1)-D?Nb0Hc@%hOY;hM4PxQlnp3|s2$WOKTJ*cfiMruXkSeL(*40` z0a?c_d5z0=E3r0yBf{~}KZ$x+CjsU8iGG#_j~6sF+*Q5_keP)jxMxBbZntpuL#pXl z`G}QX!n4-_ubst!kWjD{d_X9(e2fgOSGdQ*+i@)}a2GUy#~7UR+{)EvZc@C(*k61_ zS*79tJin=L4sIae_X~imZY0|J7$Br78ktvcsWI~gl*=rwJVkzGp}gDy!X+?7tS>R@ zVl9~>H;arBgG2t}gizRO_Qrs=;K3O0rEd(Pxk;PWrI?}tVzhb28DT`&S7c~w zROOhhpah0>sB=HC>f*+;yn(<%Gy>f={-O68S(qp&ZTt}-D&5Ni=Gju$LegCtF&LIb zYcR_$Gv;Uu^WrA%Cj`qg1Q+BI72Ah$!NZGyg;M30jB23gVS*b19S4|#oFLkp%*xbc9|%`S;gl?-0~wu-Ycisuo)VWg62j%UPf*3@P7jH_mC*{ddLit~lQ3#o zyu6^QI&BOVGnb81fz)WkFCl8|E}ypHXjV$NoTYO)3#fP&G3A)UpM^>a+Ys zMaZYiEC-0}6$sd<-&YH675*d3Y&EN*Sg2Ul%P{M(Wb= z76$7wiA7%JG*`1z_u(wqFL7M{ql2#Fz|rcn3kk8-V;T@U{&zrlVSoDsCWkieED2X)1bDl+4L=-AD?a*{>w%SK;dI1#;vGz_k2sY=U`Ogw`B^LN zl&4u>4MFBDeM$`n{{S&1xKCqpvuqZ^^A@%~Ed;!mvHm6650J|x3awW;mYOiVDK5-Ay#Rn3`+bebVqTa zLC=YKOaZEK<~9V%XuB}W`yBE=7Z6$80e9=+#3@5igPjavu$pTIk_A>SaH9tg5J3FY z+r>L04_CQgCy9;)O%n4q;%tEOG0|uoQ7H-p-N#5jLM)IORuA4ksPDrgvR!h7mJRotSCzQ|TV%9zflokSkm_7dhx|a75V0AcDO>PG$a{??y zE0*g1(=#ZdfLZy>cJg5gMV5;wbM+SBs%qd`bVT5SqGG&}8UX|f&X@H)LZ5NnE+Ybv zUM!2zVS1P7`Bb5gea6&RHqv9L*R=><72F1|jIU7}b7*?FkhNm*u;0wBif*{Z*m;Nx zw(_tomH{`*{{XS*(3H{J`KT>XS2R?~fZrI7sWD_%9oU$GqKrUxSFR;xTO1x~6?ma2lJ)-3l@4q7{PQkV|kf zWQuO%qEi_(y!zA#$@dEX0LhYJ&}m$U*5g&{$m_&q8?~@&99Crw8wfGq>JtT&cc<|c zozAT3)%?w2Qh`GzJk$(sqB3@lpsbr=r!imE9C9;=wBwatUOx~n98$3`Rm8BW$El{D znNbqGX_yKy^29fL@wvT9M<~SGa8Ll-(2f^Yv-@H$snh+qBrVi5s$-)$Fdi%GP&Wm7 zj|cZJM|A-3$Ke#v5CYZJ5k-JA^5^v)nQfN`%%Fu`3O$W!C2dG%D{tSKp6s(>GmpG{ zz=X3YgDOupJSP1??{&r+Z!v1}k1Lhn^6QwKrJE0xnJlgQPz05+>H zvS2h@<4>8mZM2n164I@NC>c%xGRQwriYO}a0^QB?OdPV?OG_U8)R$#eq(_zPchp3y5*^CP4=OmKe%gr zcJdyxnHwvE-33-6jv*a=_m!&-=u&RxKmwCHqWCbntC? zF;bSynLG6^>vpPk9n2Elpk%J4J_bF&xy`rZIP(=n4`xPH zoK0F?OY20tRj2*Ta0LoSTCLcaf}j2ng4wt=3U?YcGXDVZ%wQvm&h)~&MS;j{sAW)# zEO+>dpyPOrRg%>$Py)%=f7q1h)a+CEj7pX@FlxVS334aQD<(<G_SIJQ+F|rB)W?6nB9v$^DK=w957LL{8{KtC(XT4N#lpPGk0Y+1p zOg=%_$|O~8n44Hf3y-N`Yj<~;P+FyJCMPT>X!SbN;f6XJd4iR$D;_u`008v{9H+BB*TpH9DEz0-eJjy6q z$U%(oIRfl`OoBCDE*UPRbRVLAW2uILT<@1(kVOkq5~LVa|dlO?I~eg?lqCsDaDeyr?NxfZV;rS-ey0%xjfS`erUX zF&Y8gZ`2H`@JDR9eO4IWwp3AxwJ6Uu8VOBRI+;^-rEl&aY-KaI%(`R+HWGvdvqt74 zpbp@-04|S-mL45NXaEO^RjFf{fK5zFfC;t+H3?t*s)?%UM*gLNZk+6O@eStZM4PF# z#av^#al@4Jf}KyIv?@?8SlKnYhEhD;uN$LZWh{nf3+wEWqq}G{_!0! zI8${_e{4ES$@~}M8kYo9MAuBYbKw}Jj@>~spGF|zTc{(0!Ehqcy0FJB4={ir@dyN# z3iqw~{lW-k8gIE|VZsJoN-3KWUx|nR0D*(~VR9jWK;ih5=Z5MC9pn7e4SW72$I}y8 zFZj3?#1_s#=kN6?1tX-03l;2$sHXFlzGnHu6uE^$EDpRxH9}8Gk`2bI4@@$YX%Td? zw!j*qWNqW`EE!T9gAexxgvguWDt1-CntZ}Su@F=F++`%RwmFt;A7}F`fFI`Iwi$Wm zZ!k3iJAjo$Hy{37>TtdV%;9XVU4JA_^mWl~XY&-c+FgUVb|IhKxGDs%XK+X}Et$Xd zN;ZFD=I4pdDDX=?3k8(_0LY->uv!cQc25UQh}D1SK#`x9$_`Xpken=X~ir+rOQcu+C=gfQK5N)+K6WW-|7km zy+tN73&y(fzMwdM!6`qg954czISIgXJOBKRI97F7u+I&s(55QVgcpa=F z;TXqvNGV8dzNU_Gi5zM zr5$YQ7YoS?6{foKzu39xVm6?n^%P+GgvDD1o&IJm0W2N7dyGn+f&%8EU7&GjZ)4^H z*sARF<`4)+1ds9uQz9!}JwXL^n(=oTM}k+>S3|H@d4v{Dhh0D})o4N7WgB@1*$Pt4W&4SOraCj!v=6Ea>Ju|| zgG(M*Ophs{$-fwkEUO7vf_-UqQN{HSnHUD6EHy%CBl_a#YhSsE=-<=|z1^c&mwmqw zqo<+IHxa4;0anZxpmf7C2H3u{4I`4H3sk_Wx&dH&5MFbUjb5e7`EvpSIKT@400Tde{{Yw= zaN{E5+GiLr+5?i=nQq^={gp-s1D_}ILA%a6t9KE&Cmq0mLTF({G`kv%$Ov8P14Il_ zf+>n?nMp<)C0oy2%c`S&UzwA)7CVPmn|!4PfISk(XC5l*<%ZuAyZ11R2@D{eBP<#q zH#pJeP`;B80<2y(N(>c9$J7y++0$v{F^IZPcmDv9Rnl27AIw3}#oka}d8t95;3wON z#O$l6l-U`0FvU3*-P^+Xd=++>r*n7EW0zm%nn2}IF*rfaN_s zuEp8^0Fjy9mf00&;3lURDq^C5n2F1EYFy+;6xK|Aj^>FD)0kfcFc$<7$}D^z z8@E!#6mu^&zNS?wGK;C~zgG|d+uQ+|kqiNSgcY;q=PKV4g_|#2%=ogqrV|%jQifDk zaeT~5QX)V5xMV|E@_O^)0WQFaUlGJBz*mS6pyY)gU(`ta7=F><7OJG9?(;CUuK0zT z2&OA{5U%5+Q9{HhH|Z3xvxs)JGW-3?SW11*IAg#JPW${(UOcsbV ztA2=vdgez!u*zd`36`#+L86f|u}W5DvKSOucv4;=SRAe6FpPl&LmA29{-yFeJrU3- z&KS&_vv5m`+tjWM2&y{xgE;HlT7DSG%L@~WW0h)(sYbD_m6>+gcLkkjjHe<~Eeh>- z9B5H!ClSpNrt*YN2veK;gs|!B~yP!?kVa>Ry_tQLA6#U>ZbKcSG|P zg#g934kHJ1H-Ct$a*k-1GQO$~vY6sn&7Tu_#tpy=)S$-wOfBb8gkqXYrum12e6BC2 zrU`F>uBCF2UG3%^mMXh8B(^OcZctmtgi9?FAV79pa3k#mLc_M8798=o5P%H?xNsI{ zKe7=$p-sRFm8CEfX{9c_LMhE|_Y{*0?Uzhgf!R`{1JYtT+?8r5U>b!CjSC9e8c%wZ zsH)a|{{YCKppuRKaV;&k%-XIoh{im_N@j5+PE)m@g`uAh?XS$H*9tkmf>a=LLG=`- z9O6pbu8V&$;-&ntufhbi)n-!+)n&y>WY1jO1w(fHZa6RqEzoxxSs`*4u)Zp1#kfgV z!gDLQ4Hy^}o5GmPRN^Ra&!#r%T^tWbRTQ=WOa`|K78$u!d$thka-TCuv^fkXyJXvpbN8OAM#w;t{Rr=<-?kp5ix2UzTiYnnp0k&Dsmrj zD5&c)@lP0)HlH2Jpfq>{rhwVXD*YWy0Kux*0nUE;C~GU-t}mwUe{w?l1%;6~?O@2*cs3xkr(SM@HUhn1+Vm zaAhc0H!i{SoQU_RBY{j~5Ge%JfwlDi01=gtYl=ZssAK$M7i}!zPnmEXSQo}#USXm< z-NLI-aB2IANHtq>z%zj6D$2FH)XI*WDW2C0F{+Zk$3eOb;0g21ibqtiGE7Thldq@Osig8Y501D!q zOuW6h0jQ~0Lfg1Oj7&_1l^$truJr>{WF;UPCPqr!K&g0?Db5|nmuifB&FOOvN9S-* zcr%hxl^}|w&+amedr|)YT)%8t9EQ)^GpIL|-XefhMJ;g}tO-|mr=G4fjgV~7Gk0%} zq84S$bu%c_JC!t63zP^a17DeA%vnurwY;=jxn{-60N49?mBeB#63BU_`kTBj?XCMR z<@rrk+im^}ipGZsd~?*uw!orzb&f7)&t7D7OztHS{{S_H2HxhI8Di~?nfZd2PEuAe zjv*4@a4zFi6g5<1)LNB+hCX4Rf#Ia|@ei3OFsDzQ{Y3~DG~&v4sckSW8xY>0HlugH zh`BIhkZC_p%&}pjhWqsm1WYpJP3{cLs!9XAjx!xV4qmq;x{_uYn519xrxBcGZ-yMb-{ z-@yW{=={p>6vSj*l^R=8>k0rrLg=+4gvPMqKOsTAo zQ5|>Z%&I94hBOeOv*tbpSrIg(yJIHs!Z-3uLIe+}C5m>{W*0nzm?`KR_Y`d&C}-jU z1qo2@wTKLflh1KP%dx>8Y6?MH7LwcMI|c_yp6N@*Nx4yS+zHW#fv>5R4(#yzjli1* zpQcxFXeB0VI@~!$qQoF;0y2%z37ZcFC`p}kcHsG!Q841GiEQL{7yketU7Ayco?^2s z@XH*lW(z0$gjLinLna!bnIebQCg*B0ld5H?@16*l( zWn)UtVY_oR=SM!}wN0=DbXY9Y0Z+u#McU)W@f0p|{o)<0S{hcZn(LTI6vBL2~ zZ;qiB3#C`?EEYKg{{T@|8VkU``6%2S8a^drRN0DxXBq93;9K0scw;Oecy6KFK*;?~ zpyNHo?6u%!svf{)JC8ECjK(2DMrEiCbcXB9(DIUKg&=1ua=zsn;>dmLVC5g5V*q7~dwPUcJI%cmu-Y zS7qdo#YaRh+;Sx4ZTnHF2}^8v82G6}d;b6=vKI#6v+Cj51F^VQrCRX6QOckRm1b3# zT8jo%O~Y~>txM5O0SrqmBDc+ixge*d!jw}hm0;Ble4rliRXMf>{UWw$s8k97uH$f& zTa*m;@f!~jKzU5TETjTQ`Ah=t7wTRL_k}YOHZj>yK~aLnv&onsc3QXh4Nltf4sjgN z6-P?*;}WI;5I7^1@K@$2Sy6Ka8XXf`?w}EEkzzy?qd78X|RGYErd9hmzy-- z5}KVk^95lx#wsPpw4cPITL(0$Xts+ibjJgJs%pHaaY0(_9m6^^z#tszy~JSfu0A3G zOpcx-qO{p~fjPpZZND8s>Z{ncKr3!#9(5Fex-dOf5(1DjK*)06%)TUPO(TMy&)ij! zyMs^P@fjP<98|!23Zy<`xiS}eU@nE5w?9lFFSKne&bpLcD(`t%NB~;IutiQEs17VG ze;>rLe2H+?!g;#mP&TZt{rPGvlnRhdlv``e%9#F8wsZs+&c3+;QR7Ty< zRcPYtnOrCi7gzHF@J*=*Yn2StvZV?q67*nnK+?|Hkr|9SmWHjRF(T0{Ychl)5p(M= z+*Z4za4qt`h)DANKskw+C*a~MR(Xcc7s6*SFb#Mp_DTpE2X?|4>0@Ks7IT?K@o-9N zs1)M?=CX}FZd$AhxL1~QTz@dS#Xt$^t@?>Y8dYP#ihW9+#030iQm=)aj^#GzHAmY6 z86W7he&zy$v(MCh2h}XdWqe9qr!eG7;9UGbT3gdm8z2>L1)7Ui8fk$6MbNM2GV%|y zDjWfntBLzzO+Ro2Q;Esfh-pv|ip)yxw0>(p#IbAu5LSDRRI#Ctsl~=XAxuhfvm|Vn z23ij5W7M#&N=|&9GZu;!wO#vxy(vyDs329m(+L6Or_SSAYTe8V)wV)Ycg7*gtYCBV zHnP?v^E9r^z(^)#rFRhcNMDDE)UPlFNx6$DIvPJ0ZnG0ETyEpu-u-NdWb`SYdAqcP*xZ;)N+j) zYjKNE7BbvmxDMO${K_EJ${2CEcXObtCGxNZ+y{xi#7$P&DBp=|Z=^q&u$vF$ih@do zs(s4(LrbtmP+@suHxxrTGU8D)MJ3dD;0knJYmy#75|%#EjJ+vYv-j>=yH=6AI7sH_ zqvWeK8qmcvDN?X=$;T1PD@9jMzAny6Ox%5)ZMHHF@;K*R#;*ix-m zhd=f`1t(MnS|u7Fw^95`0yf|>_9~T9vJZx!rpw+wnNax=K_+3{;iCiu2m@AgHDN4r zy+35Xfxzq?=lbd!Fq1*TzA#5rRD)*`o%xjLR4NL%9*zG1*vhk55RJNJ$+$NDBBTM} zB)wg47F0%5^u_Z$K-s6JV1OIAtzHHS_J|U|#m#bc6>bzeazNHFUr~YzWxoLj2P^;_ zk-?Um&%8#4{)t4xSGE=*EF+F48p=lEpjHQDqao~V-6TYzL93xW!q5S1SRkNnN@_YJ z8BgHEbuiGKbrH2Lip*cBr8XdJJVaDd$!7>DK;-2O79L_^_?E#H6og=bfHM4eh%BRw z?B*ewi&uY`!UeKUKA~U{QCr`L*(^r2(_i)_DgvphZ@Fy4VCChOS1qC96=3cUZa-=?>3W#(s*T$ezAul^y zkDZXC9fgY;4r2na0*SKc0h;p=E-#`Z%AhWQcozQvMj%^q)-zr{%9NLYsubtY{mhG0 zLm=jd73QN_4&`NTi-zm7WX?JK%7DNN`0}?K7NM^T$?R5N1=XxyU+$yCe4gXq69HaM zg=PAg4V_(A@|DRgQvh&RA-}n6lEJZT@M9>dE8Fz~stilJnv~xm9jr0zdYIjmM|qo7 z#ujcSND8)Fd_=PGZMA^4$Y!7BRfGmEsw}?M2S^HqDo6#_R!$+C5Li_!QuBbVrhetq zOHNbf4h6+kv$zuCF^t+l_+shN0+NEq6sj$R+p$h4MoS^!fE>M(FtYLm&eGbV)Kw3d zRYJ(jsNqgDk*-5=J7ZQsNacl)2~en0HIfW?M@J}TJ6j<8h6KT?{e#ug%O-YPlfQruqt zZZ^ED8#&ni@#a12k!AG5*D}_a&fu(M@Vv_B7Ut?%Rh~+Mf(3Bb_tX(Zfy)IC8uq=g zl~8+wbzS>|msZ}Tfl=sYZyu9}KG;gQ4ra-VP8~e|0K7`_7FFMgnrZa;e85#|v`Y{3 z{r3*L_5T1P9}zMivNqJtLw|+_3WhpEZr4UVqU!CuVg90NtizX2Fa(srgCCwrp7?An z$JEEb(fWwdYM?fC_bnw0!|vZu6|xm|x47;`%{Q&W6{Q{gyv2xM*o59VZUD$Myzt;D&5bjn3KXF=vo#p<*{f&V4FFY_ zg0*qi`0`b+}HGi7XUPK z_G00t&VYVb5b6_K(S9msyC#Kr?p*?D=7Cl7a7GGyY$&aGyWe%xB(+JEUHf5%G@e#44 z<*NSxhqKI48;26yW$g<3m}$LCCW`#cd4mO4S$RA&FvHz--xhLzao|SmrCbi0`|%3( z^Be;S`58!{^cY)$zxU{3ZKOa#Km@3V0)HRCLg<1TPw|D;lAxg?C3~w6( z0Tlz5+Vwaui{&|-hvg#khT+!bz}f2&r#CQCHJ!^7Rb;Mz@(iQ}0*Yf$$ineqnwkj~ z25ZdK9E7)53HniZ^~`K*_Abr9b$hULEK>_}%_ZP`Cl#pLrYtLe)YFSf-PJB-RBuUQ zgpH$VX>T#DkYHMGhY_0zT?~dde~EYyS?Cupm>31(wV#g=g>5C(5NsC9XJHDV5kCyM?f?|f_(H=cSa0Pf@pF~l* zT*sBR;jW2rSfmo$TjDd5dpj^u;d|me9Yl0kpzrk_MJ4MQ$KbV>qfB~~`qWPf!B%v- z^TootNe-y8-IRSnz)%w9VeydrjVcG`-ke+=mYaoZ{>oLA00j9pr^hfVvQ1=Z@Za2} z87#QX3)WZDaWJVy2TZTwjA#pmzYfFXgXA+~szb|dz}P5V6drsKqUmU@jq#2n71Xz@ zx3)QOHP~;KzuZc|4H=T_HS=&REt*`v976$g!tA&pF8&}IVA@b%@`eV%q-r3lKWKsE z=Jy9c3+r;Q0@r;+V8JRb?1T!1hF*fQFVh=#XAwuDi|$pwrXwj<=Klcm5}I&s@fNa_ z_fgBAkNue;PV85viGYJvUoX!qfPI2Vf|v(}-zIu*h1~dxEQ_0HJ-#7)+>D;$1{RThGUc zmJ=2^JD+BNM0|?4j%nIncCq5#Ux>-tn zuwbyGlW3BS>4Cf#+c38E7g2Y|K>p@{4v1#10jS8dp?9bXAB@9IL9zTD&D^jiY%4OL zl@>#MY0RlkO;9ktb4T2)HiRy(2M2q9P+O2L=`F$M-r-ZDxSCnteL=QPfz7Dd&aLq& zV69hM+Wgv9&4&pc|hnkE*t#6;px~Ubhb= zfgDEB$*EOw^0T5hVz@q{G0>AIPjQyUEJg7XaMOeSxpJv2mSw-z;f2+*Yg^&~vaM_t z!|n*9yH%E(@d$=1rGyryR8w`y3dkl>fO9O%G_AxVvMQrOA%aHm(dtxn9KWPeCB1bm z1={hHVWQK#!L_+n%nKU7{%W0GrDA~I^#xyA;H&Wfz27ErEKnn3QHxj(8n$GJQ=wgU z+U_oFOmTjjj+XJQorl&wZY<4^Cl{a2B~TNiI%kXzoc%;%EFKp4KZv^)w3w}~05z<{ z3KK+e$4A_1#ku7nvi-}@Diae$ZS{s%@(*1-=>5fjn*eEDaF+)_j18+La(J0xZI6h% zDjb%&a@g*deDw`H9eQlN{@{{KHAYJ~CEG16;(1HHCDl{{$y{?9Z^jBO+yX0uL`tjN zQLB7hX969{42!jK9s!eGAem5f*VMpEJtC>3z-lFhxMXG2c0$U6BWpvs^nWteWUkjM z=1|u4Aa^e2O!F<(sU(5$}Ro;IwFld0RNz2@zz(rczIE7@Y)O-3=2L51Nt95&T zxq9?}*z4V+`ITsKW+OS2wjGtIpq0j$s=0tJ1-2iUQA!nNcC4RLjSw7U4Y^D{V@fF2 z#lL1HDBv}V=Hr6cm;gQ?pai=cJ;oSx)<4eST$l>B^nM|$5YMFwP?@&~Yt#}T*G)Fx z63oVwSy+NSQ*MwcuVn-vG+i@Mfheqx$~sdEeZC+Ks(9szVDJ&^S?&!L=I1cmF3{># z&la-?&GVQUbBGj5Q(Kq(pNkAjKzzi{3Ud`OKMq` zqf~FcAb<~vbg#oV&sA7&y=7o&QBV#2$QG$t5ojgDou&)O-XUuN37EjpsGHmICx44^7R1x$AHDAgj zD~W&=;smZFX?IhSAUVE>ZF9b3>bPaC8wTvaZ&zuE3UdVu#K;tia);hrMZQ=1>KajWU02xVHYh8d zoA(jch+e67{)jn%6orpmRBt#1S$~OOwv8|K4O<#!pYoWfE(kaW`-rzh34BwZ!~pseCn|K>G-^UAPrc3#Zx+m!@EoA_>xc z%|xoUYZzj-zCXBSq&LBhqL5&^n8P1r{JW1smAL4_*Z25a8qXH`1^o+fxvOTc?2_-@!$KZt>_ zIX4UTDU@V7JjZC9SRSQ}M?+K8 zePyqM!uWM5lT&qtH#DAVxWQchUNylA))B`fn97?G=SLFB_kJm2vD`U z11K2`F&vEKi4h*l_?Oay$e+Z?sQ8!96?Qg8vdymO;RspPvy2Zpw#E9mmd2Lf<566c z@oVcR<}!h0pqF)7c*G4bW~=oOeH>O^C-YMy0qH~y%Hc|~w1~{7VXQa!r{)z|l`iP) zB`nqqpHGQT+o)t%1DLe6muG0nfm~GL9QcKAw-F`k?o-fuCHwfmfH1^OPD&kMeZtfq z7LU*Th*TZ)SMvxI5f4xGD2seQmp|NWvv_M6{{XSe#W%8ghS?3l+m>US+_G%E8I;050u%RO8|`3Ghc%#YCbBHb*%lU^@>x zsyb$5gmAd>b>?3&O|DDsIUq+s?Rp~!_=}jp9IjnSsLCfZnTpIV-!qZnjf19KLSE2!W+FfrG}BDG zqnOi^xIKEd1;<>3;_yXRU>pI6@p_~fI4@xT0NGPy_ZP4S0OA`$z74`JwPnKq6{hP_ zno_Ld>uqa^bYyK49}#iWfbZNW(JU(kLPgyk;FVIn%jl|ia9NrjrdZRSP*5;2`hrpz zF0-%1zW&Ye=xCe=RtFxti&Sad8XR%v36u>bv)Drx(FK5dfov&MZ=Cs#!ZARvmH-kZ1y*1J1>9QVul_{Q zaGpjAa}BYad5Gm@j1J}0LiDKpmJASG4U-_cs+Sba8K+Wy?6*ZGO^#qm;?d^fc`udl5 z6Mv}qwzO~a7hoKua;`N28yu?ogB5CsJ0V?>1-Aq|wtTO-^y6%;u{?oe?W zqm)JLv28KCYY3%gAmx2C&q8R%3-H({*S~f zfSppG3b*#s(i@D4So2cF)9f0pC!)5$=O6cS!wi z1l9P$`(wyQ8L#3fQc}^Q@NN#wDi-4Vn;aOo8oghLUWo^dmDhjvY}x5(-#!^@ct?Ax z?m0rTRtLVH_M+?pH>}?u47}Q-g7Q~n3@LgJeBpmlL*bq`+!EK@J`^>zi*uEub@Ll_hp@Uptg3VT|T(IHMZv9W-A28*Z5iw45d*&Pm=^n-F zZ@2`jqrU`nDS2?pvs!!3rb-gDmoKZj8;WEgLl03{1acqDP=?mz#wB~9q<;|W01$@# zKM;VLvYw-^;*#zH%Nc578Z|C=9J`G3@jL`+CMH)17R$)fJ4V(m+%l#4i10jC;BBWT zPzE2*{{Rvs8HxV@%b0rknDF|@`f(Kjs>40vvnejQMqkB6n|=cdEx*_Hj|JW-{J^#I z!829go-%6NkvIwxMG`5%2 zNU2uaV(;Qmt=&*&H^Xv3T$D3V=nHAbdHu&V7&X_JElq~wsbhLQvyyF~&IlPXU!K`z zay6g1W9WZ#Jnz3V3$7=EEpmn{x43LND?PzvIlOmp&W-ETAp)2JDZBn6m0(dW3L42W zcZe%(-J)qm5MP~YM^*&?#F;{X5v diff --git a/public/js/lang.js b/public/js/lang.js deleted file mode 100644 index 75b888c..0000000 --- a/public/js/lang.js +++ /dev/null @@ -1 +0,0 @@ -function switchLang(n){document.getElementById("switch-lang-panel").classList.toggle("hidden")}document.addEventListener("DOMContentLoaded",function(){document.getElementById("switch-lang")?.addEventListener("click",switchLang)}); \ No newline at end of file diff --git a/public/js/main.js b/public/js/main.js deleted file mode 100644 index 6331b14..0000000 --- a/public/js/main.js +++ /dev/null @@ -1 +0,0 @@ -function switchTheme(){"dark"==([...document.documentElement.classList].includes("dark")?"dark":"light")?(localStorage.theme="light",document.documentElement.classList.remove("dark"),document.getElementById("light").classList.add("hidden"),document.getElementById("dark").classList.remove("hidden"),document.getElementById("syntax_highlight").href="/syntax-light.css"):(localStorage.theme="dark",document.documentElement.classList.add("dark"),document.getElementById("dark").classList.add("hidden"),document.getElementById("light").classList.remove("hidden"),document.getElementById("syntax_highlight").href="/syntax-dark.css")}function toggleSidebar(){let e=document.getElementById("sidebar");[...e.classList].includes("translate-x-0")?(document.body.style.removeProperty("overflow"),e.classList.remove("translate-x-0"),e.classList.add("-translate-x-full")):(document.body.style.setProperty("overflow","hidden"),e.classList.remove("-translate-x-full"),e.classList.add("translate-x-0"))}function toggleMobileMenu(){let e=document.querySelector("#mobile-menu div.nav-links");[...e.classList].includes("h-screen")?(document.body.classList.remove("overflow-hidden","relative"),document.documentElement.classList.remove("overscroll-none"),e.classList.remove("h-screen"),e.classList.add("h-0")):(document.body.classList.add("overflow-hidden","relative"),document.documentElement.classList.add("overscroll-none"),e.classList.remove("h-0"),e.classList.add("h-screen"))}document.addEventListener("DOMContentLoaded",function(){var e=document.querySelectorAll(".nav-links a");let t=window.location.href.replace(/\/$/,"");e=[...e].filter(e=>e.href===t||e.href===window.location.href);if(0!==e.length)for(var d of e)d.className="bg-gray-900 text-white px-3 py-2 rounded-md text-sm font-medium";"dark"===localStorage.theme||!("theme"in localStorage)&&window.matchMedia("(prefers-color-scheme: dark)").matches?(document.documentElement.classList.add("dark"),document.getElementById("dark").classList.add("hidden"),document.getElementById("syntax_highlight").href="/syntax-dark.css"):(document.documentElement.classList.remove("dark"),document.getElementById("light").classList.add("hidden"),document.getElementById("syntax_highlight").href="/syntax-light.css"),document.getElementById("switch-theme")?.addEventListener("click",switchTheme),document.getElementById("toggle-sidebar")?.addEventListener("click",toggleSidebar),document.getElementById("toggle-mobile-menu")?.addEventListener("click",toggleMobileMenu)}); \ No newline at end of file diff --git a/public/js/page.js b/public/js/page.js deleted file mode 100644 index 8260040..0000000 --- a/public/js/page.js +++ /dev/null @@ -1 +0,0 @@ -function getActiveTocElement(e){return[...e].find(e=>e.getBoundingClientRect().y<=0)}function findCorrespondingTocTitle(n){return[...document.querySelectorAll("#toc li a")].find(e=>e.href.substring(e.href.indexOf("#"))==="#"+n.id)}document.addEventListener("DOMContentLoaded",function(){if(null!==document.getElementById("toc")){var e=document.querySelectorAll("#toc li a");let n=[];[...e].forEach(e=>{n.push(e.href.substring(e.href.indexOf("#")))});const i=document.querySelectorAll(n.join(","));let t=[...i].reverse();e=getActiveTocElement(t)||i[0];findCorrespondingTocTitle(e).classList.add("bg-blue-700");var o=e;window.addEventListener("scroll",()=>{var e=getActiveTocElement(t)||i[0];e!==o&&(findCorrespondingTocTitle(o).classList.remove("bg-blue-700"),findCorrespondingTocTitle(e).classList.add("bg-blue-700"),o=e)})}}); \ No newline at end of file diff --git a/public/js/search.js b/public/js/search.js deleted file mode 100644 index 00474b9..0000000 --- a/public/js/search.js +++ /dev/null @@ -1,6 +0,0 @@ -function toggleSearchModal(){const e=document.getElementById("search-modal");e.classList.toggle("opacity-0"),e.classList.toggle("pointer-events-none"),document.body.classList.toggle("search-active"),[...document.body.classList].includes("search-active")&&(document.getElementById("search-input").value="",document.getElementById("search-input").focus())}function formatResultItem(e){return console.log(e),htmlToElement(`
  • - - ${e.doc.title} - ${e.doc.description} - -
  • `)}function htmlToElement(e){let t=document.createElement("template");return e=e.trim(),t.innerHTML=e,t.content.firstChild}document.addEventListener("DOMContentLoaded",function(){let e=document.getElementById("search");e.addEventListener("click",function(e){e.preventDefault(),toggleSearchModal()});const t=document.querySelector(".modal-overlay");t.addEventListener("click",toggleSearchModal);let n=document.querySelectorAll(".modal-close");for(var o=0;o