From c81e94bff67c58005eb9dc057df2cf3fe49a4317 Mon Sep 17 00:00:00 2001 From: teridax Date: Fri, 15 Sep 2023 15:30:07 +0200 Subject: [PATCH] migrated template files from overleaf --- .gitignore | 5 +- .latexmkrc | 31 +++++++++ acros.tex | 21 ++++++ chapter/chapter-introduction.tex | 2 + config/author.tex | 22 +++++++ config/minted.tex | 16 +++++ config/pages.tex | 32 +++++++++ extra/fixes.tex | 6 ++ extra/utils.tex | 23 +++++++ glossary.tex | 13 ++++ main.tex | 73 +++++++++++++++++++++ multmedia/logo-abb.pdf | Bin 0 -> 4422 bytes multmedia/logo-dhbw.pdf | Bin 0 -> 19090 bytes pages/page-01-title.tex | 69 +++++++++++++++++++ pages/page-02-indipendence-declaration.tex | 24 +++++++ pages/page-03-lock-notice.tex | 20 ++++++ pages/page-04-abstract.tex | 12 ++++ pages/page-05-summary.tex | 12 ++++ pages/page-06-preface.tex | 12 ++++ pages/page-07-indices.tex | 47 +++++++++++++ pages/page-08-chapter.tex | 5 ++ 21 files changed, 444 insertions(+), 1 deletion(-) create mode 100644 .latexmkrc create mode 100644 acros.tex create mode 100644 chapter/chapter-introduction.tex create mode 100644 config/author.tex create mode 100644 config/minted.tex create mode 100644 config/pages.tex create mode 100644 extra/fixes.tex create mode 100644 extra/utils.tex create mode 100644 glossary.tex create mode 100644 main.tex create mode 100644 multmedia/logo-abb.pdf create mode 100644 multmedia/logo-dhbw.pdf create mode 100644 pages/page-01-title.tex create mode 100644 pages/page-02-indipendence-declaration.tex create mode 100644 pages/page-03-lock-notice.tex create mode 100644 pages/page-04-abstract.tex create mode 100644 pages/page-05-summary.tex create mode 100644 pages/page-06-preface.tex create mode 100644 pages/page-07-indices.tex create mode 100644 pages/page-08-chapter.tex diff --git a/.gitignore b/.gitignore index 0509c59..fdd247b 100644 --- a/.gitignore +++ b/.gitignore @@ -120,7 +120,7 @@ acs-*.bib *.sls # uncomment this for glossaries-extra (will ignore makeindex's style files!) -# *.ist +*.ist # gnuplot *.gnuplot @@ -312,3 +312,6 @@ TSWLatexianTemp* *.glstex # End of https://www.toptal.com/developers/gitignore/api/latex + +# ignore generated pdf file +main.pdf \ No newline at end of file diff --git a/.latexmkrc b/.latexmkrc new file mode 100644 index 0000000..4310bac --- /dev/null +++ b/.latexmkrc @@ -0,0 +1,31 @@ +# make file for latex +@default_files = ('main.tex'); + +$pdflatex = 'pdflatex %O -interaction=nonstopmode -shell-escape %S'; + +# Specify the bibliography +$bibtex = 'bibtex %O %B'; +$makeglossaries = 'makeglossaries %O %B'; + +# Continuous preview mode +$continuous_mode = 1; + +# Output to PDF +$pdf_mode = 1; + +# Keep auxiliary files +$clean_ext = ""; + +add_cus_dep( 'acn', 'acr', 0, 'makeglossaries' ); +add_cus_dep( 'glo', 'gls', 0, 'makeglossaries' ); +$clean_ext .= " acr acn alg glo gls glg"; + +sub makeglossaries { + my ($base_name, $path) = fileparse( $_[0] ); + my @args = ( "-q", "-d", $path, $base_name ); + if ($silent) { unshift @args, "-q"; } + return system "makeglossaries", "-d", $path, $base_name; +} + +# Silence warnings +$silent = 1; \ No newline at end of file diff --git a/acros.tex b/acros.tex new file mode 100644 index 0000000..0441155 --- /dev/null +++ b/acros.tex @@ -0,0 +1,21 @@ +% ===================================================================== +% Declare your acronyms in this file. +% This file must be included in the prelude in order to work +% +% Example: +% \DeclareAcronym{usa}{ +% short=USA, +% long=United States of America, +% } +% +% Use with: \acs{usa} +% +% Available options: +% - short: The short form of the acronym. +% - long: The long form of the acronym. +% - plural: The plural form of the acronym. +% - class: The class of the acronym, such as "abbrev" or "nomenclature". +% - first-style: The style of the first occurrence of the acronym. +% - single: The text to use for a single occurrence of the acronym. +% - list: The text to use for a list of occurrences of the acronym. + diff --git a/chapter/chapter-introduction.tex b/chapter/chapter-introduction.tex new file mode 100644 index 0000000..272b4d8 --- /dev/null +++ b/chapter/chapter-introduction.tex @@ -0,0 +1,2 @@ +\section{Einleitung} +\loremipsum \ No newline at end of file diff --git a/config/author.tex b/config/author.tex new file mode 100644 index 0000000..c96e1ac --- /dev/null +++ b/config/author.tex @@ -0,0 +1,22 @@ +% about this document +\def\reportTitle{Erklärung wesentlicher Bestandteile des Templates} +\def\reportSubtitle{Untertitel} +\def\reportType{T1000} +\def\reportStudyYear{1} +\def\reportFaculty{Technik} +\def\reportStudy{Informationstechnik} +\def\reportTheoryLocation{Mannheim} +\def\reportSubmissionDate{10. Mai 2022} +\def\reportEditingPeriod{1. Januar 2022 - 29. März 2022} + +% about the author +\def\authorName{Sven Vogel} +\def\authorMatriculationNumber{1191225} +\def\authorCourse{TINF22IT2} +\def\authorCompany{ABB} +\def\authorSupervisor{Herbert Grönemeier} + +% set document information +\title{\reportTitle} +\author{\reportAuthor} +\date{\reportTitle} \ No newline at end of file diff --git a/config/minted.tex b/config/minted.tex new file mode 100644 index 0000000..074935d --- /dev/null +++ b/config/minted.tex @@ -0,0 +1,16 @@ +% custom colors +\definecolor{minted-background}{rgb}{0.95, 0.95, 0.95} + +% global theme +\usemintedstyle{tango} + +% set global options for all listings +% these can also be applied locally to individual listings +\setminted { + linenos=true, % enable line numbers + bgcolor=minted-background, % background color + resetmargins=true, + tabsize=4, % white spaces for tabs + xleftmargin=24pt, % margin to the left side. + escapeinside=|| % symbols used to escape LaTeX +} diff --git a/config/pages.tex b/config/pages.tex new file mode 100644 index 0000000..6e63f00 --- /dev/null +++ b/config/pages.tex @@ -0,0 +1,32 @@ +% set page margins +\newgeometry { + left=3cm, + right=2cm, + top=2cm, + bottom=2cm, + includehead +} + +% configure hyper links +\hypersetup{ + bookmarksopen=false, + bookmarksnumbered=true, + bookmarksopenlevel=0, + pdftitle=\reportTitle, + pdfsubject=\reportTitle, + pdfauthor=\authorName, + pdfborder={0 0 0} % disable border +} + +\captionsetup*[figure]{name=Bild} +\captionsetup*[table]{name=Tabelle} +\captionsetup*[listing]{name=Quelltext} + +% mak line numbering on the right side (outside) of the header +\pagestyle{fancy} +\fancyhf{} +\fancyhead[R]{\thepage} +\renewcommand{\headrulewidth}{0.5pt} + +% line spacing: 1.5 +\onehalfspacing diff --git a/extra/fixes.tex b/extra/fixes.tex new file mode 100644 index 0000000..fcbbda0 --- /dev/null +++ b/extra/fixes.tex @@ -0,0 +1,6 @@ + + +% NOTE: +% increase head height to fix warning of fancyhdr package +% complaining about it being to small +\setlength{\headheight}{15pt} diff --git a/extra/utils.tex b/extra/utils.tex new file mode 100644 index 0000000..3e76e6e --- /dev/null +++ b/extra/utils.tex @@ -0,0 +1,23 @@ +% make the @ symbol available as character for command names +% requried for some commands to work +\makeatletter + +% lorem ipsum constant +% used for testing purposes only +\def\loremipsum { +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. +} + +% apply this as scaling for images to make them fit available space +\def\ScaleIfNeeded{ + \ifdim\Gin@nat@width>\linewidth + \linewidth + \else + \Gin@nat@width + \fi +} + +% qouted text +\newcommand{\gqq}[1]{\glqq #1\grqq} + +\makeatother \ No newline at end of file diff --git a/glossary.tex b/glossary.tex new file mode 100644 index 0000000..f351e6f --- /dev/null +++ b/glossary.tex @@ -0,0 +1,13 @@ +% Defne your glossary entries here +% They will be sorted and automatically generated +% +% Example: +% \newglossaryentry{Python}{ +% name=Python, +% description={ +% Python ist eine populäre Hochsprache. +% }, +% } +% +% They can then be referenced in the text via: +% \Gls{Python} diff --git a/main.tex b/main.tex new file mode 100644 index 0000000..a3ac909 --- /dev/null +++ b/main.tex @@ -0,0 +1,73 @@ +\documentclass[a4paper, 12pt]{article} + +% ===================================================================== +% latex packages to use +\usepackage{graphicx} % Required for inserting images +\usepackage{longtable} % Tables that can overflow pages +\usepackage{setspace} % for more spacing control +\usepackage{geometry} % for margin control +\usepackage{tabularx} % extension of tabular environment that allows dynamic widths +\usepackage{hyperref} % for referecing stuff +\usepackage{fancyhdr} % fancy headers +\usepackage{import} % advanced document import +\usepackage{pdfpages} % include multipage pdf documents +\usepackage{tikz} % graphics, diagrams, logic +\usepackage{imakeidx} % inhaltsverzeichnis +\usepackage{nomencl} % nomenclature +\usepackage{acro} % acronyms +\usepackage[ngerman]{babel} % german language support +\usepackage[labelfont=bf]{caption} % make caption title fat +\usepackage{wrapfig} % for figures wrapping text wraps around +\usepackage{minted} % highlighted code blocks +\usepackage[toc,style=altlist]{glossaries} +\usepackage{tocloft} % control over the typography of the Table of Contents, etc. +\usepackage{listings} % code listings +\usepackage{color} % more colors +\usepackage{tikz} % painting +\usepackage{tikz-imagelabels} % overlay labels for images + +\makeindex +\makenomenclature +\makeglossaries + +% include acronym definitions +\input{acros} +\input{glossary} +% include file with fixes and workaround +% as well as special settings +\input{extra/fixes} + +\begin{document} + + % ===================================================================== + % include configuration files + \include{config/author} % meta information about author + \include{config/pages} % set page configuration + \include{config/minted} % set minted configuration + + \input{extra/utils} % some utility stuff + + % ===================================================================== + % meta pages will have roman line numbering + \pagenumbering{Roman} + + % include documents in the directory pages/ + \include{pages/page-01-title} + \include{pages/page-02-indipendence-declaration} + \include{pages/page-03-lock-notice} + \include{pages/page-04-abstract} + \include{pages/page-05-summary} + \include{pages/page-06-preface} + \include{pages/page-07-indices} + + % ===================================================================== + % chapter + \pagenumbering{arabic} + + % add section title to header + \pagestyle{fancy} + \fancyhead[L]{\nouppercase{\leftmark}} + % include all used chapters + \input{pages/page-08-chapter} + +\end{document} diff --git a/multmedia/logo-abb.pdf b/multmedia/logo-abb.pdf new file mode 100644 index 0000000000000000000000000000000000000000..07b6ffdb3428f50bda5c774fa7e0dcbf5e74983c GIT binary patch literal 4422 zcmeHLdr(tX8gH$%a@kcBYFl5u1gO}W+(#1f*d(+PKz0d4UO^p%%e^-cNOI%NjR}#K zBG4L&6d$x!LDBWmRYb6|DwMTip{xozxUh>dXiIfrnWENqVAt2)ghxZ|%ntwTOlQd4 z%-nm<@B5wa{J!s;`OXPcE5o@6PY48l(|7qQfPyecrDXy#833tB1|u*A0|jhjEC8vo zbkYn8M?d1TO(Y0~vfX+r9Z)C$(nvTBo!D`LDAJhDWPqqd3^}B&nhRXw-as z1gE{3p-IdD$UqCO1zef!Pig z%%21%@Cjm*h1R=#CUA(b>in8nUdJGKL(WI8Lfe0ev zxtor`CTvv{q0?sn^2h?d`^aucmo+PtR83Qa1t)0*j_GI$WOWen1YnRe!e%zauGVxK zGiB&-vs1NYGH8;Si-^FbT8cJci~=*6^g0}K2HA;|K|ghkJFHSkl@xAq>K>_7SS&h1 zDj>9C6c6TeB_avJ6=*Snn}!i0E{O_o_8~3+18CQ(r9KdBTkMpiUh$VUn~}L zgT*48Dz$k_^C&apbnZT4-fTpz3YMQ&Ap zxK7WIGzf+3oy8)FQv?Y>V@ClYA9btsZRKyrtu-$4^M3eG-?#Ia{ucy`{3AA372p5* z(Pne*GGX7Xxm(D#OzWTW_Adc<+{^LF5o+w&2SOtIb9z$-9$bz(p1VDvDMBd?BkWJY zBBU=7?FWT*bo;TPo`ne)^*bL`E*Q~VQ1%9Wej-BMd7-&rzqRB@eCDk^mSUf5sHf%! zGWwo($)qj*oTu(fXei{~F6E?QbzGjNBA+i+l;SHq^n{I-gjMQdj15{HsQ zmWTURAKdmq%Go)a<_*=V!TEbzz(C`}BC7(D#WopO(ls^YtrRGJc_ zgx`Uk!uD6X%jZA8KQLv@3cnCd?A+>3pG}3fg?*&`8H!(c_%6So;ghnaq!As^*qqQ+ z6qDK?dvaG<&&@bZ9j97HA+Nt>Ycrr9R<;p)e(_d+24Bq z;(O~4Tu-?9`>>h&DnDL@lzW`4>#qIwnmE-`Rvuu*#1-89gX^G(Hm{xXm<-=7>uWSS zcNY?l#_oaKK|8pyd+*2^M^5*jKQ*;0@QtOX23ritFXbP4QhHllx~0h9BjA2`q*rkF z)}^owDm&F!QftgmzAAtDa4LWK={eltw!1fb=bgUy?t^@i(e(epBy%HD$)5ihr#P=?FPe@!Drk z=NA8eTFx#-wG&F$VX!@;z{}#v-=@y9^To5$Ce~b2Wv%)wc`&l7H&hYl8UU#LntfiGOeYZg$6yVczv! zt4 zAD`)~QvsSzPT$nn0iXH58cJ@q#`tuCU&EF*rqDb*(8ktAe+mAD{TG3hv9+n=PkaD7 z8$C3gqLYE+KV;OTrJ(8lOZ;Cm{3Y+;Xm6}<1SmY$ZLkO%r3m%Wh*hk}sEKZUF5D;007Mwg2utk+EL$?#@d1CFN*)-5HfZ!v^TSL zG_$eB|BF-Kz{bgun~?Bp{M)yGYG!5oZ*pq~+J9(CYiMId=c;c@$3RO@_jj=E-!%CT z@Ylc>nDIZrMuz_;wso?%{D;m)hIGc3##YAGjt*aVhX25SSxj2`-y;7(|1Vvvtmyu+ zxNlrvU=G1A4>=kOeSLWV^Z-U0dUhIm7A1Oi4gebmBRds6fPhl!27mA)g7zOAjLnW6q)PW}tWMfbml{-v4Flq0?V>7Z>7jaxydG&^Iy$ zFdG3_X!O~bnP`}p08BLOObiS(1^@sXqdp^ml?lM|599r(?B5v0tsNZotqqO;#mH#P z#zN1`&Q4>@z|2C!#K_3}#m&S>^EHW)5epL|6T2bvzZm}}`^Csb_t)n9+h+ai4E&?- z>kxdMCc1wgCmv}0{|`R@Gs%C;$p2%m|1sBp%L4x`@c-jV1b@$J3{hv`k>))b&5i?6iV|#o$5zD`VMPox7BV%Z~e?AH@Ff%X% z{ub@Ku4Z{@N0YWkuX|MGvuvj)mTrBY05SOnzV?*&X58V^V;~eecFNPk90{69OW8e< zNFGiYfO^OKdDopi{pZ7nr`z&=y5_O+j+ZLu&qp`!_>sfs8{X%%`NQ4Y({Q!!JdekR z`_#0zPxYs975E3$$pf?d2mjT<03+|)Cr66PTl!I0h?akF1do;gG4C#QUgWvj9pEilb?h^~8w;xIhIe;Q zL2||V=`~t3!X8~ZfyZR6p}V*gamwiZnuW0WJb9w`2dn+L=8-XT6*O`3HXnD5hi$gC zGJdFjE}^Az^WzUIVf9uqH0HFb?!)b$nMO#rLx&o)^KR4?Iu7?|JF_bSyaApQlGE+! z&(Bv2YTl3+0}zZ;N7{EuL7wN_*epDvk7kf+-8EI5#TWlHE*u|syQWMto?GvqS7Kr# zv!KQ#%AP%2KB3dYf6nyYasnoM>m;vwFQ3%JJ2?K>5a*)4Q6el=(~WNB%-RMw$Ouxn z9%4p!PnLBJ9hGKsmRN8)a#~u2Q0q3(ku9g=kE`qM-B;sM@X&E8>ITf<7XR@CJBe4$hCiUZ<@%tw3f9fpq+e=d{jsr5Dh9fUWn{11 zQTanV(1jaCNxNkg0Y$g4s?5bLU|ffxQxfi?(wcix_~xNn5bes`d2rCqgg1+0J!Levgfj`Y{ zspD0vtSz_EpVM}`&!dwuwsJ2CAZMH$uk4Uy)a-(7&i$Pb+g9?|v++wCH^u(=39g$! z02;@YzgIEvI9dS38fUEr=nCvdSt8l_1CE!=P*&6syNilYnV$6EOi$==2^KLckqx|)aERk4?(IbQ(yl}CeWhikuyg>` z5zC)U($jGTNTCSHL#d6t;mx{S_{BHv>=4)sv9ub|!j`^YT(bQ!*sH1uAk1=y<+~jb z5!*})a}IvE@hNpY34OOxuQ$=ztVu+WCO-4;A2l(mpt!19TQ#1`1Z&4D=uACLda4M@ zlB0I0Tfg2U>5}}G*Zp!J;DT6x!00!5Y9P>vb}DI2POhay%NWTfBpN96D@!#4hl|I+ zOcpk4PZmyzF_x9&nKQ*#q%kd3qz^=N=m*6;?(Ur#M@Uk0^sA3lld==no3q8FDI)I+ zz9mf6kwqPe`|n!C*B(!bLgjK$okYfoxf>o+Y`GlA|LO3HAj)PDpc)>JhOc>WHhGRt z=Z1p@Mc^2C5LSGCDb>QfQXaebV*^w2d#KpsR}k+V_2JK4WC#0J0B1jGP*i(=KKfGWW9`fUSAR8)nZ8hnA5^sj=1Mm+BPW4A^ z9cPoWq~+Us$ePyi@#DM$I0R<_GEK;ppQz6q&nBRg)rLRVjkT<;_ls_86tY7~Yl=W8Oj@MN4mH(g9k3;FlWhhI4& zY43A1%~wWULn82O z9ADdN&9a?vzU3mawKjfZt{dR)Z2&c-Wj%;b&Py=#y+=wQnksMbYu323uR4Ci8^=su zI$5#QyXn8+zka6bUc6*j4hs1|>U(P77C5Ucj z8IP3F+y``AWeqKn+UR3)&s6tn#%+yCFl%i_16SRj5!uN1E2mp-pIgQ1EzMsWHsqBB zdok+$G2s63&FNrswEcQ_2)S7!K-+v5E%P_L1)3r6;oS;bFqqkm6WrXVK~~LiPUgO~ z@^<98Tw6$I$<9vjkvH;)iPDNGm+0X>rDQ=)Fv)zwO&g5pIVA0@LkA0@Y7Fn!<+_ z=Rsa0rb=XCPgz9O+~~_DrELF<&XMK;0WiS)jC23=qfxmjd}^!n);Fza!lS=eu%#Id zc4|KtJ1(*x%jey;s=@9J+7fx=&vo!)KX$5PDGeLOH6B7!) z0s=9;``r!z+HZREN72SoM9O6>YdeB1(DCX?$U1MN^0MXAE9Qi}SM=|FxOrhVHLudS zVGBwv`Q$7`@J=_fxzSQ zaB0ukA1n01wI7V~8HV-QV(S-ZH~vj^!#G>x%J*RxRX&5wMQC>w$9J*#1Zzd^!0SWk z?)l-#b}yFRqz2C;($_<3&T+5H-zFV9kylJD%E(+ih2u97=K?+Tz{NEQJY$B(=V>VR zVm{5;mm{aa{(`1c3ssQq#O=`ak!W7Lj9yslkHf#C#c<}Bdb{A**r}iGoueLl$Q-&_ zi|rMp1|!>yi@rVJPvo_;?cm2J423L1PTM-IKRXO3^U;ZfVDa#(dYGuE{ytN#MfEDx7seXQfgRRV`;W#ync zOI3%T8)XKS1-7@2`ADpxCM{D|rcbm?mZoo2@5Hw_L&0IEob+*WfhHT4J`nHH+pOiL z0d?ka}@o9lKdpaJbIC zBKB&L%C?p>+0(Srsv_tvGgRQdg9ke<_W^iA`m-qP@_){ z(_XO?vD}>(gFoeJmfN*@eo;Gx3*q4ivWjDfW)gFh+^go<6uiyn{POY9 zYYbOVcV7-Axo53mpxx~B;PHfCsaRG1=AFYzJ+|IIXr$5HMVqNr_sF%|fYAY3VV9O^ zZtI_!_#ou_oB1c+9Hvt3(&m1-d(%(rHMqEZ;RsGJjQd23~1_C)$@L-&(%b54Gi4Xzq^Ze^I{$u ze*ydcf!%~VSDwmOCZ;#PF8P>aY3TnIV?~N>kg@Vi)tvV6uxZRf{K@?LW6+97Uonjl1ixlmtojeV|w@TI7&Fkt)ElpK6>2m=bGDuUVtZq+ z4PhSwOWTuCRxt7~qmP%F^x1W3&y2Yp%AVA< z0|@lphPhH$X{7&)Ts~Q+dLW}ewO{u-L{(QK_tCoJ6$S z=xEN{ZYWNJ-%1>`8WRM^tqF1`N+*K#aN+n(5CHA{X3~Sm28Ck-(0SDq@jD!VM=yI5A1_A@_WU7~kqnQlEP z=7py4{3m5?F>ez6*MZo%whGN8_&7ORU)siqv3ijFD`J^ZF46mLgU&+NiW3?OO`oD5 z=Fui}S=+F)TMmq_J8ZbMw3dzSHaKk1rZ>WO8eG0v!lIh~qRbKH!J52Q$O}NfYvH>! zK}Rokv1={~kbh21omJ?c0)jpvb{QWbL3WiR;=6*oe*v0cAHBFYyIN}>TpJ(}&DQDU zmnu-YxVwL1_|;na@#?YN)zr$%Ac+WLwl~DYfpVOQ+oVjL_{^ zpG?ftNR|A={HFr$XNQIU@5q4`)1ZUEA2egHiKR^f=yoSNdP=~S;0h)ej9W&;W~Dp8 z(bMfN<<)&zJ<1shZBQa_xIjY;L{RApL~+fA!m=*XP~08twta!WfwLGmH@~e4!y^n_`V+JU5XEwtvV)T%WbEAAtzaAPKnN(ukUA>{(BGZ zANFr`;*LhRT2F*nxDzimE`nEVK?6@%BX2WLh zMB2qv>8`L99Q#@LFM?XY9%=|{3;%oDC4BFhwYuVqW%IFa4FoY7 z;Zkl{W~MYkiT3eiE;)o4Ket&9^70s}l1*)U7j;md;ax}~6YFZwZ0t?40N*FVsinmDO?6| z?6I^AT{)Xwf$-CdrFv(U!?TJnoMOuIjBdbIcnJ!D7BtJ6Gm%5QP- zo*Qy*r4AS(u~EyB`&`83QByctB7~>T5gj5>yN;5GaaeteKXC;Lu83UGe?D`>sJ*N< z)B+o~LtMtr`YWH|8c!5EKwOi>;?3quY@-~5m!UPivi{tn0oK6~#}cwtfIlHm zt*o-?=$z?s4j2<(DeXBs1#h)bovVZ`R!_Qih09-!<#dK4oKF7n;kEHI*Z^)JIrbF= z!AE5mbBbEs6y7GF(2eQEwtvilg-yX_M7#lsUbpc$T_MK;B7tB!BP7NuDU^ zy>MX|vgap149?3eJ%e~uYP@F*<$+o$4^N^qR<@Ltz9LbJP8wtbphc(5jRaZGXdEBW zUO~LtsGaNAm~Qt+!)oBhsMno%VH|df_Djg0L*$tY4p3VBC6w0+?p((G24_|<#28(I z2gIrfFN@)J}T}+^ITcI*4hxg?W_fWEeSuxsXcG3aoxwE&** z0}bKUro-WvmvzKLstqA>m` zX$(+rA1k)Z)3AzHvKq-I#^tCzmO9oClP2QV`HR}$G9l+Kj3C+3F_#m!Iu`;OLXSLsu+-95zqzjLJmNACSp)D?FwEINDXG~qVs!tdigZ~*vQ7*$P zU;#}_S47#PveN2Bzp2am>8_3NV?*DXEbIWk;Jd61+DL-pkRFa4C0Wq>d3lH`xOHUW zwd#k4b3Fb+TjM0!L!qspDBqv>m|}ghQ|+HJwDjjWSR67O8=S;F`DI+*X4gLRHy%U= zp9oAk&vrg|I6$2e*{_7sR9Knla?qebmk|y91_nkKd;`t?am9Ew5!%C*%TG?ZNMIBM zfaD%>VTnVATzRqW@G>BAi`9f9$J;#$hKnCQ8YC;Qgz;51}guV71&AH6WR)M4z01+jyTnztdPBD(J2Z?~ZZJ z&nhF4q(ad{u7mF2mXP=5MB5P`IKQHIvQ^yMoNLb!UNZWFZV?6AgFhjqA@A5Wqp1^C zdU(`vRzK_+&R1C}9k9}k<%TFk91#;47VAfHBh|^#!HhEt2SD$*3;kc9$5MMouR1Vj|9NeUOrF6wTLtQIl?hv({Y{UM4V{$0xcmhr0-M3j0|Y=lL_0 z21MmCZ9<9Rvhh|{1#P!!I=O_6rO1s$j2#il@&PjT`%vTCpD)nk&u1;H4vnTRt_y|2 zt`c^bcL356Om(l+3q67 z69RYml!j<%Vfg@)p0@9acI8v|>Qx{y?O)UD4T0wainUaQjcGAO-vH=nu9e3AjQN1% zusT4?1fg4u#Tv4j4wiUUO=+b1{`gL4G{GtoKjsk(gDALhrVZdX2j)&QlFKhJUXReu zg|aDwN7%9F^-EQ$;1YBq;ywF0fFy!}aZPBXr1qq5B#FWlkvw-F3G}F|ARcDCUA!1? z49a6D#8yZJfgs>~J!*vQBhZ2`uhVTx25_Di8i~+odJ2kR2MSmM>5}6c!cNUc7EEdE zaNLZ@PTOS&`DovAjhYte&ZEwux?qhQY0=1F?xe`k0uOnVq%aX1GWOd3DJ3vRL`svSBm|XyfF2=++g>m00^r^mLKp<-AqBvsiULrdjCLCebG!a8tT7KH3-7bl+h<3SO^VWZ za-QfFn)lU^;Sef}p$+dKo*j3^RVdKOt!4ro!;CWXZ_T3pS*4cSLJVb8Wac8sRkybt z`s;4#NDkXv(nFwt&wV&li>dhuUy(h`f#T;W6f*CNDi6}i%goTQ<^iFb5u5fh5pSlZ zY1pinmyxd>^|CYXRp2b6;$-Fb4U8A7`XxM`*eAiC(NgGjUB^w1X&d&6Cg7Ti9f?3RRgP#1&+aA0 zR`@%sgNz+_Bmv7*AY4ZKO(bT5;cBMK#S6a_1XPs}BPAZF(_bFno+d9h0g4`r%25f5a)o14fEHQ`is1_ftW#z>+)Cyz?K0PY1(MZN0hBQoG-+M z1Fcb^Lo>5Z9H8e?qplFjS*+wMEoQ>AM#3Xo;#l@c`fn3rAt6aNHl&rfai0|T;zV>^dWn6-yDGxs8jgj zO}Tqzd1&Rg%zGG}#z2;x;$L`SWtn<#u$W?1!KN`dc@)!34TX8KdmThVG1=TsXuY8s zejA~wBEgSI_khntj~AM%8#xIO&1Szy(~B~orcBE{a7*U4ML$dCJaK_0jfi>duPY2E z!boz8PAykaKp$+Nc%UV7mNa2~5dgtY3&{q(e9^to>{tV6hObd0rS{u``BSF+&cS1R zBW@ZrSffS^4P36uS)4bhT*X6A2DrH!e{em@f;qRWn125mS3%0x;JPl#0tcLbFpxR> zC_m^z+Y`*fEkt|n(gi#p&DEPb8Ma6N{AD#d5oGCsrQ2rf&;>5Nwr6X!&7hGkY(xS! zR66b1PXs=il%NlYMh%cSphm6h5mjG}5T&^ozA6)`H>C2Q_-Q6yW6t zh42vUCPBIJAd8W+VN<|$z`k`H3IFET=no|YWP?CQQk>=Cv7 zUh)gC{*73YE#Q?0o>jow?DLZO8nj0wbFp4cj{A_Bwx$X~eHuJZTp71D8y8w5EE=UQEzY&cs#B?w zKMQSX(6w>ayhfn&$YQ*4>(F3&RS2abKk`6t&ls>8qvSc6iQkqF-MWoN;9wwghZK9?43G+Ip^Lxq4*JaI} z?eSNR_k`d%GA6UCf(X$$a+hAaI5s5%QH+E-rj-Z_cRgTLDtD%V77M0#vodmiJL1J@ zV~5q)_!p+Q?bz6LusuN%3nK+8XRpyaVFO@QdR|Y}a;ps?YOvWxC75-+Fp>omI8pF$ zf0dPr=opM8#&H727mBdBhqndOLz zq94nT4I^=ygu2Q}Xt101Jr_R(&*H;*v0*@P1&2c59ED7Bv7;0Z=BLt*nFJXm z+|+G=`OVLQt>|@GE@~JZwnhtFOjTCR;-sdDlhTiRFjTy%%%CwhT1*V^hNm}bmt}T} z7ub(5V({OTJXMs?!o$!2*14fOI@Wd2Wtp47XApmMYsDMn^A4HY6%Xw(0qjkP$XRh0 zR<)AyV{D}HT)>JQUg(Wl>(e-jdZYjfRhSd&ip>HGgMfI}196ttJ9|78_3aPNm?QUo zlQISjRO!t!j7`FbdWxe%osgAHwyPmXvxpgS512Zjec^(sMVQ?IG-cgRVvS)ZEFYN9 z9R3|&cfR0_hT}lY3Pt9uB35=3arZG0yz1bRCl6M`T2~IxW696OaKzU_Qmu>NsLrFY zz-B%1Too;~poi`@3?)<{6X$U=Ib6B<=_E8ijjmR<^p4%EQ3lV{ANGaUZv}~1M0Xw` z!;QO(oQ$TcQ<;HS(@S-V3;Ba!QOgn$3B6L!W^ZkZlC)6pqPnN*yUY#rO-)Fdg)$qt z>2Lz=f|N>TK-vbU@2GT6^>vHK^?+Wy=-Tpdh{{r&AV?7yZwv&%m{&pBC^_!AE?F*Z zC-~!`3u=pn-)Un+!`y{y)DjMz5CYpIAy$1g$>G{^6?MNYEh)$$p)?&E9K&I9;cKLI zmLJ)in#C?moBizT4DKQqfr8=&7gxtn{HoB|B|MBEM=&3u1+8n&0BZU*EtKgt9)rq@BXe*cqaCv{jcOi7=JLbIuYgzDizb+k z92r9$_m?LtJ!f!dsC)@1Ij8#NMgj9xvElj0f&q-a#a7h^Ois-Oq=g50$DZJTD+$J= z(T+PNxii&H2+CT}){MGXFt>xT9pE1tMV!9rS^1yzRNo=#(|2v79E6y#nqv9=RQ+L7@@n zn4}ALKjD%{ks(;4P!)yL&J6gD$39!Ok4NFgUnZ~WEE=sJ=0_=8vBfO;TV-x^a{AXf zge>JCJaxdPxVR~fTb8n3LEnNC{3&!z(e>h-x3r#2LfyE2U{yucc^neCIKLfD3ek=b zT7G_Nf1)B0JGQ-njy(qW2bPz#fNwYN*YCZ_P}Ap=$q#~dq=9J)m2AgdgGP(&s6+QT zF6kKZS-*yN!wiZmPX=$Jo}m?#RM+3b6KpcdsaNc>8fDF*UQA=L&dN^qxKwyMvR1IRQHAHCWLvKFraO|8Oa8?A$ z?2IDFFOHh085!G6@ybu3WwLw^o(St@pUSyIB@qG^-z*!4ShN8X(x-Gcmf90DTz%_e zKwZ+woAnZV#zydAweZa4KX5Wt9xQqt%*c@NmWkwoZY8|u+>;ce*5xhWK$n_N!=sjS zQeguWfsw}by_KP~?Ej_n1jw`iM2-6r`nz^(Cr@<#vBq%ekKZ`PN zm~Ob&ia#JmN*5G#l%(gjD8MvMO*Q9WiN2dIxnjx8b;P z*EyaVA>>r!i36;n|BrAUN0ov_O}OV~(28;%vO`aNf7DO45F5nrFV}Z@bLk`G7rKK^q%{L;#QSs)GGUQkon((RS% zs@|~3Y@F{1wx-sa+NNjj)7vQ_DS)e+Q3Moi3MUhe)@uZ)2v5iSr0A}!5L(a^K8w}@ zi`Pn^bS?_!q!>e1>=$JT+>F8U*AT6nsm~KVVCoDl4`A_2h-fS(9(*nA6>PS5PP!~e zIkhh@w@H6V5?=7Vy_=V;gdSFwQ(5}40QsTj0As+dg_386L%%( z$`J$o>aMa5mNgOA2X4i+HkdU(2`o6HK1hdiM@oP*y=E2qZ1ym$Wkh)pq=vk*kikYJ1no8 zKaW5d!FGDjsQ+9Lr^W562^?{JoeiRJsJBvYpf(m5d=ZLgl`DQ~`{BpHL~zmQkrJ;f zP0M&j5zKdj-2|wAxvnLbB2xE!TY^+V7Y;9a+uTJY%(r2xMP#e!F7xB|rOkL>(3wRS z&_F9F*S}W~DP<+2F|E;luyrysB|ljLYI>BdjsCS19yBZ7-=*dbYgJZ@rrsz9ze@8J zEcLQ$hoDFJ&z9CPH@8&h>;B?Wiz{bf4Rm^y7pm9?nAB03eb*~13ep~R_la@>(XXuw zPFA5EUKH@gBFziB|AqFwO^(v9Ynm>3BcGv5$yGWU{r;d+cc-8S@H2T52#^BoZV$Vfcy<{*vfDQ%ry3d_~Ema;RzF<1vCMyP_2iC`pH%lt=2*f{iuP$G9 zA61Kh%do$HyqNcZRCCpHWtdlAUpLx#aE6px_Ws9&I z5hsDzt^llIuVx#$$@Qy~)NqIq_(m!(Wo6Uw_$lRF<8SM6u8hpz2r0+Tky zhjZyP`)+yQruT?l%~^s}U`?YXVrx8KQh=j_*@xhD##MDvN;0jurDF8nL2I}b zmVqhn#oaMxSq=>2a*8bvOn4fC zgDf`hG%>QQI^Tp~4uN1)iCUQ*KeXIIKd@ld zq0Ngkxw2AtNpGQ-p4O~3=rb5OD$A-P`q{;JC(Bni;Dnop2ra?BM$>I$QYvqG-lApM z)8k-t^jH(ib@mC1lq*C91#-A2&GOnn3fkhQN*G|}RdAu;Rx9SF^}QYp|2w|r(drBI z%2Xp{S7|KY#g1c-YjvPeziTzOmTgwDFhOV5ki++K9&7QQ8~f(Y(yj5WYD`q$3oQ!V zhT)f<)m^K~;UTa)zA+0JbZ$y7=5pj7o0rA)dceo@`<0grf6$N7Oy%5w%R$YM&9s-1czq@o>% zbSHys!Kr7kv0pD*a(lVoSOkCDw^PtPZ3(Pu8c$&?M;cH5+^3X|B8&bMPx3veAI+6? zk&}gk!wVLQl|aevBee#0GRSyi62o)hHC|LV-j=JWbDmVu~`@Nxu6g9eZSR|^9yMCxiZTo+y7U#`Y z3)p_>C{JY|CMED0Ve~x@RhZHDKt3QRdTl6^jjZkp6|&kY*H7)fy05WQ9@}2vd;1?b zc>%EcGRR5}cs!AX7>ajPysdcJi+719$mF~f?ZLN|4|XsxHp?-`;*N!IDI@2=l)lTE zxoF5Uo~x?2GtQas6J>`NJA6u`|4!<@1pPG6^)?KfCpA zABzbnD(Ep3LgMV3*JoC#GE(stC*keJ5N`ulD)Hy1ROHmL4(L-_u8_kgs;0vVQ%-(t z>&+u2IBC7hiznsI6(y04d)1Tg&8y~PkF}LUpY@w5l5C$=m1t(c!BUB^&Z&GaM1vs^ z>PJ9WlNd5jJ9o!cV~HLXBmAw;@k?eTYY@E5gF_PL5zM(Wn+S!Ev>#MOAcjU6w~~oa zS@l-^$`Q$sbkk^dvWJB#!W^Vga%)wM_Sgw01EL!>B0huu@_vERFbdpYg#b-{$F$QV zrp9Nbf0H>GnE5cO43)ZJD)2_BNZPp#N3+7PuKujhuOu>UEFoMWkJ|XjQwd^} z+z=^}8F}D6is~?|CyZG&OuUC36e*P;R73NccFKhF!8~3PI;?InZcPlUA#=D9n(YZI z0T00>BjYyuoA&x`2w#2$X8ZujvNdspq+0EJ`;2`n3VPlG)SKcISSxc`Qq0oxI_fu5 za9MhWVkB#GiCf4+6}WwJHezke_XJud@5}d72}8`7WhYlWz{5u?EeViKy??=C*Zqv6{WrkS+Cew^3G6?3I|v z5;VIXQF96(_uT22;SdbxYR+NHMr^gn?~>M_5SJxS?{}<#PHigrK!AelO_(g?9)ysE zEv#eKFqP<}yyoj&4+XC(!x-jRX)35nTrxEDHV#G!B_}d^P#Lr+6SNp7*r33CtsQ4Y zn%1aDMgxcGU9KC&>+RQLq?y8#n#BxI0(X?@!pK4U>Cv8`VEdsCv|;BB`?qBel1mM;!t_%~cJt1H+TW`b%;{kJ%{$;Qf)~Xg&Z!kRUS0Vy zocDanF@M~2)5gEh_|r!|=Oe-zCYAHi(^7!#vGiaw^Q(6>Ab}-m7-~oJ(N_i|NNel3 z)e<1V;uU~cMg+wi9P*SaP;{2Q&WY5a`|G2%k&RhBet^(3VLzP`L+~?~u4abmruw(% zL0}fZ0QIAa!GQJO*TG{p7njB&!Y*}n0tHi?T9&hPAotQ!7r^MH@`xn?i9l5X!IG5? z=^QGa7^BBllfHKrmH|otj602I|)w>nh=A6%hyOqg|pD`M=9T z^}C`TIjy+jAO@?uV^dLr9L=;Hc98_;VRfPR$*pMfW2g`j=ld@KRtmBm;cy_p`pHrJ z^t2S9hOG2(4n}T6=Pu$7`GNY)h1}IP6EyYlG0Gt`p@N0kCX}|C$+7(b5>}|IbA+lO z_yOu*mBAPs*)Hz2r=wlf<4_P^O62y5h3U?bySK@K=wZ-uL|T9A54G>>qpv`ouiuFK)80A~KXL~Zbq5uRh>GN+PfuO;Fj4m{au7_y*3Sf&+sjLm zZ~6cNCg3KnA4=I!AgMbKisK0V4nx8GodHD~d@_m5(9mwQa zHL`u$wzVGWz@fGwJJe$CIUla&NrBua;>e<-NjhCHFyGLQB6Pau&G8^;LJVqjj-;tU z52AHCM?tcD(It8~NlPE?(tw!3-L@1wN^EzAh~cB^*%4%LJG3E-nz`zJb&Q(Hv70mM zNbm)$BF#M@&~L>x8>f>JF?*KPP&T{NQn7Amq*%9!K`zpeecmkl>Zw0x)G;*cByFE| z&7M8bh5(}}!Xv6Z;puq8>Yep3akEvU~PZ_Y`N8uH~_CBmebarvY4l%~M z;cO+PRfe_QZzCO$5dGFvCs3fGIyI;Kt|dNBqi9hqq5GK8u#Q~4(0VfgVqLym&c`5W zOk9?D@N*>5_^OF6O-emFSWLZ(X$~_}>&b~(r2&w<7PW_+M(Q;vfW~aB@E}QP_2Hpy zc53*O=atI1bup3)UAg_7Q!%-~#Il&0)!0vH%)Y|yv#h~p4uKl@S@1_!!#e{vXAw2o zB)r<8S3PR|xrj6O=u2jmSQG_vy{E8+rxi5}v|h}z(&6Y>HTil{4& zpC;8Gr^xRN>aUNjfFj9sEl}1~V+Xa+ z_c$-@t8ea1-gd_()a_s+sY&OQB*avSO{zoo^G9?^b+GDLX?5%FMkrKO!+$-r$_pgx4#>MJ-S-yby=Eh!ZXOWH ze~uTvrPYcyiDT*wPZLkBWU6o=mr(O&E)66#Fua&%-zL5B0oE3yl=(k1ZyEpJGH<_1 ztT;I0Gcx}>2bYocs~V3CKFhy~@W>jND>_>JM^dg=?5xB&J!0_H9je0-tpHSA$%9i&b!CccV+BP)z&8U`ciM_vkN|DJ+Ru# z##1PGd^({Fay`8FvMOzmQWHEbxnu)7*QAc2Wjo{4@FUOf$HwZmiI9(Z&na43QrRt5 zq|lo;_vPLKkibdCJp{Ze(5@zrWv@7CN9prij8y)OX4TPq`E=MMYWffXw6qxsGvGuC zV>BUT=mN$#7-UNDl-?(rNH@)G$)}R)_2LeLcX)$ioV~I)M9cX`mX_jIw(>}a0BGG- zZL8tIRH0Bk&D@Ru;`nD}CN%|P6KFbBd`*Tg0E6~_><&W%J-z4Yfq|Zhk^3CK z5WlcqFQVAr?0$Y>ar%rzC~|1zy?gI5VK?JCCQ#^vhwKNeK&V T0D@*