commit 5f447c955d567c3e2a0ee77d8c244a28d4876223 Author: Christoph Urlacher Date: Tue Jun 23 19:04:53 2026 +0200 Initial commit 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 0000000..eb6abdf Binary files /dev/null and b/tudo/tud_logo_rgb.jpg differ