From 5f447c955d567c3e2a0ee77d8c244a28d4876223 Mon Sep 17 00:00:00 2001 From: Christoph Urlacher Date: Tue, 23 Jun 2026 19:04:53 +0200 Subject: [PATCH] Initial commit --- .chktexrc | 810 ++ .gitignore | 424 + chapters/00_abstract.tex | 17 + chapters/01_introduction.tex | 8 + chapters/02_related_work.tex | 8 + chapters/03_experiment_design.tex | 8 + chapters/04_experiment_setup.tex | 8 + chapters/05_results.tex | 8 + chapters/06_discussion.tex | 8 + chapters/07_conclusion.tex | 8 + chapters/examples.tex | 29 + figures/example.svg | 19563 ++++++++++++++++++++++++++++ glossary.tex | 30 + listings/example.cpp | 7 + preamble.tex | 314 + references.bib | 33 + thesis.tex | 41 + titlepage.tex | 68 + tudo/tud_logo_rgb.jpg | Bin 0 -> 91921 bytes 19 files changed, 21392 insertions(+) create mode 100644 .chktexrc create mode 100644 .gitignore create mode 100644 chapters/00_abstract.tex create mode 100644 chapters/01_introduction.tex create mode 100644 chapters/02_related_work.tex create mode 100644 chapters/03_experiment_design.tex create mode 100644 chapters/04_experiment_setup.tex create mode 100644 chapters/05_results.tex create mode 100644 chapters/06_discussion.tex create mode 100644 chapters/07_conclusion.tex create mode 100644 chapters/examples.tex create mode 100644 figures/example.svg create mode 100644 glossary.tex create mode 100644 listings/example.cpp create mode 100644 preamble.tex create mode 100644 references.bib create mode 100644 thesis.tex create mode 100644 titlepage.tex create mode 100644 tudo/tud_logo_rgb.jpg diff --git a/.chktexrc b/.chktexrc new file mode 100644 index 0000000..dfbe9ae --- /dev/null +++ b/.chktexrc @@ -0,0 +1,810 @@ +## Example resource file for ChkTeX. +## +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. +## +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. +## +## You should have received a copy of the GNU General Public License +## along with this program; if not, write to the Free Software +## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +## +## For more information visit https://www.nongnu.org/chktex/ +## + +## chktexrc file format +# +# The chktexrc file is essentially a bunch of variable assignments. +# There are two types of variables, those that take single items and +# those that take lists. +# +# In turn, there are two types of lists, case-sensitive and case-insensitive. +# Case-sensitive lists are delimited by @verb@{@endverb@ and @verb@}@endverb@ +# while case-insensitive are delimited by @verb@[@endverb@ and @verb@]@endverb@. +# Only some variables support case insensitive lists, since in many +# cases it doesn't make sense and would be unnecessarily slow. Those +# variables that @emph@do@endemph@ support case-insensitive lists will be marked as +# such throughout the file. +# +# Variables can be set with or without an equals sign. If included, the +# @verb@=@endverb@ causes the variable to be overwritten. This is the only thing +# that makes sense for variables taking a single item and so we always +# include it in that case. For list variables, omitting the equals +# sign will cause the items in the list to be appended instead of +# overwriting the entire list. +# +# Below are all the ways in which a variable can be set. Note that lists +# can span lines, though this is not shown here for brevity. +# +# +# VariableName = item +# # Overwrites +# VariableName = { Item1 Item2 ... } +# VariableName = [ item1 item2 ... ] +# VariableName = { Item1 Item2 ... } [ item item ... ] +# VariableName = [ item1 item2 ... ] { Item Item ... } +# # Appends +# VariableName { Item3 Item4 ... } +# VariableName [ item3 item4 ... ] +# VariableName { Item3 Item4 ... } [ item item ... ] +# VariableName [ item3 item4 ... ] { Item Item ... } +# +# +# Comments begin with @verb@#@endverb@, and continue for the end of the line. +# Blank lines plus leading and trailing spaces are ignored. +# Items are separated by spaces. +# Newlines are considered spaces, but can't be escaped. +# You can use double quotes @verb@"@endverb@ to surround an item with spaces, or you can +# escape spaces as described later. +# +# Detection of tokens like @verb@}@endverb@ are somewhat context sensitive---they +# have to be preceded by a space (or newline). This allows them to be +# part of an item without escaping. Since some variables require such +# characters, this generally makes life easier. +# +# To include characters that might otherwise interfere, escape +# sequences are provided. They are similar to those in C, but use +# @verb@!@endverb@ instead of @verb@\@endverb@ for obvious reasons. +# The entire list is below. +# +# @bf Sequence @&@ @bf Resulting character @\\@ +# @verb@! @endverb@ @&@ Space @\\@ +# @verb@!"@endverb@ @&@ @verb@"@endverb@ @\\@ +# @verb@!#@endverb@ @&@ @verb@#@endverb@ @\\@ +# @verb@!!@endverb@ @&@ @verb@!@endverb@ @\\@ +# @verb@!{@endverb@ @&@ @verb@{@endverb@ @\\@ +# @verb@!}@endverb@ @&@ @verb@}@endverb@ @\\@ +# @verb@![@endverb@ @&@ @verb@[@endverb@ @\\@ +# @verb@!]@endverb@ @&@ @verb@]@endverb@ @\\@ +# @verb@!=@endverb@ @&@ @verb@=@endverb@ @\\@ +# @verb@!b@endverb@ @&@ Backspace @\\@ +# @verb@!n@endverb@ @&@ New line @\\@ +# @verb@!r@endverb@ @&@ Carriage return @\\@ +# @verb@!t@endverb@ @&@ Tab @\\@ +# @verb@!f@endverb@ @&@ Form feed @\\@ +# @verb@!xNN@endverb@ @&@ NN must be a hexadecimal number (00 - ff), +# both characters must be included. @\\@ +# @verb@!dNNN@endverb@ @&@ NNN must be a decimal number (000 - 255), all +# three characters must be included. +# Unspecified results if NNN > 377. @\\@ +# @verb@!NNN@endverb@ @&@ NNN must be a octal number (000 - 377), all +# three characters must be included. +# Unspecified results if NNN > 377. + +## Available Settings +# +# All available settings follow. +# + +## QuoteStyle +# +# The type of quote-style you are using. There are currently two +# styles: +# +# Traditional: +# "An example," he said, "would be great." +# +# Logical: +# "An example", he said, "would be great". +# +QuoteStyle = Logical + + +## TabSize +# +# The width of a tab. This is used for formatting the error message. +# Only positive integers are allowed. +# +TabSize = 4 + + +## CmdSpaceStyle +# +# How to treat a command is followed by punctuation. In all cases the +# warnings are also governed by the main warning settings, namely +# warnings 12 and 13 about interword and intersentence spacings. +# +# If set to Ignore, then it won't print any warnings when punctuation +# follows a command. +# +# +# If CmdSpaceStyle is set to InterWord, then it will print warnings +# when interword spacing should (potentially) be used. For example, +# without a command the following will trigger warning 12 +# +# @verb@I've seen a UFOs, etc. in my life.@endverb@ +# +# And if set to InterWord, so will +# +# @verb@I've seen a UFOs, \etc. in my life.@endverb@ +# +# +# If set to InterSentence, then it will print warnings when +# intersentence spacing should (potentially) be used. For example, +# without a command the following will trigger warning 13 +# +# @verb@I've seen an UFO! Right over there!@endverb@ +# +# And if set to InterSentence, so will +# +# @verb@I've seen an \UFO! Right over there!@endverb@ +# +# +# Setting CmdSpaceStyle to Both will cause warnings to be printed in +# both cases. +# +CmdSpaceStyle = Ignore + + +## CmdLine +# +# Default command-line options. For instance, you might like to put +# @verb@-v2@endverb@ here. +# +CmdLine +{ +} + + +## UserWarn +# +# Arbitrary strings to warn about. You can put here to help you find +# your own little foibles. See also@ref@UserWarnRegex@endref@. +# +# These patterns will be searched for throughout the text; regardless +# of whether they appear as normal text, commands, in math mode, etc. +# They are @emph@not@endemph@ found in comments. +# +# Suppose you define a special command like this: +# \def\unknown{\large\bf??} +# which you use whenever you don't have some information at the time +# of writing. Thus, it makes sense to warn on it, and this is a +# convenient way to do so. +# +UserWarn +{ +} +[ # You may put case-insensitive patterns here. +] + + +## UserWarnRegex +# +# A more sophisticated version UserWarn using regular +# expressions. Use of these will be automatically disabled if ChkTeX +# was built without regular expression support. Because ChkTeX can be +# with support for either POSIX or PCRE flavors of regular expression, +# some of the following will not apply in all cases. An expression +# can be defined only when PCRE is enabled by prepending the +# expression with PCRE: and similarly with POSIX:. +# +# These patterns will be searched for, no matter whether they appear +# as normal text, commands, or arguments. However, they will not +# match in verbatim environments (see VerbEnvir). +# +# Remember that you have to escape (with a !) the characters +# "#!=, as well as spaces and {}[] if they are +# proceeded by a space. +# +# When using PCRE regular expressions, you can use (?i) to make +# the expression case insensitive. See the man pages (man pcresyntax) +# or the nicely formatted http://perldoc.perl.org/perlre.html for +# documentation on the regular expression syntax. Note, however, that +# some the features of perl regular expression are not available such +# as running code (callouts), and replacing. +# +# An initial PCRE-style comment (?# ... ) can be used +# to change what is displayed, thereby reminding yourself how to fix +# the problem. This works even for POSIX expressions. +# +UserWarnRegex +{ + # Old PG661 rules, kept as examples + # (?!#Use! \avatalk/! instead! of! writing! it! out!!)[^\\][Aa]va[Tt]alk|^[Aa]va[Tt]alk + # (?!#Use! professional! language!!)[Gg]ame|[Pp]layer + # (?!#Use! OptiTrack! not! Optitrack!!)optitrack|Optitrack + # (?!#Use! HMD! not! Headset!!)headset|Headset|HeadSet + # (?!#Use! Blendshape! not! Blend! Shape! or! Blend-Shape!!)[Bb]lend[! -][Ss]hape + # (?!#Capitalize! Presenter! and! Listener!!)presenter|listener + # (?!#Don't! capitalize! agents!!)! Agent + # (?!#Use! 2D! or! 3D!!)2-[Dd]imension|3-[Dd]imension|2d|3d|2! ![Dd]imension|3! ![Dd]imension + # (?!#It's! called! Netcode! for! GameObjects!!)NetCode|[Gg]ameobject + + (?!#No! unbreakable! space! with! \autoref!!)~\\autoref + (?!#Use! ISO! dates! like! 2024-10-30!!)[^0-9][0-9][0-9][\./-][0-9][0-9][\./-][0-9][0-9][0-9][0-9]|[^0-9][0-9][0-9][\./-][0-9][0-9][\./-][0-9][0-9]|^[0-9][0-9][\./-][0-9][0-9][\./-][0-9][0-9][0-9][0-9]|^[0-9][0-9][\./-][0-9][0-9][\./-][0-9][0-9] + (?!#No! shortforms!!)isn't|aren't|wasn't|weren't|won't|can't|wouldn't|couldn't|hasn't|haven't|hadn't|it's|he's|she's|they're|we're|you're + + # + # Disabled default rules for reference + # + + # (?!#Always! use! \nmid)\\not! *(\||\\mid) + + # Capitalize section when saying Section 6. + # (?!#-1:Capitalize! before! references)PCRE:\b(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref + # (?!#1:Capitalize! before! references)POSIX:([^[:alnum:]]|^)(chapter|(sub)?section|theorem|lemma|proposition|corollary|appendix)~\\ref + + # Spell it introduction + # PCRE:(?i)\bintro\b(?!#Spell! it! out.! This! comment! is! not! used.) + # POSIX:([^[:alnum:]]|^)intro([^[:alnum:]]|$) + + # Pretty tables--see http://texdoc.net/texmf-dist/doc/latex/booktabs/booktabs.pdf + # (?!#-2:Use! \toprule,! \midrule,! or! \bottomrule! from! booktabs)\\hline + # This relies on it being on a single line, and not having anything + # else on that line. With PCRE we could match balanced [] and {}, + # but I wonder if it's worth the complexity... + # (?!#-2:Vertical! rules! in! tables! are! ugly)\\begin\{(array|tabularx?\*?)\}(\[.*\])?\{.*\|.*\} + + # (?!#-3:Optional! arguments! []! inside! optional! arguments! []! must! be! enclosed! in! {})PCRE:\[(?!![^\]\[{}]*{(?!![^\]\[{}]*}))[^\]]*\[ + +} + + +## TeXInputs +# +# A list of paths where @ChkTeX@ should look for files it @verb@\input@endverb@s. +# By default, the current directory is searched (not recursively, use +# @verb@//@endverb@ for that, see below). +# +# A @verb@//@endverb@ postfix is supported: +# if you append a double path-separator we'll recursively search that +# directory's directories. MS-DOS users must append @verb@\\@endverb@ +# instead, e.g. @verb@C:\EMTEX\\@endverb@. In order to search an +# entire directory tree, you must use @emph@three@endemph@ slashes, +# e.g. @verb@c:\\\@endverb@ or @verb@///@endverb@. +# +TeXInputs +{ +} + + +## OutFormat +# +# Output formats which can be selected from the command-line. The +# @verb@-v@endverb@ option simply indexes into this list. By default, entry number +# @emph@two@endemph@ in this list is chosen (counting from 0), and @verb@-v@endverb@ +# without any parameter selects entry number @emph@three@endemph@. +# +# For explanation of the @verb@%@endverb@ format specifiers see the +# documentation of the @verb@--format@endverb@ command-line argument +# in the manual. +# +# Recall that to use @verb@!@endverb@ is the escape character, not @verb@\@endverb@. +# +OutFormat +{ + # -v0; silent mode + %f%b%l%b%c%b%n%b%m!n + # -v1; normal mode + "%k %n in %f line %l: %m!n%r%s%t!n%u!n" + # -v2; fancy mode + "%k %n in %f line %l: %m!n%r%i%s%I%t!n!n" + # -v3; lacheck mode + "!"%f!", line %l: %m!n" + # -v4; verbose lacheck mode + "!"%f!", line %l: %m!n%r%s%t!n%u!n" + # -v5; no line number, ease auto-test + "%k %n in %f: %m!n%r%s%t!n%u!n" + # -v6; emacs compilation mode + "!"%f!", line %l.%c:(#%n) %m!n" +} + + +## Silent +# +# Commands which should not trigger a warning if terminated by a space. +# This warning will not trigger in math mode. +# +# You can also specify regular expressions in the @verb@[]@endverb@ +# section in case you have many custom macros that can be safely +# terminated with a space. +# +Silent +{ + \rm \em \bf \it \sl \sf \sc \tt \selectfont + \rmfamily \sffamily \ttfamily \mdseries \bfseries \itshape + \slshape \scshape \relax + \vskip \pagebreak \nopagebreak + + \textrm \textem \textbf \textit \textsl \textsf \textsc \texttt + + \clearpage \ddots \dotfill \flushbottom \fussy \indent \linebreak + \onecolumn \pagebreak \pushtabs \poptabs \scriptsize \sloppy + \twocolumn \vdots + \today \kill \newline \thicklines \thinlines + + \columnsep \space \item \tiny \footnotesize \small \normalsize + \normal \large \Large \LARGE \huge \Huge \printindex + + \newpage \listoffigures \listoftables \tableofcontents + \maketitle \makeindex + + \hline \hrule \vrule + + \centering + + \noindent \expandafter + + \makeatletter \makeatother + + \columnseprule + + \textwidth \textheight \hsize \vsize + + \if \fi \else + + \csname \endcsname + + \z@ \p@ \@warning \typeout + + \dots \ldots \input \endinput \nextline \leavevmode \cdots + \appendix \listfiles \and \quad \bigskip \medskip \smallskip + \hskip \vfill \vfil \hfill \hfil \topmargin \oddsidemargin + \frenchspacing \nonfrenchspacing + \begingroup \endgroup \par + + \vrefwarning \upshape \headheight \headsep \hoffset \voffset + \cdot \qquad \left \right \qedhere \xspace + + \addlinespace \cr \fill \frontmatter + \toprule \midrule \bottomrule +}[ + # Here you can put regular expressions to match Silent macros. It + # was designed for use with many custom macros sharing a common + # prefix, but can of course be used for other things. + + # Support ConTeXt to at least some extent + \\start.* \\stop.* +] + + +## HyphDash +# +# The number of dashes allowed between two alphabetic characters. +# Use 0 to always return an error. For example: +# foo-bar @\\@ +# Use of two--dashes is not usually allowed in English. @\\@ +# like this---see? +# +# For English, this will often be a single dash (hyphen). If you like +# m-dashes with no spaces between them and the surrounding words, then +# it should include 3 as well. There @emph@are@endemph@ cases when an n-dash +# is valid between two alphabetic characters. See@ref@DashExcpt@endref@. +# +HyphDash { 1 3 } + + +## NumDash +# +# The number of dashes allowed between two numeric characters. +# Use 0 to always return an error. This does @emph@not@endemph@ apply in +# math mode. For example: +# 123--456 is a range @\\@ +# $12-4$ \% okay because it's in math mode +# +# For English, this should be 2 because an n-dash is used to indicate +# a range of numbers and subtraction should be in math mode where this +# does not apply. +# +NumDash { 2 } + + +## WordDash +# +# The number of dashes allowed between two space characters. +# Use 0 to always return an error. For example: +# not like - this, @\\@ +# or like -- this. @\\@ +# like this --- see? +# +WordDash { 3 } + + +## DashExcpt +# +# Exceptions to the dash rules above. For example, an n-dash +# @verb@--@endverb@ between words is usually wrong, but in some cases it is correct, +# such as when naming a theorem. The Birch--Swinnerton-Dyer +# conjecture is one example where the difference matters. You can +# tell that Birch is one person and Swinnerton-Dyer is another based +# on the dashes used. +# +# Adding line suppressions for these is possible, but can quickly +# become tedious if a certain theorem is referenced often. For this +# reason exceptions can be specified here. They are case-sensitive. +# +# Unfortunately, there are no warnings if the dashes are surrounded by differing +# types of characters. For example: +# like this ---see? (space and alphabet) @\\@ +# a--123 (number and alphabet) @\\@ +# a.--b. (other character, namely @verb@.@endverb@) +# Similarly, no warnings are issued if the hyphenation is correct, +# according to the other rules, for example: +# Birch-Swinnerton-Dyer +# +DashExcpt +{ + Birch--Swinnerton-Dyer +} + + +## WipeArg +# +# Commands whose arguments aren't @LaTeX@ code, and thus should be +# ignored. +# +# After the command, you may place arguments (separated from the +# command with a colon) that should be wiped. Use @verb@[]@endverb@ for optional +# arguments, @verb@{}@endverb@ for required ones, and @verb@*@endverb@ if the command supports a +# star variant. Some commands (e.g.\@ @verb@\cmidrule@endverb@) use @verb@()@endverb@ to +# delimit an optional argument and so this syntax is supported as well. +# +# For instance, if you would like to wipe the @verb@\newcommand@endverb@ command, +# you would declare it as @verb@\newcommand:*[][]{}@endverb@ since it has a +# star variant, two optional arguments, and one required argument. +# +# These commands may be ``evaluated'' before they're wiped, so you will +# typically list file handling commands and similar here. +# +WipeArg +{ + \label:{} \ref:{} \eqref:{} \vref:{} \pageref:{} \index:[]{} + \cite:[][]{} \nocite:{} + \input:{} \verbatiminput:[]{} \listinginput:[]{}{} + \graphicspath:{} + \verbatimtabinput:[]{} \include:{} \includeonly:{} + \bibitem:[]{} + \cline:{} \cmidrule:[](){} + \href:{}{} + # Cleveref -- there are many others that could be here as well... + \cref:*{} \cpageref:*{} \crefrange:*{}{} \cpagerefrange:*{}{} + \Cref:*{} \Cpageref:*{} \Crefrange:*{}{} \Cpagerefrange:*{}{} + # natbib + \citet:*[][]{} \citep:*[][]{} \citealt:*{} \citealp:*[]{} \citeauthor:*{} + \Citet:*[][]{} \Citep:*[][]{} \Citealt:*{} \Citealp:*[]{} \Citeauthor:{} + \citetext:{} \citeyear:*{} \citeyearpar:{} + # biblatex - not including special commands + \autocite:*[][]{} \autocites:*[][]{} \Autocite:*[][]{} \Autocites:*[][]{} + \parencite:*[][]{} \parencites:*[][]{} \Parencite:*[][]{} \Parencites:*[][]{} + \footcite:*{} \footcites:*[][]{} \Footcite:*[][]{} \Footcites:*[][]{} + \textcite:*{} \textcites:*[][]{} \Textcite:*[][]{} \Textcites:*[][]{} + \citeauthor:*{} \citeauthors:*[][]{} \Citeauthor:*[][]{} \Citeauthors:*[][]{} + \citeyear:*{} \citeyears:*[][]{} \Citeyear:*[][]{} \Citeyears:*[][]{} + \citetitle:*{} \citetitles:*[][]{} \Citetitle:*[][]{} \Citetitles:*[][]{} + # tipa which uses " + \textipa:{} + # LuaTeX + \directlua:{} \luaescapestring:{} +} + + +## MathEnvir +# +# Environments which typeset their contents as mathematics. +# This turns on/off some warnings. +# +# A @verb@*@endverb@ variant is automatically added for each keyword. +# +MathEnvir +{ + displaymath math eqnarray array equation + align alignat gather flalign multline + dmath dgroup darray +} + + +## TextEnvir +# +# Environments which typeset their contents as text, for use inside +# mathematics. This turns on/off some warnings. +# +TextEnvir +{ + dsuspend +} + + +## MathCmd +# +# Commands whose argument will be typeset as mathematics. +# The commands are assumed to have one mandatory argument which is in +# math mode. This turns on/off some warnings. +# +MathCmd +{ + \ensuremath +} + + +## TextCmd +# +# Commands whose argument will @emph@not@endemph@ be typeset as +# mathematics even if it would otherwise be in math mode. +# The commands are assumed to have one mandatory argument which is in +# text mode. This turns on/off some warnings. +# +TextCmd +{ + \text \intertext \shortintertext \mbox \condition +} + + +## VerbEnvir +# +# Environments containing non-@LaTeX@ content of some kind, and +# therefore should not trigger any warnings. +# +# A @verb@*@endverb@ variant is automatically added for each keyword. +# +VerbEnvir +{ + verbatim comment listing verbatimtab rawhtml errexam picture texdraw + filecontents pgfpicture tikzpicture minted lstlisting IPA +} + + +## Abbrev +# +# Abbreviations not automatically handled by @ChkTeX@. +# +# @ChkTeX@ automagically catches most abbreviations; the ones we need to +# list here, are those which are most likely to be followed by a word +# with an upper-case letter which is not the beginning of a new +# sentence. +# +# The case-insensitive abbreviations are not fully case-insensitive. +# Rather, only the first character is case-insensitive, while the +# remaining characters are case-sensitive. +# +# To speed up the searching process somewhat, we require that these +# end in a @verb@.@endverb@ which should not be a problem in practice. +# +# Much of this work (both the abbreviations below, and the regular +# expressions necessary to catch the remaining automatically) have +# been provided by Russ Bubley, . +# +Abbrev +{ + # Ordinals + 1st. 2nd. 3rd. 4th. + # Titles + Mr. Mrs. Miss. Ms. Dr. Prof. St. + # + # Days + # Mon. Tue. Wed. Thu. Fri. Sat. Sun. + # + # Months + # Jan. Feb. Mar. Apr. May. Jun. Jul. Aug. Sep. Oct. Nov. Dec. + # + # Letters + # Kt. Jr. + # + # Corporate + # Co. Ltd. + # + # Addresses + # Rd. Dr. St. Ave. Cres. Gdns. Sq. Circ. Terr. Pl. Arc. La. Clo. Ho. Est. Gn. + # + # Misc. + # oe. pbab. ps. rsvp. Tx. +} +[ + # The first letter is case-insensitive in the abbrevs in this + # list. Due to the nature of the checking algorithm used for + # this, entries consisting of only one character will be + # silently ignored. + # + # Latin + # cf. "et al." etc. qed. qv. viz. + # + # Corporate + # inc. plc. + # + # Misc + # fax. pcs. qty. tel. misc. +] + + +## IJAccent +# +# Commands which add accents above characters. This means that @verb@\i@endverb@ or @verb@\j@endverb@ +# (@verb@\imath@endverb@ and @verb@\jmath@endverb@ in math mode) should be used instead of @verb@i@endverb@ and @verb@j@endverb@. +# +# Other accent commands such as @verb@\c@endverb@, @verb@\d@endverb@, and @verb@\b@endverb@, put their accent under +# the character, and thus should be used with normal @verb@i@endverb@s and @verb@j@endverb@s. +# +IJAccent +{ + \hat \check \breve \acute \grave \tilde \bar \vec \dot \ddot + \' \` \^ \" \~ \= \. \u \v \H \t +} + + +## Italic +# +# Commands which need italic correction when the group is terminated. +# +Italic +{ + \it \em \sl \itshape \slshape +} + + +## NonItalic +# +# Commands which makes the font non-italic. +# +NonItalic +{ + \bf \rm \sf \tt \sc + \upshape +} + + +## ItalCmd +# +# Commands which put their argument into italic (and thus possibly +# needs italic correction in the end). +# +# This is currently empty, since @verb@\textit@endverb@, @verb@\textsl@endverb@, and @verb@\emph@endverb@ +# automatically add italic correction. +# +ItalCmd +{ +} + + +## PostLink +# +# Commands in front of which a page break is highly undesirable. +# Thus there should be no space in front of them. +# +PostLink +{ + \index \label +} + + +## NotPreSpaced +# +# Commands that should not have a space in front of them for various +# reasons. Much the same as@ref@PostLink@endref@, but produces a different warning. +# +NotPreSpaced +{ + \footnote \footnotemark \/ +} + + +## Linker +# +# Commands that should be prepended with a @verb@~@endverb@. For example +# @verb@look in table~\ref{foo}@endverb@ +# to avoid the references being split across lines. +# +Linker +{ + \ref \vref \pageref \eqref \cite +} + + +## CenterDots +# +# Commands or characters which should have @verb@\cdots@endverb@ in between. +# For example, $1+2+3+\cdots+n$. +# +CenterDots +{ + = + - \cdot \div & \times \geq \leq < > +} + + +## LowDots +# +# Commands or characters which should have @verb@\ldots@endverb@ in between. +# For example, $1,2,3,\ldots,n$. +# +LowDots +{ + . , ; +} + + +## MathRoman +# +# Words that should appear in roman (upright) in math mode. There are +# certain aliases for mathematical operators (like sin or cos) that +# appear in roman rather than the usual italic (slanted) font. +# +# These entries do not need a leading slash since the mistake is often +# to @emph@not@endemph@ include the leading slash. +# +MathRoman +{ + log lg ln lim limsup liminf sin arcsin sinh cos arccos cosh tan + arctan tanh cot coth sec csc max min sup inf arg ker dim hom det + exp Pr gcd deg bmod pmod mod +} + + +## Primitives +# +# Commands that are used in @TeX@ but have become unnecessary in +# @LaTeX@, as there are @LaTeX@ commands which do the same. Purists +# should thus avoid these in their code. +# +Primitives +{ + \above \advance \catcode \chardef \closein \closeout \copy \count + \countdef \cr \crcr \csname \delcode \dimendef \dimen \divide + \expandafter \font \hskip \vskip \openout +} + + +## NoCharNext +# +# Commands and a set of characters that should @emph@not@endemph@ follow them. For +# example, in math mode, @verb@\left@endverb@ should be followed by a delimiter +# which is to change size. Therefore, it should not be followed by the +# end of math mode @verb@$@endverb@ or a grouping character @verb@{@endverb@ or @verb@}@endverb@. +# +# The format is @verb@\command:characters@endverb@. +# +NoCharNext +{ + \left:{}$ \right:{}$ +} + + +## VerbClear +# +# The character to replace verbatim text with. +# +# The arguments of commands listed in@ref@WipeArg@endref@, as well as +# @verb@\verb+...+@endverb@ commands, are replaced with an innocuous character +# to prevent that data from inadvertently producing a warning. +# +# This should not contain an alphabetic character (in case the user +# writes (@verb@\foo\verb+bar+@endverb@), neither should it contain be one of +# @LaTeX@'s reserved characters (@verb@#$%&~_^\{}@endverb@), or any parenthesis +# character (@verb@()[]{}@endverb@). If possible, don't use a punctuation +# character or any spacing characters either. All of these characters +# have warnings associated with them and thus could cause spurious +# warnings to appear. +# +# The asterisk is also unsuitable, as some commands behave in another +# way if they are appended with an asterisk. Which more or less +# leaves us with the pipe. +# +# Please note that this may also be a @verb@string@endverb@, which will be +# repeated until the proper length is reached. +# +VerbClear = "|" + + +## That's all for now - Happy @LaTeX@ing! diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..03e7db3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,424 @@ + +# Created by https://www.toptal.com/developers/gitignore/api/windows,linux,macos,visualstudiocode,sublimetext,latex +# Edit at https://www.toptal.com/developers/gitignore?templates=windows,linux,macos,visualstudiocode,sublimetext,latex + +### LaTeX ### +## Core latex/pdflatex auxiliary files: +*.aux +*.lof +*.log +*.lot +*.fls +*.out +*.toc +*.fmt +*.fot +*.cb +*.cb2 +.*.lb + +## Intermediate documents: +*.dvi +*.xdv +*-converted-to.* +*.ist +# these rules might exclude image files for figures etc. +# *.ps +# *.eps +# *.pdf + +## Generated if empty string is given at "Please type another file name for output:" +.pdf + +## Bibliography auxiliary files (bibtex/biblatex/biber): +*.bbl +*.bcf +*.blg +*-blx.aux +*-blx.bib +*.run.xml + +## Build tool auxiliary files: +*.fdb_latexmk +*.synctex +*.synctex(busy) +*.synctex.gz +*.synctex.gz(busy) +*.pdfsync + +## Build tool directories for auxiliary files +# latexrun +latex.out/ +svg-inkscape/ +_minted-*/ + +## Auxiliary and intermediate files from other packages: +# algorithms +*.alg +*.loa + +# achemso +acs-*.bib + +# amsthm +*.thm + +# beamer +*.nav +*.pre +*.snm +*.vrb + +# changes +*.soc + +# comment +*.cut + +# cprotect +*.cpt + +# elsarticle (documentclass of Elsevier journals) +*.spl + +# endnotes +*.ent + +# fixme +*.lox + +# feynmf/feynmp +*.mf +*.mp +*.t[1-9] +*.t[1-9][0-9] +*.tfm + +#(r)(e)ledmac/(r)(e)ledpar +*.end +*.?end +*.[1-9] +*.[1-9][0-9] +*.[1-9][0-9][0-9] +*.[1-9]R +*.[1-9][0-9]R +*.[1-9][0-9][0-9]R +*.eledsec[1-9] +*.eledsec[1-9]R +*.eledsec[1-9][0-9] +*.eledsec[1-9][0-9]R +*.eledsec[1-9][0-9][0-9] +*.eledsec[1-9][0-9][0-9]R + +# glossaries +*.acn +*.acr +*.glg +*.glo +*.gls +*.*-glg +*.*-glo +*.*-gls +*.glsdefs +*.lzo +*.lzs + +# uncomment this for glossaries-extra (will ignore makeindex's style files!) +# *.ist + +# gnuplottex +*-gnuplottex-* + +# gregoriotex +*.gaux +*.gtex + +# htlatex +*.4ct +*.4tc +*.idv +*.lg +*.trc +*.xref + +# hyperref +*.brf + +# knitr +*-concordance.tex +# TODO Comment the next line if you want to keep your tikz graphics files +*.tikz +*-tikzDictionary + +# listings +*.lol + +# luatexja-ruby +*.ltjruby + +# makeidx +*.idx +*.ilg +*.ind + +# minitoc +*.maf +*.mlf +*.mlt +*.mtc +*.mtc[0-9]* +*.slf[0-9]* +*.slt[0-9]* +*.stc[0-9]* + +# minted +_minted* +*.pyg + +# morewrites +*.mw + +# nomencl +*.nlg +*.nlo +*.nls + +# pax +*.pax + +# pdfpcnotes +*.pdfpc + +# sagetex +*.sagetex.sage +*.sagetex.py +*.sagetex.scmd + +# scrwfile +*.wrt + +# sympy +*.sout +*.sympy +sympy-plots-for-*.tex/ + +# pdfcomment +*.upa +*.upb + +# pythontex +*.pytxcode +pythontex-files-*/ + +# tcolorbox +*.listing + +# thmtools +*.loe + +# TikZ & PGF +*.dpth +*.md5 +*.auxlock + +# todonotes +*.tdo + +# vhistory +*.hst +*.ver + +# easy-todo +*.lod + +# xcolor +*.xcp + +# xmpincl +*.xmpi + +# xindy +*.xdy + +# xypic precompiled matrices and outlines +*.xyc +*.xyd + +# endfloat +*.ttt +*.fff + +# Latexian +TSWLatexianTemp* + +## Editors: +# WinEdt +*.bak +*.sav + +# Texpad +.texpadtmp + +# LyX +*.lyx~ + +# Kile +*.backup + +# gummi +.*.swp + +# KBibTeX +*~[0-9]* + +# TeXnicCenter +*.tps + +# auto folder when using emacs and auctex +./auto/* +*.el + +# expex forward references with \gathertags +*-tags.tex + +# standalone packages +*.sta + +# Makeindex log files +*.lpz + +# REVTeX puts footnotes in the bibliography by default, unless the nofootinbib +# option is specified. Footnotes are the stored in a file with suffix Notes.bib. +# Uncomment the next line to have this generated file ignored. +#*Notes.bib + +### LaTeX Patch ### +# LIPIcs / OASIcs +*.vtc + +# glossaries +*.glstex + +### Linux ### +*~ + +# temporary files which can be created if a process still has a handle open of a deleted file +.fuse_hidden* + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +# .nfs files are created when an open file is removed but is still being accessed +.nfs* + +### macOS ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +### SublimeText ### +# Cache files for Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache + +# Workspace files are user-specific +*.sublime-workspace + +# Project files should be checked into the repository, unless a significant +# proportion of contributors will probably not be using Sublime Text +# *.sublime-project + +# SFTP configuration file +sftp-config.json + +# Package control specific files +Package Control.last-run +Package Control.ca-list +Package Control.ca-bundle +Package Control.system-ca-bundle +Package Control.cache/ +Package Control.ca-certs/ +Package Control.merged-ca-bundle +Package Control.user-ca-bundle +oscrypto-ca-bundle.crt +bh_unicode_properties.cache + +# Sublime-github package stores a github token in this file +# https://packagecontrol.io/packages/sublime-github +GitHub.sublime-settings + +### VisualStudioCode ### +.vscode/* +!.vscode/tasks.json +!.vscode/launch.json +*.code-workspace + +### VisualStudioCode Patch ### +# Ignore all local history of files +.history +.ionide + +### Windows ### +# Windows thumbnail cache files +Thumbs.db +Thumbs.db:encryptable +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# End of https://www.toptal.com/developers/gitignore/api/windows,linux,macos,visualstudiocode,sublimetext,latex + +# Ignore compiled pdf documents (I don't have any .pdf graphics) +*.pdf + +# Ignore latexindent backups +*.bak* + +# Ignore tcblistof output +*.listings diff --git a/chapters/00_abstract.tex b/chapters/00_abstract.tex new file mode 100644 index 0000000..32d6697 --- /dev/null +++ b/chapters/00_abstract.tex @@ -0,0 +1,17 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter*{Abstract}\label{ch:abstract} +\addcontentsline{toc}{chapter}{\nameref{ch:abstract}} + +As semiconductor node sizes shrink, transient hardware faults pose a growing risk to computing systems, especially in environments where reliability is critical. +\Gls{wasm}, a binary-code format developed for the web, is increasingly used in embedded systems through standalone runtimes such as the \Gls{wamr}. +This thesis investigates \Gls{wamr}'s compatibility with hardening techniques for transient hardware faults through systematic single-bit fault injection on a simulated IA-32 CPU using the \Gls{fail} fault-injection framework. + +The interpreter and \Gls{aot} execution modes of \Gls{wamr} are compared under fault conditions and software-based hardening techniques are evaluated at two levels: (I) the language/application level, by hardening source programs before compilation to Wasm, and (II) the runtime level, by hardening \Gls{wamr} itself. + +\todo[inline]{Copied from proposal} + +\end{document} diff --git a/chapters/01_introduction.tex b/chapters/01_introduction.tex new file mode 100644 index 0000000..ba527b2 --- /dev/null +++ b/chapters/01_introduction.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Introduction}\label{ch:introduction} + +\end{document} diff --git a/chapters/02_related_work.tex b/chapters/02_related_work.tex new file mode 100644 index 0000000..436a49c --- /dev/null +++ b/chapters/02_related_work.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Related Work}\label{ch:relatedwork} + +\end{document} diff --git a/chapters/03_experiment_design.tex b/chapters/03_experiment_design.tex new file mode 100644 index 0000000..ca492e8 --- /dev/null +++ b/chapters/03_experiment_design.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Experiment Design}\label{ch:experimentdesign} + +\end{document} diff --git a/chapters/04_experiment_setup.tex b/chapters/04_experiment_setup.tex new file mode 100644 index 0000000..c1ae190 --- /dev/null +++ b/chapters/04_experiment_setup.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Experiment Setup}\label{ch:experimentsetup} + +\end{document} diff --git a/chapters/05_results.tex b/chapters/05_results.tex new file mode 100644 index 0000000..48521b0 --- /dev/null +++ b/chapters/05_results.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Results}\label{ch:results} + +\end{document} diff --git a/chapters/06_discussion.tex b/chapters/06_discussion.tex new file mode 100644 index 0000000..152a87c --- /dev/null +++ b/chapters/06_discussion.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Discussion}\label{ch:discussion} + +\end{document} diff --git a/chapters/07_conclusion.tex b/chapters/07_conclusion.tex new file mode 100644 index 0000000..545f830 --- /dev/null +++ b/chapters/07_conclusion.tex @@ -0,0 +1,8 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Conclusion}\label{ch:conclusion} + +\end{document} diff --git a/chapters/examples.tex b/chapters/examples.tex new file mode 100644 index 0000000..28b9be3 --- /dev/null +++ b/chapters/examples.tex @@ -0,0 +1,29 @@ +\documentclass[thesis.tex]{subfiles} +\graphicspath{figures} + +\begin{document} + +\chapter{Examples}\label{ch:examples} + +See if everything works: + +This is \code{inline code}. +This is a reference to \Gls{fail}. +This is another reference to \Gls{fail}. +This is a citation~\autocite{polednaReplicaDeterminismDistributed1994}. +This is a reference to \autoref{ch:introduction}. +This is a formula: \( \sum\limits_{f=1}^{\infty}\frac{o}{r}\cdot m_{u} + l^{a} \). + +\begin{codeblock}[label=lst:examplelisting]{This is a listing}{C++} + \inputminted{cpp}{listings/example.cpp} +\end{codeblock} + +\begin{figure}[H] + \centering + \begin{subfigure}[b]{0.55\textwidth} + \includesvg[width=1.0\linewidth]{figures/example.svg} + \end{subfigure} + \caption{This is a figure.}\label{fig:examplefigure} +\end{figure} + +\end{document} diff --git a/figures/example.svg b/figures/example.svg new file mode 100644 index 0000000..cd4f486 --- /dev/null +++ b/figures/example.svg @@ -0,0 +1,19563 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1e+01 +1e+03 +1e+05 +1e+07 +0x100590 +0x10C8E0 +0x118C30 +0x124F80 +0x1312D0 +0x13D620 +Address +Faults +Type + + + + + + + + +ACCESS_OUTERSPACE +DETECTED_MARKER +FAIL_MARKER +GROUP1_MARKER +OK_MARKER +TIMEOUT +TRAP +WRITE_TEXTSEGMENT + + + diff --git a/glossary.tex b/glossary.tex new file mode 100644 index 0000000..3818743 --- /dev/null +++ b/glossary.tex @@ -0,0 +1,30 @@ +\makeglossaries{} + +% Refer to entries using \gls, \Gls, \glspl, \Glspl + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Acronyms +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \newacronym{acpi}{ACPI}{Advanced Configuration and Power Interface} + +\newacronym{aot}{AoT}{Ahead-of-Time} +\newacronym{fi}{FI}{Fault Injection} +\newacronym{fail}{FAIL*}{Fault Injection Leveraged} +\newacronym{sdc}{SDC}{Silent Data Corruption} +\newacronym{wamr}{WAMR}{WebAssembly Micro Runtime} +\newacronym{wasm}{Wasm}{WebAssembly} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Glossary Entries +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \newglossaryentry{apic timer}{% +% name={APIC Timer}, +% description={A hardware timer that can trigger periodic interrupts by using a counter, integrated in the local APIC} +% } + +% \newglossaryentry{fail}{% +% name={FAIL*}, +% description={Fault Injection Leveraged, a \Gls{fi} framework} +% } diff --git a/listings/example.cpp b/listings/example.cpp new file mode 100644 index 0000000..97dfc46 --- /dev/null +++ b/listings/example.cpp @@ -0,0 +1,7 @@ +class ExampleListing { +private: + int test; + +public: + int toast; +}; diff --git a/preamble.tex b/preamble.tex new file mode 100644 index 0000000..b428d63 --- /dev/null +++ b/preamble.tex @@ -0,0 +1,314 @@ +% Language +\usepackage[american]{babel} +% \usepackage[T1]{fontenc} % Silbentrennung bei Sonderzeichen +% \usepackage[utf8]{inputenc} + +% Layout +\usepackage[left=3.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm]{geometry} % Typical margin +\usepackage{titling} +\usepackage{fancyhdr} +\usepackage{setspace} % Line stretch + +% Bibliography +\usepackage[backend=biber,urldate=iso,date=iso]{biblatex} +\usepackage[nottoc,notlof,notlot]{tocbibind} % Include bibliography in ToC, nottoc disables the "Contents" entry for the ToC itself + +% Figures +\usepackage{graphicx} % Required for inserting images +\usepackage{subcaption} % Mehrere Figuren in einer +\usepackage{float} % [H] floating/positioning von Figuren +\usepackage[bottom]{footmisc} % Bottom not below footnote + +% Math +% \usepackage{amsmath,amssymb,amsthm} +% \usepackage{mathtools} % Extension of amsmath +% \usepackage{upgreek} % For non italic greek (vectors/matrices) +\usepackage{unicode-math} +\usepackage{lualatex-math} + +% Tables +\usepackage{tabularx} +% \usepackage{tablefootnote} +% \usepackage{makecell} +% \usepackage{color,colortbl} + +% Code +\usepackage{algorithm} +\usepackage{algpseudocode} +\usepackage{xcolor} +\usepackage{tikz} +\usepackage{listings} % For lstinputlisting ChkTeX +\usepackage[minted]{tcolorbox} + +% Typography +\usepackage[babel,final,protrusion=true,expansion=true,tracking=false,kerning=false,spacing=false]{microtype} +\usepackage{fontspec} +\usepackage{concmath-otf} +\setmonofont{MonoLisa Alt}[Scale=MatchLowercase] + +% Various stuff +\usepackage[page]{appendix} % [toc] +\usepackage{lipsum} +\usepackage[inkscapelatex=false]{svg} % Don't touch fonts +\usepackage{comment} +\usepackage{pdfpages} +\usepackage{luatodonotes} +\usepackage{siunitx} +\usepackage[l2tabu,orthodox]{nag} +\usepackage{etoolbox} % For \ifstrequal +\usepackage[autostyle]{csquotes} % Correct quotation marks with \textquote{} +\usepackage{silence} % Silence warnings +\usepackage[intoc]{nomencl} % Nomenclature +\usepackage[luatex,hidelinks]{hyperref} % Load late +\usepackage[acronym,automake,nonumberlist,nogroupskip]{glossaries} % Load after hyperref, toc +\usepackage{xurl} % xurl does url-line-breaks in contrast to url + +% Multi-file +\usepackage{subfiles} % Load last + +% Settings +\setstretch{1.25} +\bibliography{references} +\clubpenalty=10000 +\widowpenalty=10000 +\displaywidowpenalty=10000 +% \floatstyle{boxed} +% \restylefloat{figure} +\sisetup{detect-all} +\tcbuselibrary{skins} % breakable +\usetikzlibrary{shadings, backgrounds} +\setlength{\headheight}{14pt} + +% \mathtoolsset{showonlyrefs} +% \usepackage{xpatch} +% \makeatletter +% \xpretocmd\HyRef@autoref{\noeqref{#2}}{}{} % showonlyrefs mit \autoref +% \makeatother + +\makeatletter\newcommand{\tcb@cnt@codeblockautorefname}{Listing}\makeatother + +% Silence some warning spam +% \WarningFilter{biblatex}{The following entry could not be found} % Those are duplicated at the actual \cite usage +% \WarningFilter{latexfont}{Font shape `T1/zi4/m/it' undefined} +% \WarningFilter{latexfont}{Font shape `TS1/zi4/m/it' undefined} +% \WarningFilter{latexfont}{Some font shapes were not available} + +\fancypagestyle{plain}{% + \fancyhf{} + \renewcommand{\headrulewidth}{0pt} + \fancyfoot[RO,LE]{\thepage} +} + +\fancypagestyle{report}{% + \fancyhf{} + \renewcommand{\headrulewidth}{0.4pt} + \fancyfoot[RO,LE]{\thepage} + \fancyhead[LO,RE]{\slshape \leftmark\/} +} + +% Macros +\let\oldurl\url% +\let\url\undefined% +\newcommand{\url}[2][\PackageError{Thesis}{URL requires 2 arguments: \url[date]{address}, e.g.\ \url[07/27/2024]{https://github.com}}{}]{\oldurl{#2} (visited on #1)} + +\renewcommand{\author}[1]{\gdef\theauthor{#1}} +\renewcommand{\title}[1]{\gdef\thetitle{#1}} +\newcommand{\germantitle}[1]{\gdef\thegermantitle{#1}} +\newcommand{\thesistype}[1]{\gdef\thethesistype{#1}} +\newcommand{\thesisid}[1]{\gdef\thethesisid{#1}} +\newcommand{\thesiscite}[1]{\gdef\thethesiscite{#1}} +\newcommand{\birthday}[1]{\gdef\thebirthday{#1}} +\newcommand{\birthplace}[1]{\gdef\thebirthplace{#1}} +\newcommand{\thesisstart}[1]{\gdef\thethesisstart{#1}} +\newcommand{\thesisend}[1]{\gdef\thethesisend{#1}} +\newcommand{\advisors}[1]{\gdef\theadvisors{#1}} +\newcommand{\dean}[1]{\gdef\thedean{#1}} + +% Default start and end for each subfile (the main.tex is also a subfile!) +\AtBeginDocument{% + % Capitalize all the section names (has to be placed after \begin{document}) + \renewcommand{\chapterautorefname}{Chapter} + \renewcommand{\sectionautorefname}{Section} + \renewcommand{\subsectionautorefname}{Section} + \renewcommand{\subsubsectionautorefname}{Section} + \renewcommand{\paragraphautorefname}{Paragraph} + \renewcommand{\figureautorefname}{Figure} + \renewcommand{\tableautorefname}{Table} + \renewcommand{\partautorefname}{Part} + \renewcommand{\theoremautorefname}{Theorem} + \renewcommand{\equationautorefname}{Equation} + \renewcommand{\appendixautorefname}{Appendix} + \newcommand{\algorithmautorefname}{Algorithm} + + \hypersetup{ + pdfauthor={\@author}, + pdftitle={\@title}, + % pdfkeywords={\@thesiskeywords}, + pdfproducer={LaTeX}, + pdfcreator={LuaLaTeX} + } + + % Macros + % \renewcommand{\ref}[1]{\autoref{#1}} + \let\oldref\ref% + \let\ref\undefined% + \newcommand{\ref}[1]{\PackageError{Thesis}{REF:\ Use \autoref{label} instead}{}} + + % Visualize "overfull-hbox" + \overfullrule=2cm + + \pagestyle{empty} + \pagenumbering{gobble} + + % Starting pages + \input{titlepage} + \cleardoublepage% + + \frontmatter% + \pagestyle{plain} + \pagenumbering{Roman} + + % \tableofcontents{\thispagestyle{plain}} + \tableofcontents% + \cleardoublepage% + + \pagestyle{report} + + \setacronymstyle{short-long} + \printglossary[type=\acronymtype] + \cleardoublepage% + \printglossary% + + \mainmatter% + \pagenumbering{arabic} +} +\AtEndDocument{% + \pagestyle{empty} + \pagenumbering{gobble} + + \let\url\undefined% + \let\url\oldurl% + + \printbibliography[heading=bibintoc] + \cleardoublepage% + + \listoffigures% + \cleardoublepage% + + \listofalgorithms% + % \addcontentsline{toc}{chapter}{List of Algorithms} + \cleardoublepage% + + \tcblistof[\chapter*]{listings}{List of Listings} + % \addcontentsline{toc}{chapter}{List of Listings} + \cleardoublepage% + + \listoftables% + \cleardoublepage% + + \includepdf[pages=-]{declaration.pdf} +} + +% Colors +\definecolor{tuCorporateGreen}{HTML}{639A00} +\definecolor{tuCorporateOrange}{HTML}{CA7406} +\colorlet{titlebg}{tuCorporateGreen} % Color mixing +\colorlet{titlecolor}{gray!5!white} +\colorlet{codebg}{white} +\colorlet{languagebg}{tuCorporateGreen!30!white} +\colorlet{linenumberbg}{gray!20!white} + +% Math Environments +% \newtheorem*{theorem}{Theorem} +% \newtheorem*{definition}{Definition} + +% Code Environment + +% This box surrounds the language name (e.g., C#) +\newtcbox{\languagehighlight}{ + nobeforeafter, + boxrule=0pt, + colback=languagebg, + arc=2pt, + boxsep=0pt, + left=3pt, + right=3pt, + top=3pt, + bottom=3pt, + tcbox raise base +} + +% This command is used in the codeblock box to quickly insert the languagehighlight box +\newcommand{\codelang}[1]{\languagehighlight{\texttt{#1}}} + +% The main box for listings +\newtcolorbox[auto counter,list inside=listings,number within=chapter]{codeblock}[3][] +{% + enhanced, + % float, + % floatplacement=bth, + colbacktitle=titlebg, + coltitle=titlecolor, + colframe=titlebg, + interior style={% + top color=codebg, + bottom color=codebg + }, + boxrule=0.5pt, % Border width + arc=2pt, % Rounded corners + width=\linewidth, + fonttitle=\normalsize, + adjusted title=\textbf{\texttt{\thetcbcounter}\hspace{0.75em}\texttt{#2}}, + list entry=\thetcbcounter\quad\texttt{#2}, % List of listings + list text={\hspace*{1ex}#2}, % Chapter - Caption spacing in list of listings + after title={% Display used language + \hfill\setlength{\fboxsep}{2pt} + \codelang{#3} + }, + overlay={% Line number background + \begin{tcbclipinterior}\fill[linenumberbg] (frame.south west) + rectangle ([xshift=5mm]frame.north west); + \end{tcbclipinterior} + }, + top=1mm, + bottom=1mm, + right=0mm, + left=5mm, + #1 % Extra args, e.g. a label +} + +% Options for the listing itself, syntax highlighted using minted/pygmentize +\setminted{ + linenos, + autogobble, + breaklines=true, + breaksymbol=, + breakindent=4mm, + breakbefore=., + breakbeforesymbolpre=, + breakbeforesymbolpost=, + baselinestretch=0.8, + % escapeinside=||, + framesep=5mm, + numbersep=7pt, + fontsize=\small, +} + +% A box surrounding inline code-type text +\newtcbox{\codehighlight}{nobeforeafter,boxrule=.5pt,colback=black!5,colframe=black!35, + arc=2pt,boxsep=0pt,left=2pt,right=2pt,top=2pt,bottom=2pt, tcbox raise base} + +% Quickly place inline codehighlight boxes +\newcommand{\code}[1]{\codehighlight{\texttt{\small{#1}}}} + +% A box surrounding figures +\tcolorboxenvironment{figure}{ + enhanced, + float=htb, + arc=2pt, + boxrule=0.5pt, + colframe=black, + colback=white, + before skip=\intextsep, + after skip=\intextsep, +} diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..cbcc578 --- /dev/null +++ b/references.bib @@ -0,0 +1,33 @@ +@article{polednaReplicaDeterminismDistributed1994, + title = {Replica Determinism in Distributed Real-Time Systems: {{A}} Brief + Survey}, + shorttitle = {Replica Determinism in Distributed Real-Time Systems}, + author = {Poledna, Stefan}, + date = {1994-05}, + journaltitle = {Real-Time Systems}, + shortjournal = {Real-Time Syst}, + volume = {6}, + number = {3}, + pages = {289--316}, + issn = {0922-6443, 1573-1383}, + doi = {10.1007/BF01088629}, + url = {http://link.springer.com/10.1007/BF01088629}, + urldate = {2026-03-26}, + abstract = {Replication of entities is a convenient technique to achieve + fault-tolerance. The problem of replica determinism thereby is to + assure, that replicated entities show consistent behavior in the + absence of failures. Possible sources for replica non-determinism + as well as basic requirements and strategies to enforce replica + determinism axe presented. The problem of replica determinism + enforcement under real-time constraints is surveyed in the + context of the communication problem for distributed systems. + Furthermore the close interdependence between replica determinism + on the one side and synchronization strategies, handling of + failures and redundancy preservation on the other side is + reviewed. The impact of synchronous or asynchronous approaches on + replication strategies is also discussed.}, + langid = {english}, + file = {/home/christoph/Notes/Zotero/storage/DB8GU2TK/Poledna - 1994 - + Replica determinism in distributed real-time systems A brief + survey.pdf}, +} diff --git a/thesis.tex b/thesis.tex new file mode 100644 index 0000000..b9db630 --- /dev/null +++ b/thesis.tex @@ -0,0 +1,41 @@ +\documentclass[a4paper,11pt,twoside]{book} % Add final to silence TODOs + +\input{preamble.tex} +\input{glossary.tex} + +\begin{document} + +\subfile{chapters/00_abstract.tex} +\cleardoublepage% + +\subfile{chapters/examples.tex} +\cleardoublepage% + +\subfile{chapters/01_introduction.tex} +\cleardoublepage% + +\subfile{chapters/02_related_work.tex} +\cleardoublepage% + +\subfile{chapters/03_experiment_design.tex} +\cleardoublepage% + +\subfile{chapters/04_experiment_setup.tex} +\cleardoublepage% + +\subfile{chapters/05_results.tex} +\cleardoublepage% + +\subfile{chapters/06_discussion.tex} +\cleardoublepage% + +\subfile{chapters/07_conclusion.tex} +\cleardoublepage% + +% Appendix + +% \backmatter% % Backmatter breaks reference counters into appendices +\pagenumbering{Roman} +\appendix + +\end{document} diff --git a/titlepage.tex b/titlepage.tex new file mode 100644 index 0000000..99bc887 --- /dev/null +++ b/titlepage.tex @@ -0,0 +1,68 @@ +\author{Christoph Urlacher} +\title{Experimental Evaluation of WebAssembly Under Transient Fault Conditions for Safety-Critical Systems} +\thesistype{Master's Thesis} +% \thesisid{IDIDID} +% \birthday{1st of January 2000} +% \birthplace{Ratingen} +% \thesisstart{1st of July 2026} +\thesisend{31st of December 2026} +\advisors{Prof.\ Dr.-ing.~Peter Ulbrich\\Dr.~Maximilian Seidler} +\date{\today} + +\begin{titlepage} + \setstretch{1.25} + \definecolor{TUGreen}{rgb}{0.517,0.721,0.094} + % \vspace*{-3cm} + \newlength{\links} + \setlength{\links}{-1.5cm} + \sffamily + \hspace*{\links} + \begin{minipage}{12.5cm} + \includegraphics[width=8cm]{tudo/tud_logo_rgb} + \end{minipage} + + \vspace*{4cm} + + \hspace*{\links} + \hspace*{-0.2cm} + \begin{minipage}{9cm} + \large + \begin{center} + {\Large \thethesistype} \\ + \vspace*{1cm} + \textbf{\thetitle} \\ + \vspace*{1cm} + \theauthor\\ + \thethesisend% + \end{center} + \end{minipage} + \normalsize + \vspace*{5.5cm} + + \vspace*{2.1cm} + + \hspace*{\links} + \begin{minipage}[b]{8cm} + % \normalsize + \raggedright% + Advisors: \\ + \theadvisors% + \end{minipage} + + \vspace*{2.5cm} + \hspace*{\links} + \begin{minipage}[b]{8cm} + \raggedright% + Technische Universität Dortmund \\ + Fakultät für Informatik\\ + Lehrstuhl 12 -- Arbeitsgruppe Systemsoftware\\ + \oldurl{https://sys.cs.tu-dortmund.de} + \end{minipage} + \begin{minipage}[b]{7cm} + \raggedleft% + In Kooperation mit:\\ + Fakultätsname\\ + Lehrstuhl-/Institutsbezeichnung + \end{minipage} + +\end{titlepage} diff --git a/tudo/tud_logo_rgb.jpg b/tudo/tud_logo_rgb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..eb6abdf403cb3cc5b7a112fe8af0022a51bdd65e GIT binary patch literal 91921 zcmeEu2V7Lwy6;$HH?~-aVvB9mJ-w*N8K(DMEjYdRJ}AT(HCBwhM2%gsU_nt3i5h#w z0u~SzyA-h@QsylnCOJ8I_ug~vedWHF{rfSDd$0BFudV-A){^M0=zZAdEE2rEbPFH{QXatOqz~r_lgEd^AH;jNagMqP4zoQS}&rLp`YYYTA zyrb1Rr$#?o>$F25wF^RyMnJG}@gbL5Yt{SuYxG95BW_?tcJ9FbW?kGsIhKpyy2yHy znGx~m#SxxF8?kDMx`FZI+l>p23E5qCy-(dgWVboIV?uEQ8;Oqr-y3d21N%1)@mb>r zqDLb~BS#^T$bsYA_3z(*oJVIEBcjlLnF;%kQx@ zzD1{n^ftX+@9=qnI*`z>#KGKgI_(&P(_>fr#+&VGqaL!j^u}?}Z+Cxr$2h3r#lK^u zQOX7af4KkeF$iq(D~Eq-tUr?qOrkUG#(#UF5i;A2e=i)EH-_xdt9?$7#Obt+XWDFj zug}x)?{N*@@plh@)8@EeAL%J-pME?Ffgp@R0PA8TNX!^4aSR#*MP1*YaD8`&HKq}OLp>9K5n2$?{)e;TK(@GsEJa;oL`JICTQ0AOyf~lT%&jm zcKhYlZ(RN3B$M83H2KD3FuzUu<<`G7>le>u38?hn=KXT>-f<4z1;UU>La|lF z5*bMeBqKF}L!x>~BnpHVlDty7DWIbhBWgM^$fR)nToMT*wAy$iID*u8C6K`QhKouX zGAKkEOAe2qk!fl5UcUXd-9h^G1Td4*dP3|KN9s00b2pNkBy;QjjWY5}Cvlk%U|k z5RFPwGaJNY05v3lpC*wTKZP_>kVyw>VUS5yARc&TWK#Y(u8E+KLIyD z#0{y;1hOb>3{Y*th)7~}v%^ZXfXtH$9abDa!ZYclDu#rD@H3e#CznMw8C510P@P+h zkokBrc7i92fdte>f=Ipup;E|cHnkiX(kX02xe8@+sqH?mMve_A(ITYIp~L7EF1&$( zgd5O&s!6G4n3;CA858DNoN%%gE0)<@dZk^}NYJfuuuysjmThsd<#rd&>~g#PUXL0V zaEeGICJ>)VNe}{e5h|%<;1HSy-I}PB1Tt03l~QR^5zoXlszOE;HQY$hsbK_ZT!siE z=86CJrOQWD6^$MiOrn2jtYPrj!p(Fho)W0WwBSARD z#*)izShLFR@@pL`oWbhmTU~0k!_Bt4-MFyNMWl@ci9QJ9gX^XUy)+zxruVbmcD6qxljyNNtDo7(Azp=*$}x7C!))S^__z>);&l_n zG^|JN5IaLMX-I}@n9}&6RAFd#d4h{Z#k=KVrkAghsYzB2l1UROXfk*cID8tcVhIwc z1hrVqwuF5lv&>H7_=I+|kth+$P$8MY?2aHYYOCJq69$E5CrU}A!S!qpL8fQwm4*ll zsZj75Ib_=qIE+upbh^YI8U}7)YUvb;JH*iNnMi|%E)iI`WD-e{;IMN|Vj95>*Xx7? zznnmzc{ITYhmX-&IAJ$AL837?frCwM!iycQpomIBqrFkdJU93q5R1J-NsLGnPuIHW?N zvEe-uj~u5>P&iB$n@WU8&Mp-`Y#m=+Jp_8 z5g-xM(GUR~n#EFy!x1{pujG)$A{ADNCQ+M2mWin71i8$Oz?uDQug4(c(1G8$bWVU; zSiD1o_Y=%Wo|S>L^Z9IyPfDaITw$_+sKj#FL>Zm!H6SE}pn&K1N#uTT;j~nDM;bM~BNf3d^5>z^9(x5-U4LB?^of@e|5L_s`!yx5R ztu&8Tp>M)N0Z)$cLt?SYsg#)*K@Q#Pb|WlQh$c7N?Q9prgYv@Fz};-v1iz1u08lB{ z2@w$)($7&y=}Hkw#PZ5*Y6T(`wl;D|w(;2}wbm^111R7tp-2LfBGxb>BFL;pnRsZd zN={b>lr$4VCqjz>CrqykD++UQU@6*}o`BrWcB&%~m!i-J8VO2?Of%9i5qa!Lq*=!i zAc!nK-Rkgh%t~q~0j^>?EF6kaA>|0I42#6+4qGBTtkI6pOGHwOSuO=mD&;%EG_xq! zq(eDh6vnvF3>U_YgMt(;73skS5gMV)EOYuKJ`NmbwX*~)ii)RUyNx;Ws>9RW^&4KRItyVYXXvyco|&Cmd+lDuxQ9g|=s3GmF2jKYE| zJ!pY7BJ?S}c$vhF@}qeH7eej`^Lz|FkFCV}7)-QFLuP|G6d=&qE}hn3=XsEg1Tkfu$SyY&Q}KSHgX2i<@Dy zM+k1UAwlcHIuL$EBS9Gx?E%5Vn4x2x~ zVuR$t%jG+99-V~6qH(2meb{04a?C1+(MsZp4I*}eN$lnk>1?MW?BHRWL^eb$Sc@f~ z;?O*7Ho+*@Nx4{^P(x?gs7wt;$P3CnXph-LC+Y~uFiz-$Ja(s?Zj{S>3^ysD($V}b zqunEhWOAywkwdgfW5X#OL>A2|;wQlAMyygMi6}Uhh+7a*do>yfOT(0V)Et9YC`3~v z1ToF8VJXxiDT*lMBdJVC#R{^`h6n?}X(TAbOTrGF1T0E9GQjtQ5>!g35}}m=q3BW) z*6BwQIcAe9tPGhczAy=ovhYY`0gG)2+YlD91~2gt@u;xT?+~kmjRY+c5sN7#2ZS`E zT4g30aRvsT>Sr@;0VIh-k%STwe2xH|7T_=-nbRA9TlE}}UAQ88$m(Sf!VI{LV!&wi z7y;W5`Nb$4dWaB`6J$1xNbZ%$&3uHG&7r%L;V{`nHj;fLE>_`-(8zQpnMoA|i9Ekc zE8&w^8iAZhf-o4l!$1gn1rW>ENKlJIi=iMu1URs-HY{K=@f?&Sh$jRZ!lRPrfPj-j zEW3oyz_Xx`UjWw;Ls|xns6jLM7%kQ;cd8{=t4|EMto#WU(79F;ED6oW)>J$;`SCTwxF3v~U;B;Bwd^LY>@ry&Ix>M)N*X#xilLMjnDgIt7zEik(AW*b{cQ}D1_0$%MJlGP40CY^nmxZY|E{l;O2-Jz&AlbrB^9To_45 z`AK3S#3$$xYJr)pu|OibCx8J_6Ctn$ChGl$Q@h- z%g<9A0yeBh>9&jYa-xvoV2E`JEYs&vsX02ehAT9n9iB)8Wi``;BB3Ybv!ew*9{@(4 zm|%s2s$Gw0)S*`=Ls&!+H_fAy6I=vhNSwgIgye{@pT)%MIAGCZ^dMnZAO#Y%0MAF! zc29|XgL^zAUC3mPzYMe{2rJ2-nOn~8|%bb`-f>tS;%0TKuc(Ox5 zlX5%`tU*EdMc`Ve#w}xdBoUe#CFR-J0*jh2N63XHw1w#udM!+~3=Nl0Khad9xLGFiF{0r&EAAIfK{1Xe7u|;uKC@#HIC^s3sNGrSgbH3OSu6 zGmFF=RaodFQG_IEkZpq;6tRGZ47qhd8bTlr@cc$JS4~DCASv2n)JN=OTN6Pt86Y)F z>EfBy4l6}&N0MkVjxfNKgYK3}FVg7cYPKxE@ga3+9-O8Nn^{_v4N0}~{0aukYEomx zJibg|1U`pqBh6eI}F4!S||F*dX1HV_}^Lc*u))NR>REUnf9vKp693m`F9Qk)RswzzQQ~vcgKW z`TTSo*~tURushIDypqT!8yW(|YmmYUX^{dASbkpT|Se^{wkottk1Sdz&4*{RX z3y?CFm@Aa?&>WJ*AMv6fSIFp9H{qcNL!n8L2#114MVb>l7BNrg^ND;2r4xa4@fdug zQYYhxY$i|;lO+)eR%zjoB{DpVY!&+H6a`o4B8Ny+lN*g9H)XJlkd7-8GHjd(5d@Nm zUg0swHFAQ{A{L`9evcca*0Wq3l`28X5ri}tvcN!-8Yoyd!7CA?tz5nbCH0~lMxP<% zYN}I0T%Sn+0Jz!Kbj`9B>B< z6Je->>?XHCMYwD&mcgLf3v4oVY< zfYa+xgs`0G(&8){G?l6qqrqTuQ}!j6sDwU7kSL{+L88l*yL@4f!e#c5b!0Qa=OFk4 z9HiUAgsg5w#M00UanpTXqLE`Ks3X*nAP6cblg5CThj{F!%t59?`CLw&39gabgm4Ae zpF=qu2seQr2+GY)vz^StYvq~zBO~#HB!&r;Cq51W1wfQ+QsGcmsgxGc!W99rpJQgx zD0Y$3Y|(~&WVr~3^q_<8Mz^s;b_jTp*g^;zYr_AZ}@j<&! zswGKv2DuM|W@_9b1;25lvxM={`z*M?JY&Js@a_Y@$m0KKgVWo-) zC?s8a6rLc`nAz+`k+A`bGRXHBC^!Mqr8I?@E(Dzh)?$d@k{hsC9M^6MqL2Z%N6m6m z)GnHaZDt@Kxlg3wG2K!)6AG}Ycm%^FA$giOME^-g^$!hJo8Ajy6mADj4R^^JY8pr( z0JRO7MpSSWQhfqs(^DW4#og5I6NhZT2}LdejsbUBh*X0NavPWkxLYd_V|5TdfKkKw za;1QRF`x~UAcRnR@BlhB%m~LWVR%5VQGrI9AddsbYH}Md64L8^L^&1-h5d548e+jE z0i>Q`a0GoS4ByArDnN+z7?3m~he*-86d1k$sjw+fE~^r-y3PUJ9 z+XYHEE{+44{KQ710A27^kjd?Za3U8`0e2GoD!3Q!lMs;#Bwyjy22gG!fO-;KD1ggU z1{p{qNhB8B47nkm!4tr7hzz_=U?M6IO$6Z%F=(Qh5fLKY;Dm#|0#$(%;P@B{&O?-8 z^cI`}FK`hACJda$l__0Lkd}m95Dx7@_ zQDi413m`l=pfAW2gnRWCxda!$Aq5tU3`hZ&qfu@UFqH}?NR+}(3y~EdkenKb62OUw za<;>1kO`z9$^``?BEONK!+?u~Fa!Y#Cq)C);&C)Y3gluF;GmTVe2zs>1`sBkfr5nd z=tKt6F9;!AVT?AQ2dz7U-hg33LC7sY28eX13BC+OF$NN&-Fg#IO4I=9RUrGv2OK!0 zL5kH7;C?t8L_8*hl`+B+D8YdPr8kj?GvN4e58Q*W5cLiU2JUcaLEpQPLnRV4W+R+` zZ@oY$VO-pA8=FnLmVeyWY}%Q(ng4zhx9RTR@9j2H8uO2v!T*(e`&{n7y-9DkLw~lx z@AZlFznzfy({lmdhCOKL(-t%s{@WpmUv{6l+%XiV*57c@fk_$f_nUQNkR(b1*fXP$ zF&H!wNg*dtsMrKFl0rn&&}bx;)TolbpZA-78+Nq8Gp57qQ#-W!KhUK9do+JH?;mJV z^d56SucLXK_W$4}`?y9GjWPd$84MMH#$u3Yzzpio1^kD3zcJIGx2DIsKj;ll#DNHa z!IEeRjbw>56d{3tAfs^z6d8{rjD!AR-fv`oRqAg-esaz~ceSRw;Is@la|8W)=;qU$ zUk?lXFZuEt+y6_*Hxd2oCI6Ii|5Ddq>iVZN@J|i?%e($k*FU9!e`@ew-t}Lmu6Dm2 z+toY3S=}Hwlp8IFbs{w!@P+AqYB>BGy$kym90dLkU(J8JTKszbG8-H|22a7yuMhsC zU!p(3y0n3nv`T5wtP8Apmu4-xG>iV+Y$IT>b@LX@z^`Af&)T$Z)v|4icFmi?+JoDz zTYxuzdIkfJT71^LO|!PJcI`ihHE-6UWwRD78hB~mx~;!i^A;_;wCdV=z-QeC!rCCa zlTd?tv=t_Np&pFxDRNKmrTP9V@`in{hG0DHdLPfj4t*fTeN(x3BSqq+((rWcFsV%5 zXa9+74`1tM_?CRD-*n*Q^^)NP!yEqy;ur>#rBJGjCbK0F422^zXU+a@&fKNTmaka3 zYW3zVTeofBk(P1rQ0CzySwEjTedg@B^EYnh7u>pi=h5RQPoF)1@%G*Ost?s4f#A(r zG;i6mMXQ!ATefc9$_`lW(sDr8R>;<{f!#>L&rs^_?luY22Yuf|v_bO)y6wKf$MeXZ zS3MtmgZXN)xR;hvxpDsxY;OsUsvFwQJ7WpW*TAn-@0a1fo!Q9no8f(yZqE4m#-q2( zwj4Zl^YOc3bh&{Ln6-TCq0{+K-W!9nS8U5XQ}DEkp)iHMTenwCDnhhZUC;XH`wED$gm%sY&-&B)=>& zTPvP+-Y!m0s+#=rUR^;}pJTWv>^9|XZ2gdRyP~jrPg|AK-+SxVRg8$j9-cdta>v$p z)ZO?;TbxlCwj>Hm?R4mVRq^C44x!pwVpnP8PHUY1*1kXk=(%-tEq(;_Rf{u?92U#$NX>i=hh##! zkU#UYV;|o^jcM8^62Incf8F@+h?fl+_g|K4v|Rr3WA(0&Gsk?w&kZ|EoOMh2Bv59U zUtFmxcTIkjVvK)Y{yM#W21MaYU)U?_M@7n!}{ABs*;+kRWW<+5>U%$D&rtp5w+4{>V*NYw})+%vVYPd7D zWE*Rj?vBEq98IZwkYCuZ=H-pwO8oyD0moOo=z?ZnyuMaGH1%{8*7dAd<1YRgZr&b+ zeW$l#>(-&>l@CrW-``_0uJUBR9kI-79aBM5;fJ_i+7|y=nO=WeZ;Y?%5lD=}dPZRn z==CMFk%qR&&5D1$P|Kf}_-Z%w1pj8x+3HzoW_ojm}^0?{Ng9T%Fq<_cwue92lMN(DN}cqUwVFT z>>10{HET@vqT@L)c8u8HYr*~;dBKroCq;36`*t1G>%4x%(0wBR`NA5|!m&XA$p~}4 zTXlI9R>;rU5QWW&!tVF1{}4NGGFVn0a~kM3w21ysFR%q?CZ>!}ecFCmY2562XQMDg zzuKK=9%Zg8_%VI+8t7Z3RG4oZW`42baf_C17n%lx!_J=pqbBN7{*$Wt)H3@geD9pN zIyDL#oBHJV&De|aPq)e5UAesQ)t$Jc{9JUsu(acxgGl1UaiQJ&4uH0#b8Yq^+7RPk{}(m&G1=PTw7=Q@r(6LaoG|IG0Kam8;}fFPL~+XvCxzN7NYhDc&b zef||grw5nqdltVaOT9_xkUup~RKoL)nssaC$WCJitt7nYHN5_b>7KL0u+u9;Jn5nmZ!+dK*@Zc%A%z*Twf|9)KkvxVbJ7#_cj{`%;TXz!@+|=BE-NOH3 z)$weRw! z-Li3e;Kuftb4t5o)21^e$dw-n4>tdJ=Bg;+dvXWH_ow=_5_E3{9DG}6V89-+>xe&` zF8n}zgLjpc?qRoDe|)O2y4$MbPZ2k7Dvq9xLC$;8_ratE=O6BuppH*icuu=>3iHQx zJ(=odJ@RJ2rh&Zd$CTQEHNNs`FKbWLPcFBY9DZ{*)1yB&@TNo`?DXWqBlPWy%Sh$P zyIN13H32S^CMuCF-Z2N^KQt`g=W)M>)rJh?;N6DM*>-OI#8~2Zb|C%yapl0r%3%0#yYi~r*mZ?*#v6F6hkLhd-oNj-_jrJ!$Ic1+%<0#8HP?dk~$GHavtN^iQwT*Z( z&^Nre$2Pio`H-%#`RQP}CDrbW!j|Gs#Xm;RD67k<^bWeKY}cvug01xOYsbx^50mZ+ zdrUsFsSu+O&Ro(l<51ew6IaVE>&Kiu(7V@wR=!2Rs2S^jzp~C>s2=XDtG<=;YWuOx z=PK&TvNJEUW*<#X(hl>)ob(uiSbsmcrK8#O^!nF75qOevy_vXIMyPI-3CjDbxL2imYw&Gpgf_g_z{gsrTbE|7_ zCDy)nL}B%3a%%p-NqTbqo%rIHH8HhCmZFO9`ckKTO2V#g%R5p^%P&8+uCV&!jnnrJ zJvIB^C*i;Ue#r7M9cY6B8dUEQw+C%oXqnS>`NFk@X@iLE^(}8D#nfoC6t?6?uiwAR zIy>M_Y1M_cPZoWXK<#lu#CSApWWvVf14u(wwk+8q>pEC|^}>M7))8H&!KN_l*4n21 z1Gn!7{ej&b@T&KD^-);jt>Pyyi%Y9&*-_Z~OEaUeD?=)xu+pUB-1{5f_pDz%)>(bh zABCyLR8^F1s;kf4mwTz;PYjcra-3QU)nNj~Z)Ux$&+u3LUuc%3x^LmrH|MgWu$q2V z6(5G>03B^zc(>kFl#;(Nr>4dfg{7pII^Xy!-Y3<61@!j>5PZ5M7=^u$t0;aYOak7^ z?VDNqAS(*n-8bp~JFU0Rkr(%67p*^&lIM7{v8cFc{ezS<$(LtC^xF6jS1My4tm8jC z{G#(vV34-kGgBuWrAzmWj(_Czh1(adPpjYTKssWn4?f)KDtT4w>~=DJULU!9=2w{f z)m*bs8pwRV;?A*UC!cRIPn2am{A|OsiSNfhH-6d+{k1#sr#JGMrEe$Jf07=ySvV07}nu|M#qw z1#9CdSl=tD`0(O(D>d7{`CG5H16F;(C~V#Cr!k0eUr)P&WPe#Xva-+5FM7p-KXFxi zhW67pBMAKtBzbqg`_rcIkgDX@clstB@{TP?aqQ0A_dZa#$+qx8QFbnI{@n@2R;hHx zy=?TlOH!ex(q|q#cdPO-rPbHDgFr?`O|AbDet&4))1D{6Ivk!1V7|1VAyY%7ruN;I zPssfs$-iITVTHDITu^kOHou-_kiBD(OZcUaNp5d;rYo9&mtb1~SaaH~P za?S3-zVIVxDJf&_$RRDVUiA&HxcKPHNsHGl?``zS{Gzm z_9ZucWpUrsqk;6q(%m_%o44y8OExD=iS}` z72L!J;%kT1R1fhR9Mf`-9GmKY!aKHZW5hi4<$~Eo(@uSB9=>wqg4T~;jNe}zI> zto8kcZ5q;uPo1X3Vf-hcq;|{oU|%bxzI#e}{F!u+xJ;W|2T~5{`ax0H+N#&zZ`K0S#r!)HucOR)ca;+w1uU9c{bBD~u%lEXg3=;KT z1aA)ftyNY@efJr)i)+MVzbL#LJAO=6&qb>(imsdXz3&|KJ!um+;iwyvy)83xQd_oi z0BwG?E^=yNGwq=MQ~01@AFwa8{B&vEj+w=4tvR^$>e6ZFXsh~WAAOH2Iayw`WBr-4 zjD^|l5AW@H+9C(e*_(wXUZV%T=A<;~bs zU-|sg@y@b~t^0j5WL-9V&85d_!;vd@*}rTvS^0E1VbkB(hK>CZ9Z!c1)WT7+?OAZQ7aD(YmG_kAhEMsabYi)6Q2yAOc&Xxh zW~)vuG=W2q&Qbd0Z*#u3L|DVOE!eXs?fg$*5$J!v2!2dIIJRJO1d5$|A?S3!OXNL# zb8v}vZ+P^L(otIq4%c2zSlvY|B+uPdbYv=ZJZ*nF@1xKLqn|H?c^k@;@|@CRhs!SQ zrXGuIN-14;`8IL*PIKkmlj%WO`-t5(lZM-)>M+0igcjb^TWoD*`z&40dpMCP1RbN6*<3v76D2k7il63;oa(3r!0*SvYNqcYs? z{FQyvYxvD>*Y%u-?W3NezY+|bd|B8xZtS!Z(=p42w@2tZ`liGcWF4M%@W}i8w?941 zlwB?)#N9sl=7wA6N?KyqZ$}^g^744=O6xx5{7F<<{2=heMmo z%Zh6FQ_3zLt1OFX`n+eO#2y`iEbnTVwcl<)HOZ&uA+J+ebt zA47}BWX`WNJW2v`+w&5yoT(mHyWq0OzGr`R*|ka|s_V#JwJF9umCwu`tcW}K^E_>F z&Y|=PCnqi1v3lU%>px!^cWOz(p^TdV|FW*%5a)}J%bDY_l7oU%LavxUg3lN7$Bf*2 zrDYzPjzQCoFI&1y-+xAfi4DILH-6CEPs*+8R$)qcnDU`j6n5;hhXo)m97|6I;_R$g z5_@@lwS4N|E(&k{%dI(ZREu51HsgZD<;3EPkMjv>d8Q7Nk!3$+jrZ$#dY_J@6{z` zxstA%jAnoLnjdhF@A_|##PQavzTeY!tz%R}>v~i}1y=#Sd@6lzs;4fk_a&Y``EYb_ z_`$I+pHwl*);^fNI&Fo^wmW_0`M~M-cW>U{5B4iAojeek-Q`%-_|HbQKTX;UP<-5oo_1*W?F2dIbRyd{{3)@F@m^op@DPc}z#Ur}v{-W$%Q*Jueoqo}G=ONQl zw8yY({;(s1VSJ#?J@GrUooU&*22D-O*0Io(_r-}%ZXAl8>fc&%x8|woar4cNhcn#v z`Lp<4WOv%v*{m9(KfaL#|o8A%m}z*EWFLxtQ2h11p+V_Iu3dMGVb}Is(Xd0NNNwvyOrB6mD!fdd#xJ5fDZ^yK~-y+g8g4#Nb#3{ z3;j;7c>rh)#Shniq()(6kUL$f1vl7<_xR<`kE0vv4R`(bDLGM?|9yN>VmZHRNzH}2 zM>WN_Yhn-9q(hr%dw`*Q>QB~cK5fVA2_-A2kC2LWWfk>Ho)>NnEVM1`9CK&w&V7-p z0jthj=L}DS?~^2D#(lT_Y~FFfROiSM&(fa{?$jKo4Lh zJ_;LTzp!-c$&zD%2j;XFD@TeQo#s?iGb%0Y5iP_&6vYjibwaqiaN;Gw*X`Hb>Ka#& zmFbvO4X=FpxZlOpz4e5kQ&zS7d|>YIV64o!AUkK@jUM7bSta``rl;>-(tbH9rtPp7 z`R%r^>OC2&Z@{*goZmS$HNP{+RlB~(Zkx4u&EuYDR15Pb-4yPduxm>B<%~6ZS0v>< z+Hz7_`sB8|+)y~fFM85H!bC=4_A0YzK{wi$J;3_Un+ra!cD@rk{20>B?QpEh+Akg-52|Eh=~&vni4izvA@#%ka zl+E{Qo*h`@^_Kl`uyvB7yu)bL+7Xqv=MS;=5K2Lp?sfP5yY@;*Bfn?Iw3hXs(GW+k z03RO&N@vZxDskDkLv>|wRRwMAOx>$|CLxpwb|TPj++ zKIZS)pF<7!BX&+nIk7l*alFcC!96Lde!0)1Y-djEzj#yn$AV*HjV-TmUVgcNpA|_@ z%UphY=gd{J7czGCBhEaJZp4dODXH;Spla6Ct(QyQXL6^$cy62Z^de{JVS8q-C37h2 z=^N?d>@#1)x1Uv>lT&bHhq#?3wbm{YT3r?0) zb@so1s(4%90$SY5Ci7-wmfw6?JD!g)Ti~o;!*B>e9RdyP0>%VYI| z@6gY@(|fH=Fa}|CDYQ2)}pW07`QL*#U06yLm$u>nL($uqG)G9l40n=_>uF5 zBn2P4K5RBU?6a~rsr|WzllPRlE2_^&VZ+ld?mbDZJv;u3uhiSut+^z94ei|S9?wb{ z`u)O4rbm4L)Y#C%Imb#)jXFKc&Ia(bYvJNO%a1Kzoi%Igx{wvfwqxt|nd^E#e>(HzrVS&`lUgiI}RBgK|OpaSb`lpbQh7l6No75TbWY5qPBVU z2HDE>^J7PSBxh!hTw0;Xj%|_Se%p8cu#)dCjnb{PALhj*Q|TS1tXQ`11g8J2{@*l! zUHB7dHiS58L8LbK!;1XuYq`5?dIC6@H2v1fBm0(C$IZ-1IpYrmx;%s^PtLkybw`||jYgaNmpx@VBdSnolIr3hcqAiuQifydL0H(mvigoeh zk~=x#XRJpD-ruWUQ%N7Y{&Fqokk2}P|5fq8$n4=OFFrx7B_AE;KD}D7C=MBPbime^AGkc72Q?k2u?XSG#p6W9n2PfW{P-S^nA3JnqTu%P7 zlRZ+;IW8U=I5%^!X~$Plvi8&>r8xrh!5c}n^RSNhlMtA0rA9EH8z@-ZL({kUuCA4D|CgXMzm9y?7%^vmr z)|1zDo*NmjB}c98xZb3!;OZ4eqZtsrarq&$!$8S3d1$fHL0 z9Q7vGaWg+*%Q}1dwe??B9UD9ybG6GCN&2_PQd*6*PG7Ki%bbMtk9~XR6l8rF8PsqF zVOZi~Vx+@ovZ-&Mx4x{`eXgnOo2ooAX6&HFY32?>q4rtLNyodwcSqXIX|-|N0#%sV zr^g-$B#j47Vx(QDLc^ms01afuZY@Fn6Tjv% zG&>6WD5`_N|ItYYaQMT%MBtT1%a#qtYcGA+v}*T^m{k`qG3QoyyFu);-Bsi5Jn3+- zlS~!iKEUiNaVa`X;`()u+Uzhrf4o|zC<*j?S!6l$_x}Ot_hIW_-75S&jTg^TmiDZ> zh_4qp>&@#v#?=+Cf0LPVBfb80T*vU(`oU4yrQGT$Z0DA$yz*JU=C*&nHU264Rqdz+ zHOc<1<;AsemfWhYsm1L|qGTfO zCRUbDi7#W%1?OCP#ntt&6~AU21Pk1hTQcuPUeEW|`lTr|wxt^;CI0E&-m|4C$Sdb1> z1{yFq&szWWtZIG~7Cv4Xg+*c13QZJN5QPD6w4w`&FKmkhI=>;M*UR5dTX3+l=Jkxn zbVIEoId8`){gyi@6Sev3Ok6ZNo>2X z>Sm|J_|)6CKaM-agU2Wnk(;*e+O=@yX6LZ0yBrN?N%E`50}*!fpQP7bjBIL z2h>d3R5&*67;C}KYtz`w$r;4@yQMGYPoqwToTAJ9cP{CCs50+_{_EE|MQS4wmuVQCmNAb<1q3$ozE|ecVX4TcQK9sPRwlN*rdf}%$ z(yFPaD<^)LH+$jSC8Lh)yq_mryuC8M5Cq~w{a&p9K#4znH2L;6-mB^(_r_+2nH@39 z{Bh#F?|V+NuO2gN!JYk!*Ub(t%sc;R!(5qU?uNACeW(d#&3op>f+*vCl2|)%cF>-) zVOdd1%Va4Y{Bcc(|n#aV9d+&li7xxKWDja!eu&%d^!Cbv`M#~Ko!%)6Y9{!E@9w?7m9wdJBK%HncT1Q1 zn>QEM`Ngt#N5&N>gn8VKl3Q*19q22cGkn7I5fz&TfI{YaiOpfp&I#n-yElQ3pI3O7 zAGlvRc8$$3uCIMOyZvEYdE}e*@R^q$yvC%C8cpuG?DS1)+_*|KeWVCJ{I^6;zU|GJ zdTrgH+CAfkJ3B9ly98B6(v&@I?-G@QM+453k1r~%T{}ujYoSw*`0ATo0&#}KE7QI1 z*x}s#Q`fEtOIBSYd=~EwORC=2& zvmAC^5ck<*ymWYf_gC!hqBiI?XE2M-KQL_Fy7W2-d3%Fk_v=Leth6O<7p{L4fBEw9 zE9J!H!}ovKv*Jb0kqp<$rVt|)S)*^9ubp%^dt=9$x9ehW-v}Q` ziYe*vn#qoFT;93yA{}S#{oP41Z`sWlO;>mCNbi1@UJujOj#v+%IIYvoq8RT~`+_4m zfn;aQk-+kbpB_}v@(V+j!#iJ9*Bv>Gd|PcB;_NZ0#kd|T3-_S*48OmuEpy=aikOBK z8V};?%SZ2O^ImS>xBgXH-&2dv$wVcUw*da+c7X4E`7&+b=8YRRZr<>rMkrM(rGm=i zTsF6*?KPux`*)ic!@w%cdtPsdz1-qy=9}}?`o;B=63^3PZ+DNv`c64(K=@bnJDQ$$ z`*wNt$pXH*{ZxkMIs?JN749Z9*lpf`_zH|58Oa|sg&WzhGy=TJy9@cJf`%&V@?c|SF zKyS@a7KMFF@!1X6_oOV0#bqZtoN19UbM`IGxw|hg>+PNJ{BH&w96dfOTQlVNMSIqm z9hl9_zQ6u>a;vXSVSa7{D5##j<)6)c0-DEd=T$!z-&nhbx^lMun7Hi^WyuRB)=i$U z=@{*uewy*l&?)a`P0pI>etYEn>Ty#mHTY4Zz8cSuNo0T3n${6nPy!m(={wh-DS!7e zbxF>Eo3R73W}|CUcGav+16xO4~(fF!4=NrsMD*nK&dLw+ne>|yjZ1tXC zEckP+w%g7*U3^C2@ky;mWM?Gt2X#KjYLU4EHEZ=Ao4wt2Ds#fJov&`R8!2u1hTeTi z%UMo;`Jze8N_6#wloOk3R-j+EKTuUSI{!oUp(<>0pLxm7Id9f@OSVbRezTfYHuLHv z>D;Lc49^R1)lR&+dlH59<_3yd>%@#0yr3BL=dave|LQwvVRuD~&(yW0Es5ya04oM^NVq;Zf`)hazdOQ zy1r3G{_1qw_pkQZInfmd4XY71c1p zI@kIe?4?E^PM;~!Eu zrQnCL61Q!vg2$6U=Sh@mIO{0q`m|8B#83mvi=weS{-EV#!ULZpABUL%)n`TT7uZNX zQcgpmEM-pa{b7?B_pEbY#a`c@h9#m{0EKn*=zzJceR=NGMAz3(pGY=(d?K$uQ&t-x z24bG9_w7->lrqdNIz4gpf_&jA_orW6W}auB;T_x!f@^81DdQ>26T6m-PT>wR9sZe8 z5cJsA&Y%Y8du;}%ZZSojCM%SBNQUxwtuNh}Czv~~*+#xmwc{o{5zyCt)nxJUWsQwx zgnL;W@Zg(j)C4jnKiG|NZ&CJTkU*;EytS`bZx-?5{#>i6wyA=^ifP=wf$lynkzQjj zM0(9x_jT)wJTuole#~n5-UO6Ot(-lOk1)K`77VVVWrQN@ACuGSrBZKbkA&W%3p@1; z=oq}Go0gONt1y-R6COz+h1&Y+#yZ0N=Et4G`C>wHYJJvBbs_agX00rD&x5-Efe@NC zyrMc?Nnh?AszL8k6Q_O8EZJ6h3f(M||FSqg`-_Wjj#;Cze(YF<$=i=klDFGe$G+$0 z-3Yqy!ZcD3q}8SLx3J0I?Ys>_Ugy(H@%{1 zX~dL6^b4s1QchnSuSR8Ni*-9)S!$A8aURwDjTgH<00vb){3M#6d*Rf$-GR=qMpspZ9SCtrPqi#M!aBtSlUKB zKew$3;D!O^(tthATMdmP>DVFuc-{|yReHD8aL|7_edH;2^*(>R`>Ln2k|TRsb9eR$ zy-SHoTZujse! zIIVezX7G5u+too^2w|arqvWT@NP1X}gfAdOYb>1zR@ARgGGCnsXV_CX2D~5!Q$;Yu zF_XH}>{_ZQ{oET}F*|HG(s-RnUAgfE*JKPZ#jKg!TQ27xZkn)Rtgv5Bup=B&9U7Ft zwr$fRz}Q`v5bF=-MwOD_qJO&`&i2I@FM*}OhczE^;M3vl<0bBSZUxFmdfJ@s-@I}J zzT!5Xh=CnuKlhz5(3|R>7YO&cVhl+EJyqIfUrLKw@5>D~`q^x917}0AX!$}yRLNWq zmA^Q73$qW7m_L=9`sRQ^TV+LMmDPt=`$eLRUSy@7@5-469u;cI%NhIX%85Hqvuk|+ z;QiRKJ?zmXo%0GQsf)Mlg${=|ee1A`YoC2!{_T@iO!IW!YrotK*Xx-Pe8iBDAYiW> zFqRkSm6@Lt+AyJUiGM`Sy0YTSf;cmX=ILmhZSJYBQ*`WX#ufc5c4_TSd08#1>Pdaw z`Ua-b7Zc(_RNgha6F;-goLwJZBJvr9q1PfcJ`!!=2kRP8fw|!Y8`hFm?uE6EnM!lA z{`2>)qO92kk<}DY{}rnWvwKejt{q<%w10ZzOOu`aDfxiXhxb5<;V9R->*;E#I}4;# zCYX`OVWSB`am&RCLw4cShYI%S9QNY$=<^9PcYGOAEa|i#W0A?f&;$OwhsS6-C*wP8 zQg%XIX~e3M-z=X9SYk7aA9 zsa!p@`N*c@TFOx%nBG1b7%fxOc+Elxaj)C0yjyVF@^xNuZ&mUQ{yCGf2Oht40o9({eeU{!|xBK~%{ZJ)zM1wR|Jg0|k7CH5og`471J3^SI9 zyRnBrX_6l+1!^3JIgo+dG%20+Y2^>@XU3|S2;4mck=bGMV1-g6zHB%9g7`=#tIF5; zTHl4ZpbvG~Q8-fNgQe)8p;}no5bG%W`ez)+_k;5>?j+KrwHb;+{0tjXvSdWG8-cXFT-TuxNn zIxu`uZ#lu$6!r4LDQ9^*_y}D`j$J~p{gtP^%}Pyrc4|z%aGYn5mQ}WUGFZm8Fz~h)U3!iy^pL!mrgnP>x!-W2qJSzUToT_9+od}i>rpRU~ z&o9MQ#>uchxN;%dlwBJOBn`EK{E~DVS2223suRNk7oz~0fO;O61O(B53kH7hTNdk> z@0u0Lw<#luHeY#uMQMrJT^nCWw<(WHN!80pS$UN$qcPIqT%cXgT_;@4E-G+_{W2WY zuTb_4LYkU@4#dr02-;lZ^$Wa8v<}T%777a(wNfI=+$am0_0>VG1S3%^5>tNG?qnI9 z@{AfrNbyO_m8NiYb_fAn849&KOffQwqY4#sA_}>(tbX!3k8pPLl-ye5i9gw{u|bSs1o{GU z&aoHXj++{vqVbP)iJ@f_uMh-u2admr7TCAA($HL(of_ye@)AUQ zm+V!=Uus=iG17;;XjiwVr_j6vQ1m#OFm`OyuSQZ8>$tlAL}1BmyUUi*7o+HxBNwO6 zBkHrBW=F}>(n(4utgglOn#@uRwK-4H_J=Cdt^rH(R2hJ+Jwr!7VpbTYPi}aB@I{g1 zPPj=f`sdzRK37Y);B%P2%2`zX2uUC-p-q#!D4$2u%;Z93=;&VAH!z>oDBeyu_1e}C z0zpTimUWO(8vhP=PBNyTBr2D6Wu?e|xMU2E*qgBX$zg)6cINpDHSL4Xujud7*`;-P z<9d$&wpHUra3*1Z@$a6`+R&jX20q_mbMl})pQhW&t>fKXUk?Wi6|0>&@B!-{Xjhm| zS8DNUs3~f#*VdOCGVAARG8fx@B7faHIll?TT@-Vy4v0E;u#Xtv5sa{_Xi&2E<*ijh zZ4ju4p-PILkEFz|>)fH`b0|IoFaV2ZNJ1$nj-L&((01Y7WQq%6;k& z5Bb$(=MaYLi?wX^?Vj6zo9Hp=@2pakbo%J9*Zk(^0hI%iwLpQYwplhH&q^evU^@#D zjx2a!C+Sj4%Xt0j+3yp>hf3C4oax9JjJG51(1jXzJ9LrIr(J*&#V_fLJ+Mf4-zjF<>pMu9gni6xKD1bV*$uG<$}J8;t=EzQd*iTCuj! z_m|d!#_I(!icH8&<#5h%fz;^~Ep4sOYo_5cLwNN7CZW!|)Ms_ExbQJyfay%uzxydv zSX9u}*+EWanWgY<>Aag>UwmXq%eMidYUDNFb_=sF^}IN7##sVuN`j`m!v^^6Mk5wGDH>Y$HjxhgXcQW2Nlsignxn0E=lbiH zs3DzyvP_HUk z_k1Dy^Nbz)4iPsdoa7Le2{D2(p;lL+`p+u1OAPx2}gwRD=E7n-h)3 zHGd$GKYF=1e^uj#_5Vxe*A7h<1S?#i7?GoBzQYqD0sJ$rmRnm~0f9&&^R#|-wc#M~ z(WT-emJd+AH<7Ih2|Ruyf^j#36vb`24cGI?e3FjB--;oCQ2_x!Em(IJtqp;n7fn9s!)jI~4q@%0ldp4`=-Rlm&*DwwIv$(_Qd_}jWweaAw zSL9OXwTFc%nS?6y2a?leM<-F$GKn_cmPR+HKrpHi3bf zSThUfEyLa=fyW`~pUrB{yAKZf^;ecYE>yG1d%D#3#i z!{>+0PHnas8UDzqh6BqviT;;cQ2zVU&cA@`zdN1&`>$B)GhX9Y@8HSt=#3kcUeYQ9 zbez_)veA^-A0BNJ>*6c~$cC79vJIGrO8?Y>{_Z6B&wnsrG>2v;D5C&2UNYZdd;c<+ zYDWPXW$tt*{%1LoI_1NSM3c?2Oc;$rD|}3%7yi$}Yr;mste!W(^zOGTS>HdAeiXWZ z8;`U~85>%lHf5jl3||5NnZ*!L50GDE{`XrXKcx-;e~w&*F#r|W!O3J2+aSF6uOo@G z0gRP^Cza@Q&W$+&_P6b<3*BYgEjWOJ52?oPsrNdFbSfi6N}^*0YF@mF^a;zq>#L+J zVQj6gLN-S*tF9L2Pu~mz-qtculbZew`^q`q#iGRIL&8?{$0Bj8n#8hbS(`)FVt|^HbgDf5Z&j7}R&Wov4>7GElaR zn8kTl#wH}hMe&+PzqOi*ISX2{eBLXANYh{mTg#J8P{(YLX!X+?Cw$DcP>TeZfVZvY zw799~hoF0bs43EFM+u>Lm?r7(c0g1AeK|itCT27~$-|9spT8sr50&0QM|CCxza39= zWxy6Eq6CaJF^Pz(sN6183@zt1xAnPUFsY~U*q7ww5>+{X5pz9#{hj0Y3^xK_SoWLO zI_JN&00Cx^{zmQEMpWw-GHoPfHEt0;r&3nEazwV=ACw30sOo%paIsw^H_dPJ>sn5U zx^IoLNUvCAQQ}A9`++Z}hFcl#1|MIv2{-BJp9E)R1!IVq&Z4|$#K{HOi(P~`&zLD{ zJb_S=UG|`V;J~ZrM32Ol$vW}dZ5H<0sj9b3Nrz(oh|qf)6LpyT?)9r2wG>-DC|FKM z0oZ*NB($Rp3PiFFP0(jle27m?? z&go&h*qXbhiv8)fx-t#ZeBp#N*y(*&Yhzbn>x}ffuVQ&F-3%!8DZ~90`irl^CY|BD zN_bcFIfEx;FKMj#KLK!^yEXx*tSXp_4 zomRg-G<9sOps4v1f%#ZR|AWHAJ0}noL;Nn`r|Z;YeJ;m8xlTKbe|Nq{;>UDioBHj@ zgX6|%pmW1Si9Ufl>xBGTdX_)j_0ATDg%4_|*^?PxdC#oF0Q2R}{hQC;nE0jQPTR`) zr?%IO>J==uW#?t+iY4lR&=txFB>RgG5W`SS(E7NKob%!D0|K(9b4SeUBUsNg?kyi* z?>8|qSy^o@8mkc*^BXmXv*pFhjxp~feAVkcZ)|LLW_PwU*lUmtP^(ANbzFCrGd?zk z-O}D3RYN|S8er583Dmsnw=Vd7{E>ufzeJ(M_Ea=!)BF8A0X-hi>1FPGOUrXu^!*+6g zhkaT7NuA!v%5_&w3`wh#pbNcSSX5Ka4-m1K!sYb8ZYC8uAF4OUQ^t-<2TQ3{<`?ee ziPoRZZ|@e-o9VO!s4W!=!DP@75b6@xIlJtmJ*8AnOZ-axAv2PgCY3}@AX*y~ zRy9od=H2H4k5=sT7_Uht$z%HU#+|>9)TS; z6{``inOa<#fyJ z2j^&l=}QdJTV1GY=xTSxzmzt^W5+d{lsrN|vN z$j76(?YSs5zGSdU4)+w9ss*o=H%{@9N{P^JpU;!ByH+>NZ-^c z?*(nJ;vNw8f2&(vX3<%|In?7eOt*dR0T+<@#V+ zK<~V~Jn?FZJZ^8g1@OrC@Ic$#6#&n;m$sBa9aw`oFwB=2UE2Hsj8P*06Qoz|=>AUg z7Y}u;O~03?M@L%U0o_w?S=(NRyB{}oJjl0>h!-`~EW8eUyfJ!GRH%L0opG1yb7iBW z4E04J@EOe~BEN9NPdfX=^Kf|Jy(qCP_o?#@k1q9_qUuo+z5+hiOpY&=A;JyLy3GJa z*9RB=*YUjR*x;Hn(r3(4r$>d3t8I9GTeYuSIb3J?EZ;SRqkScCO8eVN{d$%AoX*91 zVnu}%Pq0Qd`r2CPz4Z&RP&AeAo{1$28JqAg8hu^T{6@hPC6DiI;M&cY3gnq{mMzV;fYtZZW)Z&3R48}s{GW7S?eqq9wLQEnaBny9nfG`0) zxN!cj?Uue0V#v(1+OgjOM3&lNyMrb*K`frOGV3UgQNC4TvI!(QjqR+sL04go|ayCwn^*J1m@sJf{mCol>LkR>-~hoXr)b-8miEE8lE~Dz~TJxIdc7|FV^Pb5bgR_x3=KS#nNZi;|`a zE}q}=0$cm==yr0^f>ag|Qce=%j6%JF6&CDMfu&I8^bJtCJ$1JAr(4=)<1*qE`|U!X z4f80ze3~B?=NZk3`jT)=a^Rr;;l|%Ajeux$AP@X2^oST%0R&ts52F%TL*PoF&*S#s zD1YVVKX%c~*QcEsmDG`OEMMIbQAGN9knM-r|&8YDyfD(idU>6 zduzsKzKCkH*5{6Lxfulcyjs>Z*l9{P$UIPVkKBOtnbG8~fswSv@3_|IH#QMRWcic6 zA}>}aj(7DNo#mFmj1rq3Hx6oC8M=ChwUBr%#sv+Q8FUYdIwbIa<{TS!v?^9BC%K(= zWg_`Gel4T5VB~=hT)*uQ>rm3R?TV|Kvit0PWv4#|J)e~;s>Sx1BxW}nc)Z{SPsr6_ zoavtYZ2}MiWUl$<<;Kck!RG|IpS~s*1DEF#4SSYrFOmVpFBg@!=Ejn#s2$8W6xcC) zESt#4I%Z)60)7mnN`O97kC|U7o#$hKd&55ozV51|!}9Aq_}3=#@8iodHqA0WknRxik|5vFAI89Y?N0G`*M(@PUqODe2h zQ4-5=iQJV!^jk19s=7IY-=Uc5;;pjJlDAc(C*xk{UMpG_ilH6)@Q{#pIC=fEV0lH+gB0hnq?v@*f&-kJXY-WArB~*8N0eT+@)qFbx%0 z(|%)hwzX%&z*g)+U%#fb;s)r9C@ow(qaAh9J?~k;vuBycM=zV3o3lyg9b>x(6;Wy+ zocl{qVu1~r1Tgaen=~P0xiBIw&}5=M;8S6yKeyI0J4`yn)MN*fkMs-&S>m<^4J30k zE@?PA-Z^`}&#?1!WUA@;-HHd)fhi0%9x_`8Q>;3Bf7gD|c<5|d(;?%$>r;^z4#c*c zID6nV8{0d`&lvq}Q7RL207~uOV!5c9(&|V;$pEYDuuTh`n_3KC@v5XL4Dkhu-w*U( zI$@Vd_-T3@hoUwbBUWgm1RPeCMHJpR*2~rI|ry#0oN+feVd=1lb0Iz zCd6%FGS%ipb+&(jglM$gf~0*|PIc&_L`tMenA;oaT+Q+kz>AuwL-q&qnNWW8m=;V7 z@RXps;RfPq{dy_%L|Z8CKsp3ILkmTZ><*j)mt4bWvY;OW?hlFaGK_kyg_$(bPGXpD zW0_0=TgYE#|Kl&AbDrN1@(Dev1fx>};4fwC1=YqWY-{nt`ckQqk@mw}TU7Pt`irCT7L(Xta|@y7kQ>fXuO=j{n~--T?n(Gs>!@2+9|-?FzOVh2i&+W}b1egd z7Z2n0tG2uIlngoUEHBGQN=621?+%l^mR}Tm*?p|q#L2&4F<;TZ()v<`UYE%87SQ1H zw^0mz#j%d9tZ#TA8s?}fWN(gVVMz~B)lI8MvX)OqgWe)}r!$KufxZQy&0oZc={=9J zaX0+dY3lb@+v#n~r=vmp|Bwah44OzqgFC;XDCAcxc)CD^fGX;rBJX-2O*B-WAcz1P^^U&T?zFN{+!$*FFuH&rB6BjgO83>l=%ZUpOk5CCP ztCi=5-K2D)Zax3)E!dqDdO+1(ccsQ}CR3{OUPwgW6*2ui^&6#>2PPf6wTrpq_NCZD zmUdZa`+ypa8$IrgUakmi++kY{0{&tM|Klua#u#t`0OXc;ZE)_e)j&YkeuwRK7Cu&o zIj_v>Q0|1W<{>TGg%`(9YU5kc4Gl_xPkxMcr`;U-MiIZhRcc|RWxSp=I~i7>@o~6@ znAf9AQDeAqx1>u6Ae_eG((Z~{Rx!%b)xzTqTFXx&EW%-cN@ zRdxEg^20akWFyAiBTu*$=EwS+d0HA9-JS=nvtJ0>glOr^rjAetnraHOMMn1>w$PIq z*x;BoYGtIG_4DxHJ(5SQG?rGoYV2;sn-8cTh@KB?X*yZnulqeOPVEBbEet%v2L4~E zEBuVne9&N44cH^>^mb6j^`R=35#!;K#UuNR*;g8>h4fY)tm{g@XgV1wpJd@`&JlNc z9$M8c21+CRC?>PXVL@V@I_4~(1QWQT`^Oc1ElsThrY0t)SB_gv=H}!^gCKFBfNdIl z#}smmkePTa0oRq((rbY}LrSeuG+Xc15UZFr)D#d7v5BcRN(|zS^nd25_0}`k@KH4B zM*?JC*4VWOG^nd3Oi*!~Li9P+I`Bl>3}DKO?_lXjW-W{sjh=e#8_rr+f#Sj4UJz6Z z7mEykudj(kK_m)jTvR5 zm}Mu+=z%45dotWU4m#eqE7UO$U(tx{m~*)>?0#;1*uzfjK)9UQndF`+-(W6@xR3n< zdtdZkNpOD=cl;>=EDALKyY8?l$pS>RhDE+0*7w#w=}VDr=qx1O>}C8(%^X!2Tz*xp z_Gs#Kc6RnSUC6sBrZc^;w&2}c!T|I)?+4S*|z&%nsKwB?e5 z@1Eys@9}A}ty8cTZTxIkPQ><~huyp^3{1m}1L*%lkZ##BfbKyEWD*Q7knTYn3V{4t z;3xc~o4}L!F`-Vv+v+`S^0#YAlY=e!S=q5qu6fsWR|Px~PHVfo>!*x`EPvGF$GijA zje4R2N_{H3ThLS!4l@6O5r)avXEl+!6xHG*Zn&9bebbR^TBl=yOF-*gwFQ^^x1OSx z%>AZ&ibalRKj)6ScG` z=552w;p$j-0=ZVKD6FrB!S8rBoh)gho@oHO}xawFn8d4EQN{P4E_W{z8e@E?`C zvvhA49FO|9yUdtCB>(h=3~;cH>4M7r3j&<_UI3KCKEUolS~9T~ji)~hn+4eJ4;I*YKX^wcF~_`zBeS|B~d-u{zdtt=17^Zbmcwn2;^P zH6tFssj)<~<@`&D-hec$gVp9ZgNL$h&`CwA9Sa73m-ZR`SrWanP!HyYB6p3V8Astf zkYs++Ay-!q{*QcZ2~LmP5C(U7;#bhDLo&0_Nfb}~_2ANES%$RccLr9773e9HT&EzQ zxUZcSQDKpF-@Kh{FaC#Dfg@<*L=PE@K0E)kId zjI>~{K5+dkX7dQ zD=s$Ax+TXKae*`+3JOc}I>2L_(W;m$tMKRvwyhj^SLmVv9@c6z5Hz=Fzl_ zYc*GGT`&MIq8Bx{(-gT*E^pj>CfbcC~5$#827Y5pQ-!diQS`HFk}tiy(c#K{bhv4is1 z{{-Cx{AZ^4@Gt`uD?)|Pr(;M|`gpx;BCSvm&PyOFj}YN;Upm&Yvx`kHTS(0KSEC8Z z3pTm07xD*HM*}Ogn{|aR^Y^!(0|}|kEA(eYwPQFpv|`sn#j(sVihdP;$7>sY+y)yc9xU0_*VjC$ClYoBNRwbORHOMuPkau zfa1$5^ai4g$wK-suy11C?FL^@JuV6_^axNw{F)lGxDfLZG&KsBOw{t_d&#lf# z=83$3h=%-wGg!viC7NpBolXlx^uWeJ_bu(!*Qr*LDAJYN%0{TSCVeS?Cr7eFZU2+^uP1OUc?jVX9uU#&HS<9NSpS-VKdSJDFX)sL@ ze#-fU;swmJ{0SFHIW}#sP~US+fv3*8fMc|Q&sQ;MW$>?-``0NRcYeL9W? z=y5N4^6@a7&Io||%Pi4q&ai2EB9APCNO2>t)twNVhp^zZ`>O|j%O zmX8{s95heBShqqTbg{ut_tj!_( zWVwbZ`fIK;a6yj1{r0n%J8Zk)4KPwPcs)xW>+#aWK+sSxY#h+VN;;sD(!Y#n9=Z#9 zF0kO@Mkz`QbG;hO-`b#i)C0ClYq!PeL+0xwE>+Hda%(+-tZMl>g3n5HO2~DQuGN*s zP{Q#?i!L_)uI=+=v*99tGqdwjdkfU1KF3g8y|?C;72kOa+!O2N&l}n z7?7)mwbFn^s-`FHuw_OI?Xa2BDGc^tDj<=RCg@T|+Z?56^Ivs!e*i^Bge36url6er zQ!Zab02aUStTJN}1!sj_Kr@ZNb&x#t zX%>}$UM`0H5Ugif5`(yyOQq;Wr@$Q05MtP|!`9P`*LWrKh&j@9rwCDDCs? zI<{Y=$?HI1y3zUps+6Q#f1lPL=btrQ5gpyyH!(EKF@~(mt+5|`K%MjQjOwi+4 zhMU+E_*EHZ3jlU#+8qEk>uS`2yV(r*3;8|7EMGDY_P&jLE+)xY+cu{JF6?#8|M2b; zg@<-X1|fP<&^_XGZg`imd`Z55F%os^76ihkD;VMEBy3Cf9CG8EP$XIum*nYbkoj_f z)jVz`$-;IaWa>T?DwlMmAuUWDL`uf#T<_MFq7Zl`L%(S{drC&ih4w^eG`QQ|8mNgR zIw1+PAa#T6dHVuOb%%{23H_0YpX^3tpxId31~i$ijctLmW`FS=tUvQv7I5%Wh#~#a zM+LOQSRv#n(LFq{_6`<$z8l=HcmgeerYAsX<2Gmo(r0mD*WziGjL2e|;`&BquqjD^ z1|OuS70!L3h;1zzG*(*fsx43RmVHqa^Tg?AxV?+E!-@1V!*{J7osyVScV8tq0Zn24 zLd!_ttY@5JngN*lV^feg#tkm)ebGkZOimMf2yV>2(BiV-?_KNBb?F=535l81Qnvos zBF`J~osW^hQ1;mh1>pZY`@D))z|te@fd2+aZ4H?8eU>`(>3^p+q3^vGqMG?K-)8|r z%N8Ui`-EDc%+G>@aRv@R)vPZ7RXPAvl|X@dz5#rph;!Z+q%s(mBb=Hi0A-AZrXal7 z{E7Z7V9e=(mg75+@3S-!^Q^?o!z`$cP_$U=5$b&+PUC4F3#!<`HK73W4=>uu#X43D zvVH^bUdNk9ia?Dkl4cGGAZy~w1YHypEd){<&>YgR_DPzs7=jA;me+giT( z%BziJh-)+PgvACqKhJpM=`}jut-YCC++Af;t@}XUQ}A>1)y?*mwr?kQ*O zbCBTrv0p_GvF@3X*t8=2q!ID{z6YuorSdfF7`?-ay=Ft7*e_WlI^G3e+XP5Y@}2#O z$j~;It9@^{C<=F@4aS7PDF!()fi?Y$CP3x@{U9(CmO)~Ep^pktv8-Ka(qn2Bq!0hn zcenTgHhCSrHB*`aQs3J?Bo=tzC#0eSz`8#Rz~%rnmV+^1tcz%p+L#8=+Hr`zg-cm*D>x@@gP@J!~@Pr5a9O=sn`@2};1nS(v?H$8A;e&}P6-hWO9 z;qSK*mbrTP5dR)@FXJ(7Nl}b8qGtKXq)T%YF4)9fNl#nHI`sKAVUA&=dp@wP+NZ_A#R@!co3!+aTmoB z;(MBvSUeq9U~|iyo0}V4G$VKAVE?7_yJwGbmnq%62zJ)j0+90Gp=-%Zh-xhk=B5zn zsqYWLmB7qTzZ~Ib0PR=4@dFIOyQc<5319eiV+JA!`sLr=ho&^?{iv%EtfH`bv&(XIZ01qyxe7o6xIpCdC#5X~IP#s+JM6UKtNt zzpQ2ih9sq?pi5mEu)#oCe(^5X(>;L8w0AaJ90(+cYk(d(%Z(!n|&4h5gbA_oYQ#xTWR%{mRN`U-aWM zVt-!mJ%a_k5&&a8wF;ay$Qpy4K_`u`byivh6F)bRIdaY}=I+-Qa`4ns_2h87eSht# zpKFH~3-9TrA6M3-UzrOl{-^=W=m^ebkpMWtRRpPy{4)UU=1Ih-5N)&6W4({T_Tx}n zs=2ah9Yfa(x&#E3`E{hfz1#crDgqK+JmsTIZVfsE&p7L^@qHrMe>us1HDhZGCZ(pv z8wdY@@nQrm*f4IT`wZ1g@LX-BrWRas`8Hgx%bgnQG0-1%D*&8ECOD06@PJ84+_?@S z9Vp(TLfpQg?#Z*Wg?_@>k%dwbg|BntvL_?`;?l)l@t%$Obfr8VQaZqFw-(X@7-*Ig znD_XhAsm=NRIh)h)a+eYr*Qv{do4z#yt-ryK`T4cH2bD;pnKR>HfZ|m1q4;T)YRyh z;?kve!uw(_B-24S@BzVocP`Bu-OT{3)DByg(KHa)14y1AHMtBr*rjB_FR(BGZQU5) z)2rr?5b-|_U}r%h0^67e{8}_D2G4AV0vzSPGFKf64T1iAFBs%kQrOt(SdSwt zBIGr73g2dzX6I*?Yk%XBp=2H~AnY=0JJeZ>PYq zEk11kSEhV+#>bboF`6|WS_V4V#}G$!Q{9&-&BTGEMLj;gHplNv?OgGTs{7>ST>OLT zxl39GJEZ~jWiB;>Ujt2tVSe5U59d2E@oIbPxDIS-6Bk#9V}3V@?`cHbuJzJ2yB;6A z#Bn1wL^nDW4yFN~%nC8ibj+1nA#Rn-QSoG*ykHYchdZfxp6ZR&58y(SuiqmT5!`8T zYV(g}fhQU^7JYZg0Z+JY@LJNY+%8}(5!qpF0W?bBdzKYm6foBNVaYDu?*zcIJe_A&)mDl=Ass#6?2Tf;==?cdl=ed3T)EFcvaY$jWW7o2f^k=y<6D*KP z9fnbP8x$e!Tk`$O5&i(6^L#1&l+i0VH5Zho0r>17K_K%k2Z$b^&!C)6vxBG)Q-Gbb z3WI<*`T5~LiZBp|&VX-3(sUVw;5#$0BpFsw zUps(2i`zEEuQ7f%kZOl)%ZBzN@pG~#Z@WZ9f5h_G-|hwi_v z0f+3w(z$q0-LkPW=SN;lxoWGVuTX1gy!@j;d-<0+QHKfCTXuGQk2dAaOuI^rEkuvR z0;X$+4J7K5>VTq(a$jKaG4QG;g$7POjr6v2lyO)+FGf$9g7YA z04I`{#E|Bi5^98p2Oz%-j!|pYliqIg%8jUW$AQ-I*u|hHRn=aaYSANR0z6m3-i(Ct!?%y=mRD%!(;t5#!2T+d_4g3uZHtl(br%<;rK$0b(&i2=Q zDR|@BQ8akr8vNG_*XBv!g=;S%7x3S_aP9xux00LJG5TQ3sb^v9;wwmIzZd3_4+TK( zTsdCmxfT54K=+jrcQD{!1%_@5S^Jjk(1FhuRsP8bN|I<-&|{70S%CZIQb<`7MBoP1 ze3^QH&KK?(ipNhGF+g&U-L8cP3I0I*Z?-iQU^_uQMiRPxrg5+k#K^PEwK|f(4x3R+ z3VOk5V*ShF+3_8=nL^k$ntUXR^S$YthJP@I_u(o4)#moF`rnr_KRub~wdmSm6N!S; z=Au{^>kW>gUGNJ!R8{{i=Yee~4FB`R@xS8oKR=jdUvK)B#Nw%cZf$kS4I z_e^1cfZk*1F=p|qZ#Woh&Z&bXNi;KupHUYJkH4(e0O2CWso@MEvzhWPtRf2G2et)C&Ge*(;I$7T7 zepTy!Evs9rzu{Oj;}`f#rP7;BUN4Ln-{4M@Z%`$C!d`&LE}3DL-V$Lo^CcxrODqJPt%dT9J- z?GDPJgqPjiZ6dK9Mio@;WM14OWQ0VDgMq^ghyrXt~!d1La%>%b)7YVvV9!eCK zd0w3B8d4z?_c}l3uCum;h}ZEyegpgY2bva`u>!DNjuMQw4JYr=I~-P4!W#mj(5U9Y zrE^uoL661U)>7`9>LiY(btu|uRhJLnnn`BjtIwO{XQ)2Q467}V6%px-Z38%kgT)0V z`g>S6Ko$g#uE&#wXE;oJkY3CdkwFwuM&hp)ZgaOa2vZ;g{1o&yu%O!IIy60^V+>7V-4q~4>pXdS*s0-P-^9dU-fehB|smGdu|NNl!w zi)*#Ir@plL127rAeM=r{<5K&H0gYf=3o+oL^mKD0+e&(P(U$C8L~5<>U`}e*9z3c+ z_TiLsSf;vycE5_%a^n&>s!YwleE7fvv~o<$(!`624&iy(TPXW87?}_uKDuv!Lv~@V z?#xG|SLKLx%*SEdl92Td5$nShbz4LMC+B^+M~`<63=4r_36O?8y@9MB!O%9zbwzpe zMRrkj4MP3M`j#7y!BlKVo$6ApDh|0^vv~b^vy{XdGaGAlZgEsJ@l$9!kk`Kjaqzmy z{F`3rSrFV0sE;#gM?l z73Z83;g{^zkmxs`jPMV+qYOJn1)|<<3^V)6C|g4xk#;FH>+&hA_FmBulch0 z1XCrL?6cCaH@xo#PX0*%hoOf7Qif<1Ga6$JpE7Gi&ZH`*(D*9X>STSlSm-h(UhAK% z=85RUAY2V@pSPqpe{p#wAwVYdYrPJ-~=88aIa4(XeC(u zMAuL*OOs+0v?+UYGq`_AqiwVvK2*MGAhsE*Ko3QIpqIYO`r7ZsB-A9jd~x(WLcGv+ zqjFBpT;fGriJTCS@c{@afw}_)4eAa68$kUA2cfz{(=Xk$XM)W`Zu!^x!J!|}{1vz< zP~a{_Q>dH1K=JZ8SighhQyxc)_*G_F2gczyJ_%_f1+uB0C#++Hbxn!bkAW(*s>e-T zrZI#BTimp(i_@LZZ2EEU=gg@7QZ*fKqpKcwakq@5|J0V0l$h=p)B>&kiwyjv5?c8k z`~o^bwk1!r+hj&fe_Dyy%y3)@R5N><66m92G3|Db=$+bnZQH~B4v}bmOt6%cu4nGV z?is8rmir0={3lep`lkUf4{d|~T=+w+k@o64Itg=~Az+T#uAF{qz@zbfNielzk}Rilvi$n}&EAyEXriNxy2v7T z!9GC!RL_Ca{wuAv2#gxW9&J$a4R0&yD9X(O+0I}0#EX^DLkWwqa0zj>SZ?_EcGVB2pU>pGoj|Rc@<3wV_Mq?3WaItkH zi9``wU6BlAJ*fUleorsTxN2GEqEVu|4QbK}bg}R+@?joe>w|s(Tjx?idIvf}LA`7J z_Aiydb_}svxxSNF5<6_o7$%u61!SWG`8!BJy=WT9{hZ36IwTL^W6%_$7Yt}%;3RC4 z2e$Qd9MH&3Y%4I5otash|`mz$-X@hN3C`Ne{#PHf=;WqOPZ9m*i-Z_)E!i#?&j zV<%uOAfPFnwY#XO=r`xvo>#s@1{xTm0bfp^WQ4)6+L}I_$IWTGJEwdvZX)z&3H*+eu(^<4~OBW-ce0X%(_0}eDM-kScw?%W0fef+<9;+#8 z{v!N0hg8+TW_{joL0IdUV?NL3&N@YEMaNwS7iyFiYwS^fO0<$bH&0Lr^!iQ+z;MNM zBN$sJs(O-|#fWL;uCG1;#t*YlY-5ws2qiS?%1*{O=aEDX z$kBz6!pw%25+`rRaIYqDtn8b{tH-h~0Gzk}7(-95q9+|7+rOjPkZTBFzew%wj5H(^ z#3JWG;bAmttqq7iQ*-FM6G>At8EZbDr9tYQJ z_f?Lef<|N`_>V4SckonK53==D^jkYggzdd`h86T|T<99!M7M3N^%OdstKM7q(P$Z- z{dxe8iOyT(1;;x{4g_2IlE6+~_3h0j1M#6Za_m)s(TIx5Cx^tO0V$ys!wme_6c*nj zql@VF-x5Mj6_aAM@Ki{XxcK~+RAoh;~ z42QI_0UV&FUat!6i-L|>Vg`F*4%sd;KO@abTU(wVTJ7cc+emC`U8aAuebn`87WRza zk#`xEppWZ^jd?^tRk~D*PlmSTPnPA(eE^KI)2x1uCY2^yg)0{~Dz0RYz0*)K<`pY` zlD*DWRJCwsaqlR@&dh_@``7lR+Ta>!TqvN|Xur6K($b;bTJFFPvccGbgq3)`WzajB z1tsy}&&oB`RkcHhs|U}9nE!quj=OsJ+4(>^2>F!%+O5I`iDZ35dpo2BI%lWSYa}4a zVrJD0*Hz1N;Uwee^n^UK3rv%@*uAtzI$O!d{kiPXf< z_&0#WuJVETc9t(7k)9q=0LHQUdr6q#yun7Qe+H)ip|0QU2Sc9z4qe}kT?1GEfe&D% zmBf}6opepa8CsIGNqVCHZO=)~5_;dm1xFBeUJyc33L!L4HxyId&X&l}@ZqQT{Si<6 z%>_N;1_=L)t-;+JlFHB|?JD`nL3{xHeFJ>68dNND_2my%=F(No=(dGqu6(!Mb-t|m zpJnbUI3p=?VFqxZc#v{i)rBHG=4qgIA_UrCp^6VcLG3kk13^bFF8FSGC!_x6Pcx3^ zKfN%JgA@n5PO_^}-}bN?7Vb8rlD-gYJa(bHz(b`+ATcMhQoTWzpZ9GKFdxm=FDp#m z3H+HI=eJ7@(!66?srRPPq=T$TB_nBCxG-`)PJ}$QC84wnAjj#DiG`)%82z7F!q21s zn{N>*y)ii?pGhl3PW~qiSn8uv=U}A5*03(ewLgHGU3mCr1d5*%ZY-vSD61Z%DNZz`}0x zb`8}Q4ayjpzIMLGGhakHY581Km0$Wymqyg8ih{ryGcj$L?oB;KP(#93Lt_!2f`cL& zACf#e;DMezpA%b6AII{bOxE}147yl3Q$`l;9r<`(;=)$miNCXLU2JW}9#2eEF0qyR zyRKX@&VGG5yE^S13DKDtheL|jNf53F_pRGaKN!sWMC5t-^n+Jz&uHz@%HQ&q zV+oa72eXT*eYs-8zb$9TLQYfGUD+wWp4re7X1+WQz}H$dfmAwMS211EZM=tkf!0Vm z=)#GO7ZgS9oS2C$H85%Qnn&;*XmZoCHxrGFqK0e6ym(utz$&iEZZx?NC-_^IS<`18 zO$bnx-$OnS6GOqi#Y?2ZTOJ(xB!%vr5SfRgy9Q{fI{N49%~w9mY?td?QsGW|_GS|M zbpKvPV%*KS-beBG5g?0{70VXR!dvd-F8*4yi7;Xr>R3@Tq&Ia5DjoTfWaH*{m|Xa1 zWw9wRMS9K5DN3WL!o81Y$Q#%-5xOI~LvaR4yC^$L(xF+AQ?cGt4`RL$)!qv<6$E8G zOCSwCLL5oIT>9k7D1j}#xu3ACd{2(e?MU(>`lW*g$Cw<}T;9z%5!e_`Xr##c+z7sP zdZJ6u$D~oulyq<>lR8En=bApT|7|ZKWOi(=SG{Vz)Im-Ht242xTdM0RcPm2a2r;0c zx3nj(;|zEyY&^s2X~W4dk#(yv^mQ*g2U;h&uXIsbtEDj5`$5UR8uyb2pDvPAoHuXI z2$mF^mCwqZ&S)dv$!jwgDvn+Dv72w{)}J}^yyJeULAUmrlM`V{ul4vffj^sK{Yl8gwK3(h4LEnLU2Ryf7yR-lC4xK7>S zb8zzm+`jJmdh(XByf!uy$!YG)Fzx-1(%>LaeuQs_&O_Q*$=a9=_Ql<&y57VLaOaB-TnUnU{oc}84`i#u9rZtl5IQavH( z)QfOS=>X%oOK_1lm|G{kcCOc?UHvU^FeL+U7UzIk`3qp*zl2wTybfb9S@)|Cz0L86 zl^Wqqy6vWlZ~dD#$Jf_WIb#bF(PsyIgZ&$NXQYK6)Tg#%HMIkpd-?`+A2q7?ba1SG zU5E={oC=e=Pb7J59lB4eN&)JTq)mE&&q-AyuO}D`d29LVsA!BIE;GPAF%If(Io#hA zj=36g+x%fj4n4_lX-rU72vrrIaaGK*V3NR6y%=10#HB-OW;uVUy!^_+i`hQP83y89 zsRBV53=cFxvgqyp0aO_Ve1=kc0A)FW{1T-AB_@R?M68Nad=YUEaP1x^`3p@wx|+F} zg%!6tnexOox7e!d3$G6f8%FjJO&aTpRzxXBY9(N&42>mW8oDJ~Mq+I@fD*k22jdB9 zvk6;keba+>wD}d`N?17x+9t@8jq=iAj(Sd5-`r&`x6JEQuT6jXDl0vi0Jh)lFLlxg z>^1wSTNbwXtejr~Buxo4{BGsT%gB*1MhpzA?YPm zk$qK~@@%H$e%*5%3|5+OVO%JnW4^dnSXfWl_I-fiw(?<4EqH}c)r`3ye*~wIin_MZ z(=7M&I8G-bcPu!%x|b$G>sHg5EzD@8DnBTxP@8lI->i)>(F_L+sUy_`$F$Bn-B!Bi zKuh=8WIuWcYw7PAV$JCCz zs*p8v#`a)D>Fi}y^-S6(wc?U}x=IsQN`ut3__DL&*s4MOqRtfFAx#Nkbjx3|_z)NG zWRfWZT%X+!9CXessJlo*zFrVQ9f^vMGZYxBjUR%=t~;@Dwr}yD6l~8|>>Nrcd5$?? z`<$CS3JZ?gR~#MX@yR!nR$9lr8PhOUX`mk8X-~U6ywW?iStO^8@EaTJL!Mq{ZrR(K zeODCPI8Ws^RFms|^fmk3+mfdHAmDsd2W$f6CQ=?xeN8Hbu0d&_42s{kX2-BW`e-1h zKcXt^8RVC@-w9EG9<6>_!tc`MO&F%;7a%>LZkkUwMUs)U$ABc(qrw;5x|Rq|JkY8$ zG(cW|V`D1R)kl5h+If?B9PW;foI$Ia=b{)@$n9>|K{InAZNGEN5ybmpt`dk!c;@TT z8~6I>4%OedoHY(I`YOMRK4FwfAPG@C$~vMvw?lS^eH}_g!)k_wv1rsCRx3h{k9Kmns+~)`e>KmWwBTa^+>^71Ljjy~ zuN`F*FymiG9Kafpra0ESmv2*rNPkHWb)xI8mV(@7;6jH|PP)8L@rk*$6>fUM7?1&(aRyQ86{>s0vE$*wN5 z`IL6%%IdG?O$ZhWSf%ysbk1q{u5w%cFNDn6+%=gaFAbD4vpythfeev>=Kq_<)Ga$o zH0?UZXP3;kZZ{?Apvj_uuBaNQ<|!#2mW(Q@P-w-u4ec&qheuz5F6_l?qtd1hH5Qs` zm?baIF_i&^lc6Ml!42YESRFb{pksV?0TFG)<@>10%GWYwi8aE+``|?w!Y^m}PHl@t zR{5aW(Y1ylXB{KKLs${z4-8F-H*geob zWP+)5D!CK391<~9x>{#>vAFBbrGbO(mInleZ?Llh@4L3gIql}Y)9jWyL z=ls1$@DGNR5Km~e$mORBETB)3L<3C;yhw2^fa^S#2fE1!AUFV@418N10(|`%oC*w* z@4z%e7CKMRkAWgPLX+490E2xDz##cMVl(sSh*7wJAt;#Wzk|>~2^;w6)kg>sa7SOq z-M`$MVKfYXM}Fy5U}h!(NPDsZl5kmFy~2ynNkqkc7A7p)a=8{ZY{2O(%On|@b+q_% z@NjLyET-P$cdTsPfSCi(GMhtnb!xOk`on4@#fx?^FI;mBipfXQ+c+@x$2GMtSh|Rg z@}T7J@GP|nDQVr0UED>LO&tAjtAS8;ZX|786bR1p@EX&!WheQ`nn$vNi2c#RvK{eU z_fV6b!C&8q&D(vvpLMp&F|fJqnnv{UC^IY~r>Ku4iFkP64*-P3Fd`j>F!v|X*=0a> z!`j6g`ia&+9xKflg;#CoLbhQi6j{wVF;7us43xM8lHu}b{WSXx=L1M1W zJi{@F6Xy@m1{H3CVCotD{w9bpwO;Y)51nxJXZ2DKCR2Ouc({lmeapr#CEX5qIBmJRO1)vkq!-9ucN8!N3?tF#qeZ(){HQXU&2)7(xn9Xns7C^1x{dqVTH*5y?2WO@;d z0OWsM4-7Ib@mL7oR6U?6tZ`gSl`EGo z_2~EVD4efrPJ9*gJqCFS?bAKI1=?lepqne_C08Ac4kInpF|c` z@~*NQBfPPMUh%s@1AgJ97*aAg3gv|?ERH>*U`9sjyB1&~buHEs1bR;SY$+=`xyRVf zI0ce-Y+po3Dp)-pzmZ{HMXSz^%6aV|N(mQwk+gpyG7ag)} z_1JSG5N>k=jSh0Rw(9nWoGi#rZb*wL&SDi3_X8^CD$LN_e{E(e!n@7ZRC>I7%n0&W z<@^xOZ23mKj`WesuP;{w*T2bWFi(A*9%4P9lA8B8J*@vkGhZk$b3Sj-(ONC?Ewn$- z@8_l)X)*PVf)0g)1}m-P!gXbCezA1tD0znpv5M9=R;CU#jc0~$#>WC=QBo_!)Ie6D z*^k|sBPBJfmEb8Ctp?!jtP>b#`*xLwTQO|_`d^Kks7!b>C!d7OIEww2q_g(-SXOOZug1Z9?)|Lk_0r>HFIxQ*>C zw2jVTAg5a_WKCKN9l-Lh);JO-0CSvj`Zfp_SDiFNmL#bYil=CD!kOql?jk@vAXw(G-$&k-s0 zkBVG#TJv?nTFtF8l2bDE9v^OA{1C=yv6P9@!RYO3HX;Z#sj8N|T?;=Yei{M63;n*8 z6UC%VWyo95OS7Xl;TR02enALvy>`?lw>-(3c;r?DQ`4h0#M{PvV~gU56vb`HL;ysK zU-zI`(_$Ckv%5Wz_S_kzD=X>EK7bW-I;cSh!Qb3gWhXVKV%t?Gg|S4)6nB@yN=yc$ zQbuJ?pU}S;SI7|@bgu4xZqFdFi65kC{0K?_O%w=)U}0bq?>cy_DukH_O1GbQ<>Tm> z3c6ar%AP=lRYI$C}pU}l!x%Kl;~%i18SALZ%@eGNd#YPL>*Yj z?*-D9eRIutbc;Hj&7j8nOQy|$KA|IG{Y&Aja%)55v9usxfIpG1e>YlL!!l5q>-oX! zRe9o42SGQ_w7YN4spQE%vWXUO1M0+Je1|$P86TH?M66vgZJn>%9y#|*VBKPQFhe+f z3j`rs`)*n}pSL~paAbpHM|SkHTNZ2B-lm8H>%XsmY2gFHS2PA~_n`RN=eIo__RgJW zYN+8~8{=%hgTqnPN@hfKnY*GotSr+q8+!U4@{QfI2ptFeW%B%w9o@iW`Hh^biV+w5Ku_h2(QT5pHQ6BKh;0;oQCg+uIu*EszStmoj5~hIcK*Yl zB(mi)vIFGB``il9b+_EOw}?P_89~zj#l$owkoH1~i4Tl!E6>NF=@X56vOgb(jWS3q zBKXE%fwB+p!YXVh1AiOYO@CjAF<&rmoJ)RovDh?nu!?o&tPdb|44ZCL`*pp6`j#p!z zEN|BX@Yl`Ncb&iGy;`Qr7Quj>Ml#yM--B9!rjukPtK+|D&GA*b?Dh@Fs1aYmFG%ml z$}l(9R*@Xe#eY^2#W7Bwo3`BhkTw9of;7)Px~UILJc923yt z{uM*FrW##(5Wla4&gUL-P|BlGuXkJE;WBN@_?OgM#?h?KTjuv`EL;{X*BT@9UYrB# zFZx|UE%&SbSAejW?)1f0*mO1HBcNPfE*AN^Hu_K_usEzb-bek;3rWR$6JqgZxl#>6 zVn>T^Q&4UWN|VJ|5gfnz^c>qDlKz@0ka1<%Z z+>^ADSlVV@cg81dG)iX%r9fWls8p)F-uJP%Y_GTi9JzIbB44dc4NSRRrW)~i=3@j_ zQ=()r-={sV4lqK3LB-WKh`HBg&XkKgU;^yCd&YQ(DiEZUl_EGlI+;ivQjaRus zbDM-tynQR`!X{(;m0h1kG35YSbrX*vl9fa{b_XlZAj0wdbeYZZ=8zOon8^Jr)RkZo z?1+8gb)ARnR7B2p8Jn9Z&#^m{cjMC4@}jW4j2O&{ZjjW1pVV5<95&zR1u<4e}Iy3JHn_LHQ!M-N7W1&jU_*uv`w(B0^CF zSfJ~!9Cn)?)T>F$jer)0J`n-Hq_vQ*NxR38`v!}*>$>UtXeV|rY$MlXk?wWVD|IVL zG*W2&*Mae+F=K{73}Wg)1ml+{eN-r1Yi87WI;c($|FN*UhK1nKD@0N?HGOyE3+xd( z6zL8PA%srj>;2|iw$TmNH6yN+@SOmV9{)lMLBGwUiSsW~PE?|YfyK5|+*NR(SA6!3 z**OAE>D!($=q563oRhVRnzY$C0>>bM|MuFnUhCOK39~iMtpw*nCqZLXD!gp?8evmv)DjA7JsoNhA>=J1$Ei#Z>%e{C1Mr z_6bjVTN{aaZVfCX8^F|R79o3(u&qpkZ+qD2GW3ug@RZB&X`~rVoQxr4vHP%Twf@xH1YA~~TyWe-P>if3r+t5xDMG{%xvSp>Rl}Q!FFIOUy6F-d_Es+Oz z&V1XW4xT}4n(8jcw2GbtnBClOd!FxRhPKUbV4sL&HlcHYoGT+4+jd3JWP8>ZwJxjk zyTSmv%({uJkUb$w4?|YK!N4VoMDnpDC4r#E6Fixr3@E|tu8@MawN46+FJ^yEOf1eb4+q|Kp+wYdNX3`Ok zkGj8Y0h6go8>(!50y$Nf1~Tn|k)!qOa@sfcYk%H3JtEpV_}987pTw+4-Blm}X?-;KX`a`?8&_ZENEccmW*-2g{2`faJ6zGpdE9gaD@L z%24O1*;lvBd=a~^E0-ppYdyOhJw7ULr@+eoHoxCh<)m%#{$97v8aTjka-;yP6+}+j za{8&CA}xyC*JpG=um%=Y>qY&xr%Jlv?RgtM%^T%H+Za7U#F2KogiXm>YhFPI%iHgz zK^?k2x&=Ndy`DOPRqe*zEO96CPc>$U`1!nAey$it5bjVmS9`Y_n-k|{Xndz}cpau3 z;^gUhDK&fb%T}?T)^B%!Z2>)hU;)4T&SW28_FjAj3*C!oT_lx_v)}euA$K_e$WV6Q z2kF6`)87r@{5Jfn_(M0#COQW_4BAKUrzR0qb|k2U(AA6dHlmN;^-$JukRg`W{&nT@ zIP09!Y9E~&GAZColliviHkdXJ-M!|pTl)sl z!E56mx$BK&gDKdq`{udRw-<|LS-mb?FfY}{o=Ww4?`F?Vwk7%V=cc}|KM9iR(q|ND z5Glk_Lr-`qim#@Q1++F%LwQoEn*0>WF6V^ggOy`au)=VN$-m-QpJ}-EqY%?|3 z#F;hD27U%^T1n9s7(WR>aKz#w&clNAqWwPXnf%t)>-~y;xyOnj^y6!@aE)LVsH59S z!>Zi&yq5jq!s0c#HX0XiF*1i?CW;NXfl?iWrZ(n{tWYpPyjHN@4%w?_9DUeqX8S#t z;`I1PdlO$Q%v?%SPwVlVw{i*Ry%##FvALNIt#1tNW!3nsYX_@v$;bGVLL_x>!EW8U zoAv60U{1~-?7D~dTw|aHjcfnnE*Zk|6Ude+TzcuSrhFE>Bm zjDU%m=+-dzfS5lYivaV8w^+HopLp?A@{6-JCOJjJfu7oD0?zV?kwLOz=(&xeovWvW z5Z)7XeO2-Jrx+ncZm;kpdE=$aFO}2a zj69``5pS_}jP<=wMTSEz(xo@IyKN5TIeyGsW?8`haxOOaR;=8>=%Qvm(^vy4|UynY+|^DUK~EM^y?F#lf(7@ zZmK#r=qG?$vI>kOK!%f+L9?xRmhNBmZO`Ln_(alIj$IL;pU_Z8i7tkxyFib-jwVA# ztXIhjhJ2<^6Z}?k3A9A0M3ox~P^dHg#Rmc8P`SIv&fUejwk5Cy3Uso21>i*C zAR1yB`TE-)COXNXJ$fHGa}{3$tou#7 zI(+v%dfOC=hCoPKN?>XcJq)6$TS;HQ0gnY?L9k5i+XbQ59p88o+JgS3u5a1z3q)X? z;y3A|Ama))cHgltyq4xg*t)$(pI+E$dZtN?z`c{NMS0v&bkZ8HjWwswt4I3; zb03?Yjvz0tvCAaq!+V$c{q zh3`0FJG-vEHE&J3P0+064wvGsWBI(y{H{XCM(@^bbl^j2i2fTrfwN~!=Po*9y9Em= z>kT5{RbSA-*MFhoLmV>-jPwbhh^!@LO6iYU7vwE9E%VOf71(}>Q!VV8LX44kV+v$c_S7>uz z0F|3Q(rGrA+U20x@kUHEqs7eD#_nPNXY=2d0m3Z*T-`%p?k~*ejdBJzt}4zp39vsa zjLS*oz#=bRHPE|ueDQ*Rh{Dv8@q-5?mx8GQ*3$;%ud*{UZ>?+TpJjANVYP4?Ul65A z$NWQbfauz}x@bh*x}}Y5k~_at4B^O4Ryo)hOeqF2WqR}B+P#)E<#EKZzFe?7CKEst zk6l_l~FXJ#xk{hrs}6PW|f_Ylb00)C;J)+THaf#Pqf z)5B0qnpVgjDD^TD-!*~%8k)N^m|r(YCDGgY+v$9}6W}8zc^8r;AU32#9&yha#_ol3 zMoat$HgNGJIv%tPa8p_v_VHXp!?bZbV24`TS@`4k1ruuno?)yyXFh2^;o$j$VDj3; z=w%w7JSwIE8Y6NBNAw=V?th_w`W71od@ddF@3X>j5|ozg?XGrY5XHB&>=&E$;ZY7d z!stwCou!Th&Kpwhp|qc!_ptP9=kP1V`Yn(0fV*|Wx0KM2FGbM}pqIBr+C%Co&qE2m z3q|GholnzMU6yVK?hKF2Q@2VsWEINGQ9f4Eb2`FdR72xFb+$_{Q%l2`?_D$H0MAg( zaNfr7_E3tR50q}Rt8-%jd9fVkN^vL{K3z~s$d5A8L{W`$iw*842l45YqS%!V-U;+^ z)X=$UCu(qAjizb#nJv6eqWi|>2cVF;yS@)}Avg3b9p9}(*%e@}thNrX z=5+7GXXNBW+m7MJOfu_ity2S0%bLoN!~RQ08s#y(s}=U;9fNp_5EEkXH-e;7C)M&G~49h^1gq6PJ`yLG<^TqTHKC z$ua{a_K4uuv57%v4|2FVRAI4)RkgI$wfD8D>K{#<%_Eg!fSMo+-*Y=lj zR`5Uwv%g69Vm3fOue+1OXd^o~rZR6T*ZYy$(2uDtyg5V#bo8@;kL5xZa`y&J`8iKt zAHB0Q{6sCsIxV+hu%T7$-6hM^EJOt_Xw>F|A&tpn(91=X#jNY7IW)!>S2mF1q!fv# ziWFB7<%KVfjWHg=zK^aYKMv3`R$j(q`-g|8OaYL@962y>~K-k*W#gG}kG z(+`FH5qp=Gkv0PQFa0bEGsC%%%PC&0V9k$~9+K$tjKoI;d4iTl6mrcR2PH_cL=%$M z@1Z~f3>wy$0Hep=#KL?39*6#@*!~Pm|M~*f@!KAWE-HT@D@~OOVhT5|)NvkPGIF6E zgdFPCh@CQ*Zo4@2Of+;Z2T=D_4Z`u~u7`O2C?V&j)9=DbSMd~8G$q6PD~aTX>>T^H z=N_8cyeT{du&1Uij(${%e8B7xtx1 zZvFOC)D`uc@YIWm&%sndA2x|PI#Jt9??m>E&BAF0Qe9Nd=jqi}w8(rghF^nRn;aPB zr7rdVEv)H3)!XmdV}$Myr?;eldmr~30JTNsucQFDAE^EvL-wxV==sK*r{@YO7eXmH z=n2QNK~i%_>i-Yu=>F8>KlK5yhvlOCx!Owl>=dvs z9A7Pk$4<|hOe@VNDaX3Wf9__K_uT2b{|;UGzeV7KnA*EyYNc1Dr>)F=3Ml)GDn!SW zuy97x$H8*oQ&(k4H|RontPCvquntXLO82+L^Usa5sb7iay=E{Y{i_Nn%lv_y?W6V9 z34lZ{A!Z09>i%#ai*1sg;~Ty1v2a9ij6sQDa{HW<@VgYX(}t~a(fOISY!}k*?M3l| z6D>l5y!t<+V1Hit7xU+zS?r(Ct^WN)X%dkPHzoAh3(|Y`Ot;dfO8;Gu>Ki+wH{YT`RoI8!! zjnujU;GQ;%UArrfAIu=FpbIPOh4jnuR=XLWd&f%XYI(Z?N z?n=i4LFX-lQ(vnPU*bK9JAQI)pc=^!ig*Ir$|S(>U;tpMVDYo-ecvw$>{~yy)hO1X zkW9J?*-i(9zDIcJf#nFwc|$<@E&*R_T(l0NN`Bj;2L0SOSaPNCr{Vr_^#An*z+Uk$ zj5Yr}ogYv1&oBH>Xfgg?Q~%%4_J4klKkdQ4{#F0^cmLOZVjxDRURa_}r!$ysRsFoU z@~DJ!!|ZwGZ+mQ2?y;iZ+n9!Pp60w^pdI+u=amHCy8O)-N3A_Wio7%b%?NPT$*6Nf z&wBCNq}@&qs;sIru!tJCHWeaId~Ox4V#i=T2`2Ucg6iKU`NqP16X z%C+S|Pn)D7zJ$-^Z~43`F#PlSka$-+D%#?WddJ%nJ9*V+zbvxhpCQk+QN2#DKVh%n zMP>pAz2)Y&qtuQ27ZV2Eq}V8@0on)Rp%i_X=C?huY3F`Vu8CykInutjB$!!JoL#!| z-j!b_9w!l*uNzZw?Y(EtDlZAnV=o2_?$6F_jY`I7E37LzmW0u1&^Dfv=*M`agdY}W zV2;an(&laR`(XxlP9ID^s4D9)J63&llZ%w z#!0>OBL@pR_4q-3OsjJR3_I0rU$}!ftGT@olq% zNx-ua*K0y&1^b=moaKUVW+s5P{U9$u$AaILm$HJWuWL-oKX;lp9!9<7!|s6|Eke~^=Oy+7pg&fayc)Xnv7?Ne}Ih6!5?MmdVs z+cs5c0~!Rtg-Rb=7L9Ye?<`+wTsAH?>-w4zA�@T$Hin*tquL7J@t_55~G2=vR?n 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 literal 0 HcmV?d00001