From 4d5452e45b518dfee08edf4067b7960ec110eeda Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 12:43:44 +0200
Subject: [PATCH 01/10] Create bom.md

---
 docs/report/bom.md | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 docs/report/bom.md

diff --git a/docs/report/bom.md b/docs/report/bom.md
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/docs/report/bom.md
@@ -0,0 +1 @@
+

From eee99a865b1d975b7a8aebb898f3dd213ba60998 Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 12:45:56 +0200
Subject: [PATCH 02/10] Update bom.md

---
 docs/report/bom.md | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index 8b13789..89261ba 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -1 +1,6 @@
+---
+title: BOM Generation
+---
+
+## BOM Generation
 

From 30e6f63810c35b699ee5f36ca48ad87bd684872c Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 15:31:09 +0200
Subject: [PATCH 03/10] Example of BOM report

---
 docs/assets/images/report/bom_example.png | Bin 0 -> 28803 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 docs/assets/images/report/bom_example.png

diff --git a/docs/assets/images/report/bom_example.png b/docs/assets/images/report/bom_example.png
new file mode 100644
index 0000000000000000000000000000000000000000..a674631d806b21b410b95b2a9d6092ff8d87e785
GIT binary patch
literal 28803
zcmeFZbzD>b!#6w?L`f-8Qju=y=8F!IZjc(%Dcz|eQUX!~1`GiKiGk#((IG9}AuzgQ
z#E9qM@4Bzo^?UC7e%;q||NV^DHqP13*=L{giFbV#uC6LiginnR0)dDWUV}A3pgX|*
zmd?G~z#h9fg=XOCzVmB+HxP)p?dE<fk&~DP*oo(^pdyF2f<uYVbkBjK@d2=l&Q|-4
z`%9;H?<^hNflUzTrK_c>yQRewFI#t;C-Mp^>J~hfcp%UdkOEj%+k0wjR>nOQb0u??
z<Tw4I;ia5(<QfxyxauPCm%Dn=|2$opby&fjA9yNE6)B7#Rd6rk*G~bn#CBQmrzo>5
zb$Rnc?EF=oJ{6~~iL5cWI&@wyigq17pS)NlTD%;gnX}2A-zC2(i2p{zKcqMRJi*+$
zc`{@8?`$;HG)P)|!*ZQSEc7uK%sJdqA~VfKMP~BF&7`CuRaO%kir_Z<SHq=X#;lRb
zgaVPYH^nto-KdO9r5DIi_j*3XxIgs!wX^)~1Xc>eOy!4MJ@E2rTbPyN`o;QAi5u~x
zPI^EXP@skEuz*rTAhzeQyo0Z%{)u8)Rx0%AVV;|M$@nwItT`s(9F4t2^c7#QTo+R`
zF0TnO3ky%6ngrEU!9h=X>-q;=_8LBXG4Ye7VTjdhTMyPB4T%;X3yyZ@y#(&K5~P36
zfdrYGm#pJ-J&|;Yvtqk2#%U}ko=l{2#XP+W0=<uUib*f=@~_4&PVPin$Gr2K^swjm
za`NJ~)gRMdF@N+qtayg$WT+Sm<yPy1)*i3ya9fY)9w*6!rly)u?6Ul=RI~X6SqLL_
zB_S#4;C|$M6s1&=QtP#T&6Lr2s23qFx^;f{$T+CJ=1ft-!EXG^4=e&^=vL;|iSXUr
zTar0F+4&08L{n%~K<~$R;#~-f>9BfWptz!BT`^6ZVC^+KTdj-rbUKSd99gH!s_<Nn
z0)LGYJ4ZJWj5%i3mvczj^eAYeNM>{PU<HE08DdfiM~h-M<V0Y*{GnVbai7BK&VA>m
z0-%;o6%@e5uZ}G|UPgn>+u2mF2Bf<ZYoT03UAc!4`hCS`NXLS>rhZB9)4gdY25E1;
z*862vlMu{)Q`>VKIF+&&S)aesvJZUKN46L@$z;Ad<<MuAegNw0fkhvk3ba9HM|AX;
z#XPO7%4)cH^I!GdFIO9?$z|KCpG&J?pcfVj1V8eqeN-fgaZrlKbzEr<4kclb_UCIo
z$TAz5UE8)kynykGKZ%?B!gk-`<;o=9&8ut%S2dwrt_7ckE7yVT<di=+3PJ-$gJ+g+
zQw!Q+qQ~B{*RvJY>bpJjKLx(t&YNp4yr@ZKjQ*N(hr0;XVY~*q64jL)RikhhW-LQZ
zJO|<V68aEY#RETm;YUNz?xyun%fNwwkX6zkLn0`Mb=tYg(J!zpPBTZ7{wk@&y*4-p
zx$4&H(a*!9?8%eFof{ZrpYN;z=h79=?%PIEB}cNP&#y%*elr$B;v}2pphQrd>57hJ
ztV&TiTlFD12)CFQo(<)SzCLc}-axBA8CyM|;<Bu*01CTsS=U=0;Iei`s|2>)njTfi
z)^_Y43XxFE3%BNwk($gP{6!gIM7_&EPja=5y3o=Sn=es7`ci2Ka*v*^uRk9&E!-K=
zNslxT^7`3d@3`)NJP?^m;D)OahXY??3(sx}DwRn_BC&6f6+b*eI*GLAHG}*mcjV(Z
z`#H$eVs{%Rc8Q>;+1>AOJ<fV>-+Q-dxvMCWo8qq#2mY}1MsbmC?{4AK4b;W#54%im
z6Qkb{g!qnHD@At%*B)4bHpKL&-$d&;H_(s#Ca1hqmxf-L*GY^jW26nSp1MjY9!W_e
zp(>Vm+wICU4+W+l5$<}{&1N5OaZvlsW_lIb)>b-s<keM*PJI}ff_VA)xX090*QcND
zBE}j}{pTHH&H0rcNT`x>?qjEl`B}%4A6hAb(P+-}Y)3D<NUt%)l)K0rgiGwU(28q(
zT$f;D!>C;nCvS132(n68g2vu{8|4<$qFOgNCyiQ{Pgi_e9+0|gv)z*>d)D5!Zb`T8
zP+a2Zup~hRbiUczof7vW#*)#aMTzcQ)ABRd3$?*A`)p+Do&l;jW=V6`rzbr8)vjv4
zuzV?P4`ef{yT~D>wduI5K@&kVKi!hRec19@PFBc0#X6i#WswcPm5(s^YvT8PKYia1
z4AHtRWy9%G6I~eM&!PR_aa;|!4;N{hi|n$!$NdIfvkrIqihbelY$Lch3mo;Q&bBME
ztn7xohg+L-<?Fekw3baDfp^)ex^|c#<!D?D$v~E`<doS3N~hhpAdoYX$1Pq&k1H}b
zA-3aB&)~c6*3}>z{7qb;Gn7}qa<Fq8|3Mi{g|H~AyLV|2oA^?O=@4q-%}PBs(>*ZY
z3&zG=Kbo`Z&xi6nFdmU$iZb%cv8ubOIT4Is9=e1KIn$DcM`zfi2_!bNa^4I6y7mR!
z$)<BSbkZ3AQ^znLIrH}Vv|c4<zH~h;3z}lh`x%)LbanN7aIc}1sj$}6h79QAe`^?Q
z&yYQKnfXMKcq%?M05$8|R}*Yv`FhBLOhz<NoKG1=!K5(Xy0TZBqjsXowl>zThR%^y
zi48nG-aj<-jpkMvn$zx2<(K-CBJ~beq28ijQBn&Ucz)Rx=_bHHnzOsr&zanJ?r&Oq
zM{(Erq`jOq=;C~-(WmQR&y61FYhIfLjYG2ax<X1ZK{RtNTeyL*YcJp;apq#5Z63W)
zMaHV2GGff<<)4ui8ob)yU(TCQ%=Or>i&}zK9xQrOq(&Zc>S#R_gND5@ygu8%8b!W0
zXJ!7%$-A~H1T8IVf|tMVL9kaKWW3~kc=Za3v^^9S-eirK3<d^x`k$#hRAC+QN1{dH
z44*V8EL|;j(F`3Cq@yl*K<ite?`+T#IUN!VxTfif$ofYuG=KBA+a1jgpQp#Dt{9iE
zY>~T`1Wdym<3T=y&lt^CxR&Vb@6WugSHUeuYv;JULS&5p61rS+a!PzJ$$o3`7=}P)
zq<#<IRe@)5m58b+J&L-&-W>`<TlU2X*;i|o&I?wWe0IXlouI;)ZZXIL{kP7wl84Tg
zRunqgTcLY@(O7#Xu2`kEcW26~kKuFPL}gJIjb(CKaYLR-8RZeBy`!V2r>A3JPJxLf
z^Ewj?YhdL@+Bl@cHU5d$qtj;h4l*J0nfQ~_d`q!B-{J4E<3)CHWA(PYsSfALESG#{
z;|4WDyz!q9u<g%X`48Bv9fk5vkAOLFCSR!na}2-WJ6zt<s1ZAKoSR|Q*-RWGX|2od
z<PF4<nD9pUQ-@6A{f@Aj^>#9B%@@)`9j$PX9WI}}?IC8c*Zj_YyZyt-7W%AlnX_9n
z+A}nB5AAdv_%p7j6wH(iQICHuxEYB#2_jZ}d%Yj?(NL2@;VrvD7T>+kQtzxPQ+IN|
zC#+5WY<4;!(ZSbA$(!)X*rqqJl`Yk~Mi0yfK5n>-SrvsY{yu@n>?W*QhIg)#0GBVY
zz2T6rz1?cKI=diM>m4%oN24TNl^}-LE02*v%gCnI;|zYW$muk~Wq5Xp-ox$04rE9M
zs)7?TOf*|$;9GDZlA9*i#Srg;T3VtfjXJk+R-B!Ft-aK>&{a40r^i|iGIy05X@xM0
zxh+h$D^26TtyRPozQdqKQc_(#_XmJ3b-Z)b@QjiYw$lK}&GmFgpJ1NX_?JrR=|kot
zUKrN3VyJZm)1C8B1}WSt{B+<Hf0yF2vHQVe>6d1|EQNK8eIVJI{Q^s7oP8yZce%By
z-@<E=HM+o?-K?)~({QdKo@^Cy_a`3o9zADISmjWP!sseB?vwr*$!)9=m(j<K=hdTz
z2ek)tQ&*zf&n7khjF6zv_~^5oW5n;l!7%{+IwP&lFR$dQCvC}C6%@HT_gB3%`aDHy
z&i!CcPD)D&-f-*r){pTCsOo!;Ri8yw!%!jZB++Ajv${a{J=He<3tf%+sMu~0I;c(h
z=JB7cJOBNS|4(oJw-5OLkNiK?!2jv>f2+=a+xWjf@>J5_Cnw(zHCL!tqHYHQWn`wL
zqy#p`xPnfrCH+tLV5Pez*XLBNd?fUe|2(}7^4E=H>O#A+;k}Rfl`7(Ng`K~)3ibCH
zmFxX``^I()BrQ^XddGh&Ltk<lXtAI@{nKP~6Eb;?w8cj^t*(B2f@+L1@WlgWxss}n
z%R9nSj_WbtVcDHKplYq+r^-B6AHUn^4$B1W$6Q+J=vit|fE9G3rt&vT3+|GF^@Z#l
z-3QT<MCk>^ud~>?3v99bQjbzQGFJsRb+pC>5gQ#zcE$H#P?kvGRoJMcu_c60IO@)T
z?HJd~aY58d=1TD9hDm!@R~PV&?*{D_Jq(W^u#b9`J!n&e;OT$($gJC5;!?u(cQUh8
zU^eg#-k)rjG+t3(PQtC(MCt@R_IY{UMU`~O8y1#}Wf|E9+Ik>Lt7=6}dP&i%)YD4}
zxprSG(IJ}AY$C`8um0{6>T)r&2!fudj;SFB_>byppQFr9NA8vIurBl=p@z@9-E_H$
zSqS&@1Wr9&ny67lF?nTMA5A8zn0LH<;I`#MU~Y9>y2r|7)Ui2U5)%_s{?hRg)`|u%
zzEq-+Icssl7%dI-<M$+#*n`N_N$0i)0^N-A+aZz~nL}c~R;r>xZflsjl>2!S4b2*H
zJ)lfN4j3G3_&t?B3&Chqm9a;0q>>0#1yvwXZojurPN>mJ?G3@l`Yc*FvxuDA&zJbC
zy&bM?tbdkmqZ!Q@W}aYXSIPq<2go(z-uXq(!gwMjJ6-F4Jo4Zjz6ZanqNK<4Vf9Tk
zIa8lqNQzi+ZNa0yCM1#EvY2Xd2sq)iiid!<b3aZObs7k?gc(v<4crYmSumJlic^jF
zFfkW#Fsa~PC!I0vR4h2qK-Jw{(56lS_b^qvg!-lFsU*@6KOl00LaNgCUPd!7;wUUn
zDkW(yR$V|eL?}HgdUEx*&bV0vPu?)9)(>@q`d#cxd86uK+ZwWiZCzrHzhsI|({!E0
z5U`Hg#z5ZGoi)>t3AfvEeXv<q!z%XA7`2F<FC};`3o>51f+z)pO2={TknCS$BPK>e
z8{B#NiFdS0a7BTVGZ<0J-zV*K3s%A^b=!Y-70+@m$mEln-|r8^kqnQgFQxT+RTlnn
zFBz<#_GOVd|DQ~T?+ngci6Mc%&B6M;7N!bjzNQZv{J5IlogG+}%UsL7<z~!+l*lWa
zn$9A6vejPO7{)9O*)8bGF*54JzCJ(M)tS~TWF);0U5ZM|{(+xy&uTVY$n64mKUur8
zJajyIL_ill{9+nmPfN-k@j&VN>{&A@4(Rk-3a@K{?%`KOD8~a0iVpBcrUt2}oME@6
zqCO_O@3=c0rLJ_lb#vPs=!f$~gp;0bDbo&U@G6ioUcHP$xyrUHyr3Phbmi{Zmt=N{
zBP*qfX}7(5!i1sZ^i)|2V^d*l)IqACIJ`Y9_YwzYnQc`Vf=>0j_!JwjSI%8@mOIBI
zpM)(k<p`?0DW<|PU1?3wJMKDZ|9wpIScgHRs=O@o;nhzU9ALzF-zw9XaprcUR$Tpa
zt_)B_1f@iBf6^)?Xu@noPd!(X{>&=}dQO(&9V>_@f1(q<%mIV9MqcQ9O3sE-V|OGa
zQ8eo|K2B<<{iUE2X3TzBfo*GAE)557z)7mUKnn~^A^-e&*4N8dZ3L1Uv?L9z%n+U7
z%>j~0f1tHy2`bo}m$$j3@aikXJs7aga9EI|?<4^&1pn$o2&;r!hNC}inOg^M`cq^K
z(m#}c9{V+)G9q$QDA8Kq%m?6!(P3G&M{DCrt^4J`K(icfuAjxE64v4If-Da#*-0Ak
zvy|$9`;Sb}7RjA$e+dskGyUis!Sq`BM3%0%r%%W;WF9WS+Zt@Mn9x5cKd~!p{ot0w
zqIgxv7@<HV9~YeOX4W?h^M4*t!O_{D&!gEb>zn0L>eBX#UB3pP)6UP2MYi43t+@K#
z!{!5#ugP*daf-cO;~K-;q#-at+Anw4`?zhrU93Y*c5oFed^H}#@<egOvwdMJ37f&A
z^?TaoT2-;{__~!^^INB>@PkfMcjcCEX*~1<&W4W1dg57pqAZ@L&L5vB_~4hR?RFHC
ztII;Y85LXhzQ%e4TogGh`_xgrQq(t#4)7X^e1<WST*n7F4=jE&do1UxQ7Ara?3ryf
zI%lZ}WjB_T;O*-EDp{Y?%3c7j+gXmw@a1ky(h^*M866<c*1yy7gc(0V^V>HeAB5YM
zxHKh&od3z2_l9oeCm2d95%F}@ykT1>LFj5E;q!L%KBt72t`Z@7b-aqW_Ht)#Wy8Vo
zKz!9PFD`FpYidlRab9N1mN)T`@MTT+nw)yNVsu2$q#npqgo>ao0V?h{8+h{8{#|hs
zpSKeOs0lB~X`X!+fhK#Y>=IasLU}p6|3r>L(mDAOQjMqKBP4nA7rwFCm=|zYbWZ==
z;9xW6{Kbdlp$$wZ{j|)49ddfxGh361gG+E~+p`Yk(af_gWaXBSVK_Y_Auc{)klI5o
zFg;N>GqE%G*3$maCu?Z&Ro$$kR~3mfq=j;R+N*UUsd+iFJh9{GanNslSf3h8vhiHn
z7ik;4h+Z3Q(}vPg?Rq}UF?M#lvZlouYUE=ZQ1fL159GXB>f}~q1UH;+c)PfRIbU>u
zr)WP2naqhw??wAM1!NjQ98As;t@4KPn=)v{$ZZsfOjX_Ufiy=2Q=Y*1gXWck@0z^>
zJYK{+5}0oqfrXPSdg}}IpEx@j03Z-_mfIY3b+)>^yxbg&r)R6Cyu|lK3raN~IJ%6R
z-5(D&P5AkdZQ;2d0GQp}-H-PEv~u>vv1m{*v-jN3YMO0fAuJ$N{n~Fd6-w=AsX+1S
ze!3nTRSa%*oQTuh#pTKTy#HaJ_b<8|D0)f@;L{o8#0f4wz{x=iZtsDw2O#mkkD!c*
zLR9ftU#bWzE32L_Eua}o-?|LE9xc?n0VA8{ejMe-+?c-JUjO}eDwCi~p$Ib2Liy0<
zvGYFO>6+O*Fylv=%{N{hm+&@TkjdQ#?bS55Gb}6}tn{VwHYEF|kqrEmBK;pezyhBN
zdVrOtw}l1%J_A@4NP6}!XaPR}u!u+D4o(-|#Qk{+`Y>JRn(%nGy<l$+G@zjVlP@m{
z$lE;J_tRnd>~U=OvH(@hvTpDadpo`30|R(B#|q!!<?s<KslNQ1zs#2s6s$VuzJG3Q
zqD5cXB@XKoqn;#@Gd?<cR|0!z3t5gW#W|$#e2IZGCkJY%cUCuZUp3B}d_S&nkf!Lz
zJhsF0O?*eNw*nmPebK=SYGN+AmNnK23V>2rdG!6p5stb&j<|X&LX+u)e`2fDT6@J{
zIHwHjen<7e(8TBB=<5tvNHVz5rlsIO%V@sNvze*u>S-T$iOp@&9ECOEZ4(NSqmQ*;
zd<k~=Fr=jW5st8>;n`@~mzVn_##DE9d1Owr*1cCIGoYf1VN`RZ>&peJf3yK{)PmTB
z=y=@PA%{-5azCd*QQ^14s|>Zr6aA(xF0oF++qxESc5AwqC|d>Fo9CfVIa+uTxh6@J
zX<wY>kXVO|Z<83aKc_yk{WC5q{?ppbAI$Ytzg85G=ce#}QPE2Dj<(c~reYd(kehUh
z=LR%TIL#LUn5-h0LfAvD5Nq0_$qZit_vHN^qd+~5wmMRV#}{xLQq_dcOZy&e-+@%k
z$lj^5-`iMvIdy4lr4O|ftDz^2HPNCR?h<Uyi`5!s0%W^rDoTOrG`O#hTxr^GB$57t
zXf(M+EAgJi6Og~~i@Nh=J`>xiDfh8IOs&);iXU@@8V(9|Io;4PbXpn(kmXT9g+~x8
z`K8O+f;CUk%9(G)>;?gvg@CxL4u+eHseV0%(PS8u(bNWWik@6wzDWq0&spl^=qcms
ziO`YJYW%`;P%znR)b{WA$vRPXYhuS`vS>^>F~Ahr;x=rmg^tRT^4*UV{ozre%U?{*
z>X)fg;u@Sr?)@<4d#liK$s*8ifgTdv=%pJ8E{_Tx9(Lea3Ga?VH3!M3M#_C=?=LC#
z5*C?`%5jAs9MS}*M2i#nbPw<#kRl=?65Ge4?cGxt=YNfhHLjNLvdbrJOG>!=c`IYi
zF9U=8YW`8qRA=KZDt2;kDDuLb8%FwYa79^ddvS=FB^%|Jl?FJwS0G1|c^_y&X4g-!
zv%%@dXS9?Y+vztqRB(1+<Gd3upEhKgrmqnxo%AfX`e)VPdIe1+n)Z1PdV9yYRe0r5
zH&sOYWKPGcJXEQ;i3OX<x;xNAGk!K+o!jqq%4RDkn9S7MET&iTzpObh%bs1Y80W~L
zMO)EGWZQ2Ur2J6ldbpZ2KAny^KQICic>U}yP>}u?(fCS+@p2x3zMT@e)!YFL>^Y{h
zKXuvBKh)Q0Eum?=6p?N{QBjyzOI?vDjM)d*!_8o&t2qti{H_-=Nr_M^+0ekrOITvF
z#|@W74>H{~@}%ZPrh0J^!pWh?$$>7dG{`TCzqMDG`25lldvsTAlis1Ek1P=?5?ZP1
zrQXg>nPPf5KKUk{moL6xzaqGUOT*T~y1offIZ2DAnvxe~|6>ek3=Hu1Pos0imOAZy
zpbxxTl@yuK1MivbYj3gH!e~BC9aH80l({%G_Sn=8xEcwm^S{#etlJs}nVI5wL#gun
z6a(#+*C)njje5xikb!)Y%ZjG_-|C)sJ`gy=!C(!QaJ#vmoZM<!CB;@j@xkbh=CgSE
z%GEr#uI3JZN7wWjLr!vZnck%G7|r+k_P!l&BWAUbcGGviXN#5vo|nw;GQ8_uO&-Mc
zcS0z)^$KIkbY8`}CiV@-av!P$3HCW}iYL-)n3mnL&Yc<^s@7d|)Xfz>-CjUGA5flp
z@k${&^F?mNv>~U!YDgzg0i>h?{{Wn4b*xHbwW-o<9vkpMX|1;I%l9w^QL_EGUt3sN
zWpF(cKbE_2>ZoNMUP)2c9|@VP==U>9)F6zibMEtzOLw1Kpir?Q4v?vz5%vrHVrH|%
z`cS`Jn?P#dn01<M115SUA1AjW8a;@>2T2py!pMwIo7@-9JH<xRjB<VY)ZIGa@je&w
zLjrpG8V}i{mzpWZe-nhN4$~O9kR#V=A9}dGp~2xk;bUcgAz7?#Ci~FuLsHE@J?HtU
z19^@EzKCzE9Gc<~@GnKptBDg99WZ1xkpRPIBW$uVVk*?kk*h1}Fgb_bt;ucJJc+1%
zp1+9GnqWJB*pJA;KdjU(9JQ+y7N+i@Ue&A2XN?E(Y+{0JS&7XVAq(MQi)^`bJto(e
zvn9j%hy*6Eq|=1zTNq|w{#rGGv)67+u}>2~W?9LPG(?g16rFCnYmIF#lW%^x(kj`y
z=95^)F}2<I_w<A;=TouXCk+}K3TJM4`4F_1vVa@t?2+eIJP7DYZHJSkTmx<iO!41Z
zoF@xKd&o2tgGJd>efLSGJ;`;J$i_XRl{h>0?ER@b@6*X#p4H{$!EUb%?c>7!oDvw~
z#_{b8?(EJ7onVg`@l!Y!M})52ZORSnnAn!Z`uQrtYs|+z$#hnEbUrGi9laV|uGS@Y
zU4~z0JyzAN)Nl(fw$I|Ya43FMfcVDCYt)B8VsN98YPk9j!@@+NQkz%S)Y^E~CEvzo
z+1BYDyv7P$7cUA5j-8!D7Jei#iP-#;>KLFDCz|7BgwK-10FATYU}SN5LD=akY77G5
z==Tp7ugXyw$>}Q&TZrScv_TFyIAB)m6P2@{%sMeY9M%@SyJ-E!P`^incrM5IpsQgi
zhBB9Lji@INj*w@Eni<v-STOJP#d>G#Je+R0)ZV1_EDHVRb8ca^pn~RNwbEx%2$_#K
z;q8i(X1wTta1)`;I^{`zJO&1hM7K`JCf&RF8(Xgut*wOmO%&Ixlk-nt59*3NV9RQZ
zx=y80?<=M05#k_=UOkHu?Hh=JI<D2!F?EwQXx{=oC`^783mGYJ>P!<QBxj7H2%q#4
z@Z!>%-;aK*Ps;n4%fk&SS%*eCWLRiXb(k~BSz%_!DCgi!u6g1p{4%38<HkS*qiL~T
zJyof0BvN-n3TZef_B`2!1II0nNqx=Ng+)m`ke9V9iR+u_y(KSU``h)Q6I6Kc&D!G4
z3YdpdQv3A<{T@LdR7lc8-@`H|O;UKIfV_iUgIfNBz2RuH^|POS20a8zpTdTIm8XXR
z{5&ko!rn4Ez{*yaGfYb{UetLT8Wcj4FXl>!m^!#UZx4f=eOa;7u|18YN(mTu^bLG~
zV_h$ru2uNTrO}qU?}-9?xKYm=pOn-RYR3MDAP{4mu0bLCD12lQsr)~(06c}Gxl~{m
zTKNy-1?zD?B%YJ**XE$T^xTK<lPkvmw4}xa$|5UzguC`(nZFMyQJ9Yu0uoduCCTk;
zBq}9-rg56Ew#?lT1k7)z@2M<>o76y6XwpT(>*BGMwG^=;6E>BsCVO4PN)G%gnr>RE
z-@YTCbpW@IZ8&lTpx35y3g3U~cwIcXcUR^Sqrs>c#z&{bM?(?tB5Ti<f7<Adx*1Z%
znObhvs+L>*7%PX!BDLG3t7}t_m+8!1Ll(C#77eU-kLYHz5tSjDJOY-P^&?_yC)msF
zQCD~uQ|01|XTu`-b+f<vJ1MB}L?V$%1bHTO&ac$w7G3ko#Z7vjgOwYM^kq;BEpNMm
z>1*;J3q!j*@3dJ8t?&=+4dvsd_1${i@m6*^B;9nAtU&M8N?CXJx{<>WIHy&~_8Bm#
zA3kx*O#jkHNj2tGHme(+;^bAHuA@dGW;d`J#^%*wuShJcw;G}4(Ydu@b&|#mlnoWt
z?)tRzfeM6wa8|!0;c)UDuMRNw3;pV!4EZ@OTGF}w(`_eZH&=AZAf1<}ux@Z0osAf+
zY4PSgK(}M&#BgP{x>6@6%zR8M%R{xuiihL9fV72)^s}qO0T}?_17c&fZ=E;oE0=E9
zdgl#Rfg#a|MJ7uzS&IJC#W=93`_)8w&E1n=r=3rgsg(mnx_toG_=DjA`R_zWN7GCD
zd;6}nC+#ueXD!=N?G+kl>Z?8|4hUEM%Uzay;MaUfXMY~<eGJ1^?m_B(4p(*?udh~8
zojP9baA0P03?l*n-7*^B9Sk~K*xMmDvgMxG=>ho+YYsjAcdnRV0$`7G`Gi*vwuJ!{
z-?Qp=637YY82r^mxBcBSCIJm~v$G*SK3-5o>w*av)U;~-oB076w6`B<SZA<>-6$*x
zTWj!I2guE|r@OoRA1COoCX~S1P%Pa?9y;LMpbXr9iSsv)?`Z%VIilq3wJ4k!ubQ=#
z_a~7GGI*H5sU+8aOsr9!2zYyHb&d>~%BuK&-(U@%A{`}ulT=th_^zZ!{V+qPpnHa-
zM=%aEP->A@rGuijrPb%R9Q%@PT!88%0JmpSfE)+0{#CqDX$36zX?x0Od0%&raQ_i>
zEvV%>pzYZQ!UdNKcT6WnC=olM+)4lnC+BA9yboHKd+k3xVxh4h23^9{FR2||->>Cz
zrtMTR7>z1JdTEsuutCXvg^bB=0Ce`_@8DR&QKmq?Z<Nt1d-erp;`{kN0n=Y`9r+M+
z3zIVMIlW^L0f9ParCq#ZFppTJc+sOYCWY`fj9I^R(IzikT-qU|lWk7L+LX+g3s^6i
z2KD)Xu?dOjWW~naRM*pVA<%p5Gk1fhdHO;c3+$fTiRUDWWsj%27aScd>^FEnRBJog
z`Y(>FNWBhA7_0|`J`%3J#0oo9`>VdhjR6B{j?B~zo$2qti?1;89g(Igj9H?4aCtjl
zUx;j_9XI^rN_RIe$9)a0_JFtVmHvy0?4;}3##N!F;sU6~96U}ZSU-EqZXI!J?iCwz
zY58^l$9n&Qm_toh#%^G9V<XDwNq3(U?eQ(Z`8wS!Y3zSoUT(l>)gV=!<t4)D)6HEW
zPqnu*rWqTSGXE%gF4;Vcy<|J;m6PrPxTfYfc<?>ug`;}-5%v;u`(=u)$jT!##X^ZC
zAt!E1HstU1#Whgc`tjy?FvIv`zaSAGAB|sh5}di)cL&{{`EQ8LxyZ&&ve7EwDy*H&
zEwk`tKca@<k${{{m^Bvsih*(JwNWuu$ly2Tze1g!Je9Mq@JLI(zMKl>t86*_Cvomk
z3?yH1B9>0;M<Z%kqOW5uV#T7(-5GJJi)iMSRczg-G2BIV5`~}jvFK2l@Z=Zz0(y2(
zj-No@fnoS6LniQKb%an^73S|L27j3?1!@YQkjS;WIOFd_`@qe^hfb4EE%q*@704FP
z9Ci&Ml9%85k7DXe+nl$KaIZfm9jBjv5XH2F-&#o6L}E&5<xxyx$39AN$ze-kjEt)J
z;-*7V6O%JP@|Q0$!J5Z-Ze@gt9ov{^wnIbC{{ZP0WZUy78FECxSEl_1coYK7qI0Kb
z$h~h*SLzms!E`I0f?fW@l4@nKJe*tu5*MN@xhyA#bU+HrV;dMqNm<z$L%3OA?B4<T
zJ21*f_H%v~b{r&-y!MvVO<-P`@M4YGYJ<~c{RT;&PjnXOlqXA9RunAByTr9+jtf?9
z5O9>d;U^7IxxufZ3gJT&PF1(NBZI2~2a9x0sdPqd&NW^nu(+&M+F8-@+T8+G@8T%D
zC7$&aP!1bnvZ4N*envK63)PrF&_HQ&5;_8BfBYFD-n-u>ZH9)eaw%zCc3w-KWB#-{
zHDa$;bqk7oip9L=gozASPUZu!d(FMQ!A{p&L^(Qn(p#1T`Bme>J_8p6*`WdgB=mvU
z*%K=Pt9?O04GZX8_wa*z1YPa?0S*aOj4G;y4`>r9&gyHCVMFCftmyp<tJ)})US!^y
zAr}B-m;<fr{~WrLsbPRD^u6sM%llm3eTXR{i-}qFL5RS)4WWE_{gZD5c%UXJVA#76
zi@MMf#I2%It5ebik0#vY?=;bQAFlMx2VGzGiOkQ~0oLUE0WQp~rp`y$hJP||Mn-?)
z|Dn&^Y%OTHR9a(eXB{J`vVcnhr|jq*Eg%G)E&w*^_2v9^)HP}<raa(yRPQp7!B`wn
zazqs3mR-dX?lj3S17gzk<!(^<%i@dFdV#+;HbvkAiFmF+3|Q-j|5XrL2u=-jlnl>e
z>j+*3ov>j-JVF>qaWvv|W(y=_T@x*tGIv9tN8bhkB^|AY72EpGHoE*nV1ICD&bjk?
zYU)}3M!KP!sOP9UAcEm&=tkAjSc*J}dI|Vag}KGH2BWAKl<}_|%k69;nD9TcvHMn1
z!sp6=As$Bn)%X38kVx%TebO8LCaIW!gpSbAG)-fDef@lcTn-lvKp|?x?W#S><MJr%
z4kBc2F$JWwH73<}=&s>BHQfzI*H*dGkAj?$Gda0YhAT0;0&nHo`BZem(oKTCYD>_@
zkmx4t23^$HNx-p3`Cf_MXoIPNsto)HD;O-nxAB^(Yg9Qmiq81TwB4L?m|v&g<V<$V
zU_WOiU_9>Dj`B5!s;Vjk<tudRXI=SPa9Z?N^t`=Z1h{6hV=m|6_-wNE5C5)kV5Dn3
z14g=BJX%4k$5x&$rQqI~j=`GovuqR~1MG~BRhAoM8RfY3lbuv~l@(6wa|$GsI7E-R
z{HHTznRPHlX_t)JMmQvT{sgoFtH63E!$@2+mgDK>bFP;m?SFiE;U{!TcfHmAlQ-85
zVD7`-@ji^s7~g(-^zJuOMdcwbpus@C9&c1@NZJ<E?^nq429g3okiM!tQ6q21e-UXS
z>zY8I6P1y&jCivm?LK}VPy3A*bd&g<>s5w2-aCJ?<>#fB!F|L-F4-yhY&s(Dg)k;(
z+Ppg35q^qFdZQ{!=K^DOZORYC+51rt)vsVUN|%zQ%YVfLGRm|eH|RWm0j(SOk<0Vt
z)h4uiOM?5F><}XPaA9Z0Gl^Jta8z>J_lj>eM3r+{u+R!QW2LfsaZVDk4tO7Fb4PaN
z;2cYldmo?NbBKDDRh^?WUxM>d->C+X%lx^L!D6XH1W-s9gmJ4b`SW1Zyf(Qn22v4h
z62dAmF?2nIBf8%1?mvfx^-rig+}YK#7tRiI^YuU2jKMrrs3rvQ;n?P5O?5IHQncKM
zx@}|SJ2KzXo)Ei2XmPMi-9r{aMQoAokKkwT&yVW$XbAS`1AI1>D8L`s0G|3GY#Fv1
zCC?7)RhUPN%+_X=wjD4IJWs&?C@OuTRbnS)%1Kv}?+OM-6zqk+EfUnzCdeQG;%_ZZ
zRi18k#^|uu0@{bH)5Hjv=q$dvy$)q`m?&b-V86jIztU`!w#t|JBf4&7t(G3*_mZr$
zNILrfmNVnIc37yp`O^mRBN*Dsq!1>`L&M_(e-@FQ9M<SPSNH|jyJTk>mq&r(^oGok
zlO=7+nY!<sbVB`-<0+mJ%l~EZq4FlTKs%8mm4;ZKKJ7QaTq000<Jg1AV~rEEjEe>9
zaAW+PTxs;iDpP}!)GlFmk_xM-+)DMcbcF9zu+O05X_U4JeQ^n46YJkQAg*&g(YW68
zj*XSPH|+gU;7K^0me7@d%F2P{Kq=VPU)kRk@>yv~G;=9WCg{Z7S5zR0#VH{DHsIwx
zbxG}i`fNXZQ#9CKgcp!IrVG2eMZ5Wixy@+@NSPJHzbF!R&L8DEP><*wBh?KK4QrhX
zu~fnyXsQ?!46PFFE=i9Y*f#D#l!&BC{GUCqUcau=o5_uU)+qxY#`S=dIokFj#b*1C
zA&vCgP3jqvs~UlFu1?M7nTQR3Vj^ICRtczbQ%0>eUZ48gRh!r4XGIMu^G1h~U<s!{
zS;=o=>kvipcRh5@gdXTgoj~tskBlT_7zcJ8+Z~M18EgECr2?k};0K32l3SP;+qLYt
zJrh2S>PkJ;DR1aW;C6d3{U3AZjy9$D)xLJ`GsW^*p}&k(_q|~)(Cf5j%1{s&AHQ=s
zQbVN>^G;8Gsw2P`N_U~Im<f2L>$FO9`Q-3yv20V<=|t6bWN10V*m2Nhvpe6SqZ`&s
z>x<}mCf~3`&mX~2zMFQEZhmX0o5&Em*yLs$4TKASc^M*DdE;7Ime~np$&z0p=Lnf!
zTEu^|eC&xyCF4|N6hqWzKf0}y_T+wjgV|VujG(d27@@w!uqb{2k}`r*hmwH;xK2C{
zlLLM^Ixk`LTr|G>F}1T1#~OJ=JO#FQN0n0|XJN<k+D49cNEf;o80>uWu%g1IyHupU
zN4YJ$fZqWV8PFLMZYJ|oF<{)qn-Ma0w?y5=9V0JqpU1tu{h44~J<u0MK~-S45ku7*
z5y3$$o~s?za-!0zomSi32^p<8A$X;=Ixn>=0VQ+}b;Q)JJZI5k>+k0+_Q2%Mch{6l
zo4oxzyd05ue5?rPpC^l{(p^<LYsPWg3>ML&cPQ?sOzFyUYo8qL<AK!P1MU4W8Lvkf
zF>xSv()Od#=*6|;UjU3XTNy`=bE0p*Y+H_S>q+0oM&OxG&mPVX`2X320otkch-JLW
zhGVZlUT3rkTR??$r@E=_W^WRhmuldRbD#^qi<fnPsgcz4_K@TB9bnQp0Va(#kG{X4
z;qg8YbQBX4^VwTy9-Ugcp=SV4;FKJTy#WwhtoLq*;sJe9`e$}_HjsgYl*tzJ$P^rG
zw+-%0q9r_tAdz;NB7q*gLQqn9)3l%U-hD|g?#!hBo3)hW^-~v0mBV?`g2vHkxdi}<
zY4VU#n^D3)EIn_1WLqMc7tD{DBLFNRO_GH^XT$v)rm5!sxK6vqMgRNO&E|VGx}L*o
z68ycv&IaJ*0PqGpF+5y6Alw2_y}vdR{~F5gazeyAl%Sgwv>;F<b9K^qok<IlE{@p-
zf-=PnSipG-3b;HT*9-Un5HbHPU)0<+Ht3oJpoOFW1?>ak9px|oCy=v~Bp96~diKrm
zYnujzoQrS1Z8jUs;T<e@*JwuPAqm5<j~_N~8{z*5pvdHD??9lifTXY0Ix540<&-K!
z$9A>49`i57mFQmje@8BoXnWy#B(4HbZ*B0|pgWI-&biK6tO3E@>rX;wx16dc%?i3N
zg8y12uM2#^`6gN&kzTu=<8f?zcP#o&v_)eP5q8}5=tUJ{E&uPcN3CD0bJ_IiiKUFr
zaK2pV_Ki^7fE!Ks!pBT(l<(D~Fd=gQ1j)Fv)k*KglO~#FRYUD*)!{IyR-S(mK@tP7
zZDUO@0FRyXb$Qt@m9l@z&;6bhIWl<EU4GBkoGB=lTt)m@tgM?wzLmR-fspL$dy|C3
zS95ZHFhX>n93U#|OU=~F?c_!KorMBbu=y*@^+hSUEb&g)7fxO7u@@le^$B?}IK=F!
zk0zavT|n(3+YXvZXGI?)PFej;L<-5F_K@mTTTetAQPRUu7v7-D_8_~sQ}UWox=K5Q
zcIA;DcFJH<u$}6dn)+hF4m>;=`Le`vykHczjjPJsc)hAfZt?^qeKx_GER_AzUN3cZ
z#!(Sfko88Z??cMd*2b45xk|S?T|PPp1}Ct&7Q)&{?pEaP#^l5r4g)TeC}gN$XT*|a
z|D9GMPBb8H3>EZS^zTP(+%V`ocqK~VcST2e;h1;3td2#_JY;C!JjznvbHi#|n{M|_
z!7n#jR<>8eYPp3$FEuuUowpuK7GC(g#s;x%g<W8I=%jT4Oye_5v-3l1)G`(b<xo*(
z!}Z_(8->pZV<R$v0*wDA!vpJktLZ3ftn<a{fuITy*@2QX1yo3mFN}7ER$%LT0dvaL
z^>T~z<c9-5_T}`;)AlV&4SO8(lGrEz_yR0GRK94372LJPw-@IavrFW|GN3RDMMTcD
zIx$F{V{Y*pI%4=xesb2^3wt=#?JWwyx%rBcon>5|1aZC_&qMPCS_1nEYFp;2nZk#D
z+Hx><y43$LKp<hmyc5lU5CLQQQl&Sz-HQ~|7*@g}SX>#5?(=rNSgBY6)P4YXBoH=T
zjyFaCqKjS$gy?DxFfRIpiHXNnUA5oLY+<kfN%{6%>Bed5{|$grn<^JReX!?iFZ1Y3
z|I9aOCJ?~O8G9H(Ncj-TnKRU~@v5#IaGRdo(0Nw!Rf3QjbX32UwYf(_le($Pq0P^k
z?7nu!R*F@<af#H_?G8;bwX?IR;6SUn7nyu@)m4LYZ=9SM(&sAw7q%220nAHHO|Nr3
zWD{v@C@(KZdi|Elwulx6k_i+m<5R%-Ugc>2T20x{Jpm#P35D)=r(J&{%S*pzzsNxe
z3>8zbA;0QhsG1AQpWPT<lUoi&JQR;}E9!-e_A#y>k^vja;EnP8#KfE3t>e1s9_G*N
zz1#?-L~8mmy5@E~XUR69NU>IzMzJ~<lxkd9JROKGbZa=Oi~jZJx;nP#Xwxg*(iJ~s
zUTkRshMK$Zm>$(?l1L{YMD%hyxr^VNM^eMI)J?E*?uCnI{@@N^*#Vy03iM%5@X{=#
zkm7N--e+soytrqdyAnBQrt#$E{S2edZa+tlreEdgxvvmout-Bu`ScJ;v~|+hbZTlU
z;LmNCS-!(=srAU3Lvz)x?30!O6AGTJnKL*y<50p)L2xFiQR9+AH)Fs-*uUA=*Qe@d
z{?69aL%{E@6VD2JWA!MWcM{+VZl*n-R+2Nz9q<5Ell&(YIGh;Yb>dA5d#o#<7Zadt
zwb7>t2SR$%u!d>Kuc#I+pd~!z0J43XMd_nM-aFf9v)rs3r?9X6HYK#`JjDly&P|tQ
zWBj8J2)13;#3qslG#oRB=@134Yr0ozaLdQp1hlCw69TW_2JpyRcQ$C~7`}ly^kH0M
z4<eV^Z;Y}V^RbUB=&umeQ5xfVNF%RRIFPXPLy{w1A<MUJ`Bmg}(K0Uw46s)7`J@~2
z$`0&elY1QjzcEsfJ+#@E6<dlj`o6Wl<HY@tO@?c1uq`F5;wwX9caE-mKk=O79|vB_
zT;f?=Va~HH4V0{cBQI5W3SAJ_IWUu3kzsjeno*SpBl%t_&iKxWfGY^$7SR6T9<2@r
zoycHjI|z)v+r9hXS6a4cv>6W3&<gpJQN%_7jw{|@x)t}2i)4+5x_VUC@P3wKg71e-
zR&eI#4u2dY%b(Y6N{r>Zc=0}wu&3!r(hr*qtJ+#LC$$SgFZ<~H`q6L$<p7bjM0b_m
zULJvQ?tu}v`lXMI<%8Z%nzCfR4I-1&ub#8e(D?n!JA+GGFtZ13`I+V}A1QY!Xci}N
zk4JtgMh>t+pEd}wU}lWt2m>TPClY3Zd5vZK+62StN^~vCI#Y2JzO{NEFvitqDGrN7
z-#CC<5&d(`hCH+ovXo1x&O6^f67(|4OH5Crmz*GRrMtUv4qs#*GTGFElO)dT*_NZz
zDTh6S*Lt_n-qD$&E!$$%@QLRY^S51UEDLEB?<`zl4}>4K<X0w^9V%7o>L3aSdM$Y$
zay_5PcO;q=ncHWS(J|jw<_#y$5{<||IT#NLI@ug4Qf5~O`&_=)Qlpn67*4);wpFGN
zUu9F^(W7Be7)pg_EcrmQHYu&iIy)<_S7YWc#ZUrb>|MHJ@tTS))$(<XLD#dp!vYli
zyq4yZ>t<H$C=11y>}1iD)qeWcuoqPm-XB;amK5^U5J}98!fy3=^5RmvMhl|QAtqEu
z1iyrLPe?0G6?t;*<>5&qIU2tlR;gK@KydExU4*wwG$K5<>~LRlK;1tjd!V4I+%CD&
zB=9soj6FffEypVVwl8rrx23ec*MwXrqDwRnB#n<es<mqVks2~vd#tO+<5|1-Op$%t
zI7rHt|M**A9OmxxkLHuT+>@n(KO&O!xqwhZ&ah4Zj45xiDdbQf!2-#xQhZHs1T}xm
zVd*qQ<jG>2erQJpU1dQs3kZO#{An`bmh56~UZU{qxuax3h1~erQI6Prkq4{_X=I&l
zB8Gzqs_6fh{b${{V0qg9w8lrlRZ?D1NLV3m&eH3vR)K1=JBg>Th#iMd<K;K)%Y5F)
z3Qk|2-ztWkQCvQ^<sQ&=xdQoHmBzfOF-Wz}C@E5ItOHj5MK3y&-5qX1bxlKFhzvJA
z-=BFOQPxHpUXUh%F&N+Z%EnGszH8-(&1qPo6DV`dA9<a|bYHM~RuVQ#RGjW8ra;Q>
zAU2p29L7cE3z&OzQQ}Z3tUUM?Sf~HE9(v-5O}fd_rS&FHc--drH6+CO!Cb`co;h;;
z1iy@N#zAg3-}wzhGs><fAL^Uwhbgp^)3+dQRo?B`gnoY#eg;`kjbPaq$jIv1e$o>e
z;W+8|E*cXc<7O8k`x;l_MJ175kAHFIT8!4aR(o4fACPqGgnZj(rQQ18<Z#lkk7B$V
zw$H9FGF~uT(oiIw1~oivGH4G;)1<~$IZCNmb89g&>Kf~_v&IlrZhUf4Oz6;9n9{AJ
zH1=HL=5DOZN>xo(hkfE6{&_-B>oG|HvoI(>>gC^h@>KC<XPM&x0e+T#;T~^6!QfH$
zCxB`Fwjb@S4Voi#trV6YQ0}wC1<uH#u^?2ad#G9R_@PDYq}O)tDxR!!2j`=^me{u6
zc8<y4Z{9JX`WpQGjV^nD9kqvyDm#$lb(G33vxFdHpUX#Q>KH;6{8Y3AG6szh9JB6n
zz+Cd--IxL75i2<16?_}a^m;KRD!M*Pfx<h`cPUPrE8BabtXDVr0kiCIQSCaj7oP($
z{H3yHmLMh-@&3SUMI-$83CUpu%OA~qNlE9>EU7v4igFZDS}8~^?6yCSV<xK;=9t1K
z%Ry}pNX7jwrjSR`9F+H@cjUwCC*=T9D?DX>4U^}q!{gpTo|H76)Lo<TnvK_kzffk%
zz>p2i;@3gZu{3Wmm@+#^P0+r-RkPS~uIg2gjh2)0!Cqd;`ngni=JL(kSk%3Tl(ITC
z&hPG2CRq`rK%Ukt`kVV5+)i502SALMHA=JJ8Y68|;IO44Ui&b~OVxv)j%3|Y<e_3n
zbCtDtylP{Hm4|e>P|eW6S`-6bdd}p9MNWB7YP_a2YR=IQo>K4m9ms7U2FQqZ)reVk
z+;vwY#Xg61C2?-1H1z5j4Cd3-_q9wyxL5Otdw}JLezLs!EXdzG05HSOrXPn4c80O*
z3XkO~9bC}O*!EhgJ<H`o)_Npt%Nm*CM;aQtdj)eIElb(-!Znik2;L=-HlcRAB!+iS
zcr!?^&sH-4goZ~#Z*<&aO8fb_%SW~uMUxW1sry6@{@{mYUt}WA7PS<EJn+WABCSg5
za)K|H<zgGtJ5z^mgk(z}*#$978O_%++JVEQ)ISl1<gf0R)<1!7K>3WeqdaGXsu}#<
zSc}4U=NdN=YZ!disBAXXA+HS9eEWO8Mg+#ejUjRV<Le$f#KZ&7#4l460+h7<Ighw+
znY{m#{x9<|3|RaS_V2DBuu6GGaSMA2R?#U4cT{f-rK4NQ<(M0PcLy-&yctS&l_>C=
zu+JW;e$PEQ%!7&{9&bp-^aA{F@*jJK84@5>!QOM|jpl5+{4^&0KBj-W0%Oe1e%lED
z#yb>6f_4P_|G6cN8Q2;%zyiGRW-&(ejl9he;vjKJ*nqmpAo>&k->gIbkLBwBy+!N)
ztF`U_+asH#_R)#Cf&XHz)>c;P&KbvEA-oNMfKQ|dvc4V7^-c2DP7T19{Q=fH{w1Kq
zq;bcy&Lr@RxqIIYGpc8jo|fi6HV<vMH~?gT=9Inlv-8c8>%Y9&8F6X>tSC9c1|+mv
z7tZfyq@@|j{7rWPQvS_a6pcl@X#e-a3tD}YqV<50`mf&wIAX&w;si+(1*cX_KJ~5w
zmX-k-(0>I;_w<{#3E!*f!g9f2uAVF|>GoC{z?RA7>LIut8c#Fl_JLJ{HjlmMpuTAq
zlF8~q0bDZI`lcoIx!s8*Z=v#?JaC$>JvAe##v8o^gXEOYXm3b@P-~fBEHfj1>Z?%&
zAfMvVE}Zj6mYxXCg)e<OK3kzk^PR!LsX*$vNA^k%SkOb=_$A+rpj+TiTGrPQraD9^
z8RGe2;MQW>i+nc~!Bn9{Y?#tQaq)oZu%K=l6}A%$2K4kj<*N?TXZNxa!q9T-hh2{p
zewS@SH$#CyKERx^9_MD>^D>rV)_BmtPRjXu=)2<)*M2CgRMyajsyb!(;_nzT#znAx
zy>;l?h;@dgnCb(|z9QHLC4s>HX0E;)gdP(XmVD;9X!DvNsh&sl*mropRrD!z$r}PJ
z&=LA#dVImt9C45#g9!(gmy{xm%rC9s85&vvN1IB3VVN#I<&!7QqmC>Hq6B>V5(sJo
zhzDHBntT3y?{5kC9oCiJ81dxA>-o9Km+X!f0oRzK4EcloQf7IxXSUBONT==zzo2P;
zW%F$L9_>^4g?nkSAD%gXV)+>UmeKjsippEYwR<cdqt)fZmSxkH%-j0$oSsPIsN9j7
z9X{&3loQ~f)<8OrUg{}$aLzp%SUvQ4)=^Y^Mi7i1=ix1B#P`7wH6RcB$EBL%(Zf4!
z1)stZ)RokXo)Y)S*@%VH@Ie!A%xf<i(3Vc7r`6ofGDrOIb|<qL`j}3d!f2=KoOC8^
zulV{;`V-B%&jP|mTPnLJ$dP9lUKdu0{zB8~9?6tBf9VVoR|ppGbN6tlRqy7xbmiK)
z{BT4$O@De@vJ367?ofFlk+AW`qv4>P_f^v}cwz&Kb{;W>OQ7R3|BF)>{uI#?|5z_<
zvU(<@WV|q>I^z~7+4usgj!n%-L8;^kkz1aSn_^f@461%YH0FCTfm1XkW1GizV&tB{
zuTx};grf^4BYHILrmf*$aU0lt$FH95d>R9miNDin>Duknb3KeZnm)q;-ScA8XVWWe
zS8jWGt7+@tIHnmqEPm-kp%Wnbi14$);=bgw{f@$8-^%3sld`@CEQOv<Wn<&JCR6kA
zyBHv-F2R{qLSH$gtAL*G1HIqxBtYAt47eZ0#lBA!J62@RvuSO9%QvDV>yXn~KZP7y
z-$c^{xzyK)m%+a;+RZ;R*?tE6D#(O)&vRC$tw;$y>{vN!eM4fx+up5`1oY!4O8IzC
z4;x+C<gXqbdO<JJqfR0FfMN;rd9i)W_qn4%3>F2{4?_vDczg1EpE^am@3WA8*FZ_O
zR~I+?e^q!IJx+Q_Q3@X>$B}(NUnfCdTRCe=6XN}A(~9lmw?|{!B-YeRXZ4iU$i{?k
z^)=1@b6p{S59K+6#_u3F5z0-w$G(@bt|fX^oXcJAD~D(PGwiIbg?>ISyUN^%5PJ7+
ziXfxCMp)4GJ~Z<l<_fBkH@at*8FOD^Ofe5p?RQ*ZR$bm8Q9M&Tm^aGjF?ybPFkw3_
z%ez!_@U$iUA_(z95@=fS=>CzxUt(CZO0V6*fWn5xjS=nYor?wfl1CI53FfGXC-*)Y
zND0C)1u0?kt(p|F8bz!RI7I{e-b9}P1(?sUC8VkOnUr&n!zjIf^>F=LY$UE^QNYU>
znK*mVyD6=gF47qTdBL?y5^rK;jBHe5@&~1c48G{>^y+4-<&B?hV-k<;Oi+4Jc#?#2
zz_}A#9yv_>l7oJ}sU)ILOQRnyam<o}s?t=3r&c!<>gX8J=su{P8Tt?WmK|{FQ0~re
zE0|D$(dHvD+>OG*022cYrB}Cf_vXn1&_B4{FB1Y{j4>LSZ<0$pch~(5NCZGlpUfkx
zYxFRPyU*U5sZOq9rZ?MmEUeG(S<DYUd~<~>t3g<aZ~Do&@62DCf$9!{-~UtESpc>5
zb?rV_fkJ_nB1Mb46)VyJ#R?QHZh;neD8+*nN{bc>!KJtb53Z%S6(_iRfZ!11rvLZ*
z-udpG`_9~%JCn@hoH;rB?44w1|JL)Ybt?9|NuRN5WjdX{cu&TYs8{F$2J+&T4erl)
zZ6z6v6ttw>_sgn!=6hN;ZYI_6s6fImb`v%}zv)Jp`irIR4~9+l76+?<2}9UgA0`e^
z$~G+QyHSx8EnUd!D0V?e4GwpI-g)VPJ&hYoa@0M6^pBqQP!oIm_R%`eR3N9amRTGq
zOp2z>JJerV>##w<1Q#`Y2WR0MvcICbI_J%RnK9I^BMEI-B3krLuavN-(5*UVNv3;D
z@wVMbu-5n-`PEAe_cYOE@Ur2A-QFxN-sp?ttwnA0M-7|#E!cRVrH3Zw4*t}&5MShL
zHNGvAsqfj4GBtUs;W_84t!~-HS7oi-$WraSU1g^V>%bJ^aExvSTneUdQq$hR{=*Eq
zV?&?11*f{y1P7rrj}=N_$5qxhb&DMC_H|Xxg<6-svshUbeE1{&q7AME<yH|)vyBk<
z+Xqd_KmTT_yn9EMCsgH|tG+JUDv*9o3ZS@>>+(`2UtafX5lu79w@u0yE>+Y=PeX-p
zg!LDu&+!9LwSva4);We7Nj>2;#;MT*0~iAEWOO!;zv;`(sYWW*78t#qLU{U$mn5Bg
zu~;Y@hMW$4xrKf%Fyn8^j>M-Nwul^p1+xC9C6jIfw7IbO<6Sqan6?iCFL1j^u=ss1
zjD%XwdY#=|F@h|98bZmdpLl}Qf4eU%K9W5Gn&<rPBJg;cyaT?S>CvyVbJr?PTH9F7
zkyxyPf+C!N^;^{owtQ<Q9AiZb$3QhT91cK|jor|Jk^*!h0|UUs!8SuDEZCTmZ<|mW
z2PObWdy)2!{hGokUw$&QV^&0d8`^=6Xo-;0NK4S(A{Gb(kC=@<3>c<d9_t9f99IVj
z-hCzOpR^O8-r&>j^6>V|1=eue&xiZs1&$tmlk1YKlJXcI1^t~CkGo6$jsZ<ge{vTq
z{+^fA{n(La*OW!hNut#KQF*`(!gq`Xn+yg%L4Fcp{M<F{^3sM!?xbrVz8EVBF?%&g
z=lOPANY!5aKsfw-xOwm9<61<F+b6e+Iie<9_MBXHX9WTdXG4hX-c8?JeD>~<!xbaG
zF)!%;a%7si7#OGS7@bj*q=w5W)!M+#G9gEvFuwNX>67q_y3CQK+}s132g^##*e}4h
zTO$Ei(^8@tn?BVB$q!s2rHzG3*6*+8y5_W%Pp&c|ab618*b2iY5Y+iN5E!Ko>uoEB
zOhKW!g-!yPS(=ga=KMsgT~3sHE6FpxkX6ZtMbvgIc44(0dS<xc_W;n&nWu$L1<AtU
zsNAmI<71({Z-uLv7(gNV+Lg}|6aWBijaXxdxqdEt#Kd7an~P?Ndv)-~3YQ)(Sm~kv
zl5|zOVe-eh)=cF27!P&2hkjb~)OB<%Yu{PGw%Kc|fB<hX-yGdjo8WQ#ypv~uiYms8
zRan^x=>FsoL{Y-$zz*W#D1pm1X-O=TF*m5uydE16_pqO30RR{{HHTjiVquH*w)%ME
zGeIXFXwK{BaS2am-Fo^gS~oR|rjWGr6E0_09nCd;OtK*xinBa+3E0=IA@Ge(C|gI^
z;v;^%YyDvF9@EJ8Q@Br#5nZz8Lb}u8^k8TpbJ1qON3UfRI}k5-vQQeU{)xBzZBID`
zU<;O?{N0uUhd;<)>6>A8424(6Rs`p%>3y^R=`3P*`f~pOqu)U{<vfd(B{<iXayiZd
zw2MfE?>A>Z`)0HyDh;n&p~N<?OO3d|NzfMGo%7%tBOBs`i?*4jS-&HDoG{Kb4K@~f
z{O0z^%3TceIVOHG6DsT$>&<Kzes<a$wqU&}*Eb+>TF%=eRAF4dRPdm&qCxwvl{_->
zq>m`w+!3mL)GDtP`YEfr%m^W2Wj)bhMBP|vymZZo!qV3?hE>{9o)afG->o>8i%J#j
zr4A6s^KCa>Y<iCJVwyeR7j(yJUrB>FaStL^qa&Vy3P)ou-U|HmGQB${8rFfOYRu-L
zOMumtrdhp^ucV`}-KNNSHpmNeXyr&C|CZvkN|tJ0{l(;^@5%Vm{q^`1W4aS&>1SdF
z?CJNOJI5|}15$U_1DnB+*2#lu;h|#*_Mo=Lr?+t7>lc53c@w(Y)k}^dsjzTEZ(lL2
zdhQLFgGOu6LC&-Rqu3&ji@6?IubDWt&E2V$ka)oDT!RTH7~cYB_`3dt*H62R|Is+4
zK9TSKY&y}%bbJ~^<9vbkz@jPhm1OK=Ex5~$RJmeXn_twgol5kKn(TdIhuz+b567uc
zJb(N%&fo_z5q3?QswE7x*n+N7Lq*PSUv!FIY$a)EzGKN?9SZ+_TOTlf`02!CplW|o
zN=1|i_j_kuzKKx#hSv5U#oIXAhuuP_3!L#D%w8<EDVRwBjg0Tie~dW0U@c!iVLm=2
z#kstt0W^}Ss<Yd77#eZY2hMGMr2P;iVRvc-J&_{~I*oC*q9B9Gd5&NJn#0{vhT1}s
z9H%YD{$#fXv^A!gw1z8mwUU2Y_`_9e9PuCtKynbcKX;v0kq|e$qo$IGJ4OGvPL4Vt
zT?5|uwrSsYuH_G`1^X;n_&U2)^#u6sLMi+=LBRb6ZTld<NG`IY)q!gBxZ`tW8g{JE
zBkAMte3b>O>IL)y(FA(F`Tm8^4`m&TrqDyV0|Txhpu~*5O-gNnbEGKE{4w_I#am(e
zw99xR!~XncSmuazpyVA+n;9e77#AxKTd*e?>{8Bj_<nEF=3I!oBE{EDM$=`~?94vl
zTy;-j{2cIV&(87PlfKpzsA_cPxv8%`kiDv{xe41VQN6Guobe9;GU~Kz{AbIp)Gf&e
zRHu6tZX)!EACnRWD`R=6E0O9*SN53W4RG}=^_hM<*X}NUSzevJ>NuNZVD0+49Q$qO
zA!$;2!FotZe1g~5Sn8F{>IFUkK=y_wBY?iDJzYrr4>LYL2LCk}3w!z#M!GS#&L<RP
z{|^tZ7(>BgGnEM>{*(}a*T(pf4OY&Tq{lSd28uE}W=(hMFMi|Ss)r{Ndxe<9vm$5P
z(i`F8$tjt1_aD(h_HXcrC-FkL-=D(_FZ4Al8ZYMDvsbzLB=OC5hVpj^9<IwCf8^;e
z;8D`dmZ3jn#274_ns8(pZrG+i+en7!p*pbDQ-=I@(5B%EU?zdI^OQR;`vXe`b}VU$
zj@y&EfzVQS1agGQINbv-RaP#1_H^W#q3)|C#O*LfIQeHx<fh*P@*S0;Z+S<8XI4;r
zM%)nyU(=6^#`Ktyw&dFP`@40^YKuJ$KRm6gg&89da9_`3r#xZ<N4UvBOD1u|-PvXt
zF8cU41f^O-m>cIl3xqP<q8_~CoTVN_Wwn^m5qCpeB^HB#^QH3I0-lR=-OjnD#ps4J
zKZiEFw#%oT8X?v0jitj?)!l|hw~1MJJ>~GlzCHL`n$ZECcMR`Jd-l$J^nE>-`}OOF
z9{JjTIs1xAIbC(A7f(B+?C>yLR-*#LRIP&?haBfTMCw$YtQ0dPL+2`IP3e~EggsAh
zJKie_kSrP>zA1On&)+WW^l4)4s7J4(dmMfF9v7>LdK~k9#2l$J@xSscU3kgWMDIl9
zo7g>uLB3#hhU^q>JZwP+7t}!Sf1M#8y-I$*k7yn!H`tu7J(LkBokL&S%!bva&gyOY
zUBiM<lL;6$-g)O5?KqktUs~@J7|!Qgxd3p2FgV1H`SJ!`4;-wsm;_I+A-$S^A=$8E
zTir$ERt(|QftxrnJ!?q3dE~$zuUMvw6dBfK73}qlDn|SIYBO<bDTMfmC<v2hgIvZ*
zq`KavGPnM4eagLJ!fBn+6aonBvk^+h*dT}O`Q#=+nX#O{%<Q(owcH-hSdnUdP0&de
zD<dEB5TkQ>_j~<#;p*zDX&|=C3$rr*M&ku>Q*d7GEvYE4V32W%QLM3|5qe0|Atwp-
zOR9)_Sq7c{&{u<H#Q5P=Z_8wq`fs-m7e_A|Y(!{}d?e}UgrN2d-CXrHP?M36SA+u8
zCTW?OZB3L0HEbkGau;pdwH{X+OD2Z7bM(<%tE1$GOVnl}&!SibgWXOBoKDPc(h}dr
zwvUNgsX+Il$WrsVuD4~>(N+4;2xOL%XJ;HZYViPoP2Fpgz>fBeUIm+qeu(1b8y*>1
zGEoaOyRFQIfLhfWdZdUO#CbMU25e^>UZZ}%5T@=6fCT5d2!Xa#%q9$8UPb1;M_o_G
zPQcv+)+bjtm+AqRM=Q6e3lKU>SeX+0%9y*8UupJJ$@rjZOG#>O#Fi(Gku98WsXf}4
z#?yX4h>+A~x>9QN#aXM<*t~UmsBQ8W+l46_P;JXw6VXV2(^ybzDh72~E!UjDS_RHQ
z_Na5{&+vfT9UcIw{dV!?A5kTfJu=@kUlYHNvH=H6v`db3Uo(yJ%_%)h#QekR=#~<B
zWT$!J*2<!#A+|}Z0Pt1<EYg1|a6#$@pHK+&RXr1Ui|nCa0$<Sf1F>bkQ{xw;?4w5Z
zRL~U}p~)2VL*G2}7exnKsS*NwMX}WLr&W<NNqEN&mP>jzPtnJB*5@i$vv__QVC<+^
zt}LZG)!8|0n{i$wJ<vCm847zoLS>AQCBgP?q%`Ez91F@76G-_AT&p3&JEmz!4Qpmr
z%I3%vL=W8lJ|QAdvX9}oD}urXmxhaEy)V-CZ+3Xyl7Ca9TXk6T;Zj>2TJkxfT-X|b
z!{KP}N5+XpG`ZI?!Z)XnKe&oG{h9aj!k??9)V|jHtIT^0fL||auz<*jt9v9WhF;1L
za)$Q(W(i8Z>Rv;>U=VS`eT%kpwB3?ZXsF|~CWg*1%z5MZGNE0M!OwfE0haXtyu$lC
zDkOg&mP-#?vfsqT7d~quSdXvOd_VCdF3k}HCwp(hp%j;$clWri<{B2y{ZMiQ6&yY*
zLML5hd728-0_OF`F+1v9i4Qt)FkE?MY=O11Cxl~oVUbSNy8W!#Rm^?x&767jaW(w1
z61<}G#Hw?OjtQ+eW+gZOfuB$-T?n(%u*eXf8)#s=wyE(O)=c8>u{lF|6L&#a#DfN~
zUIP{DbzUL!)^v;Mbd{#&vbQNoj)Ce@G{<y;VWY0HJlcCN7EK{1rn9rwElUU|X0f1N
zFa$E-f+c&9!RlHQ`L0^T^`ptH=mGv~v=%M@w0iz6%SaK54tfo*u3L#Lric%ljd%s(
z8H*A4eLtC{kA@N5hRbxQW2_Ld5ri7gj{xdFL?Me*j07I+=hWi^4p-f`!EYs=5o5%Q
z#&JA-@t6-Mgbkidr)T(xv_hOv!liAi81!oTN>IJg`6+=IZZZjhbZE&q-+M&UdS@7M
zzzwn|e@<)Vdcym+ub3JAqXzM~+vpwU1!;MzkL%G_ZTF})9VYVIift=^c5Za{72(_Q
zn@i+cafxx%lPF3oxk87F40GW@K*xjChS$8$+(_F)`uB)x%4?_?1Kn^Lkru2!BE6mg
ze*JLoPPcyeWj~Ch%J-QlNvY^l6{{D0`n{?h`PNIGy{*vwRFU_D{3~8xF+HoQJHzxv
z2}0`lUoOkGL{b-ONdCekEjmP$uGuAFvKrG$v^pc&3pmqbaMKrE#50K>F6Q{z=%13d
zcT+_)su{VGe@%EZ0}`jd*iZcwchJLt%14K_UM@Pv05ArNyFDEcd|W6=e<}IU;<c!5
z%Nu{u{?;CD)MlrtHGjtNRuo=n)gjOV#MO<t0>X)aYPvY@WQ|if5wSfb`H7;Xq7U2e
z{0_cn@SWc~rD08}U3IFryH#XD<)886I5Z18%26u*F-4I)=8W%r%D-~$l}QX+<>rsQ
zuK(fQsQ_r<e7<Y`5S`_q))^cynN+~}Y1lsc_@}FYv_q{g-<oMd-`&{Ia=?4Is1q5Z
zzo_hEbdXH8@7iql@)KQn6xo0Pv1K{;yNovtqAgb9+bn@mp3!z2)J7<R0boEGr8zoG
z+MMx#)S)y9`O;#kp6UekBPy!H1#GDwb#>e4Q=UQStskEK>uje+PgMbv4)PN(_`PJ1
zex;!48F^g`<jqX|4=6f*gLt}T-WCR%`$ZZKvbJA;1FzF!Wk(&zpTk!7^R-iTWwH4y
zyEzq%K|U-BhctW|=jOdY$6gN~aJ>&F+_T9OHJDPYI$yQQBrk8J2pfx@9yHbxM+k!o
zs;1khKM1QNs3?So*N{Z{u%;L`-Q}^g%w+-&*QRkp>#>7E{hRF5D^9yl=N6uIplEtN
zxCKiOUN79OjNzUhzmr%Y4H$c##A8dQ<NE33{=6^Y%!pufy(<1qYPbkZOjvrhg^vGs
zEd=d@J-vyOWJS%89K)*)nQ+a%Np2py#q#*Zw9?C7Xd-g47L^Y}h39!LweoOiWe;${
z<5CjD#&&g6Sm{+u$e{W8epVZbnp%j&<d7QOZ<W%a6He&B%Q-9_08pr&!pV%&;WCuh
zxoo}u%sx#h{k<n>6k&>aNIGRes<hbCS-2!h1TlS<+=u{b(2V>v5U`MH{toqQVp<OU
zksb}^f?H2$JFb3H@CF>oTV53A+vyo)t|vIegA4MNr++_JdB?@18y(IJ;8Sd=c$n2R
zuPYjuWilL6Todsn**1lZyQN|0EvZf73BPBYM?<^N+dZ?L&SwQG9B04C%5AR-nICLu
zLzB-^+6t;13u1Hql#mTJvn+CxalcICtMtIRMw~57&6>$lWeN1z2k)5mnzTm|{ijzp
z+Vx2MFRY1wYDyVZsu+>d0|_2HnO~J<1lZZMp-)+tHYZyVgfxmj075+{k|T5X7`&SH
zx>e!aI9*w3#X^&TMH`wI3^59^Nv!QwWe$lE5BS~J%y!P*g%S!Q=at33_I!Qc>+ix~
z#K*DokuyFVs0=UAn-K9zkgqT;_Wz)#@wNc#h&6q&VQZo^!H%?!<_u0{pzC*}Yl0xE
zDjix|<^}+sq%9;fBSz3)k)y^LE8)_O3zOUBjxpStsREd_lUSqa)M|D(F>mV78DZFw
z(rR(isS=~$jtFW_P!Z-X^EG_1!xef%^7v`;9)uHIVp6;vEZadBqYkO1VB^kNa<WUw
zpG;v@`n)Jr^J;XgDMHF7mHGB)D(vyP&w@1%sv&2N-e7kd6RZ>GFX-1`Xed1y#()Y6
zb*L`FPGF@iino~VyICf$DhF|-j~Gk3+lzqXK3J>5@((Xdxl(lI6Z7JIV1Eh=XCqfk
zu2=16+g*>!w0AMLy;t`4aICY@#oN$?VrHn;;zTv&M(0&L)>1<{Urd#&UA+*)+A(`6
zQt@`Y)j#WWC35VG7#79WY?7+$Q_ASyjLa>_AGRqWh(5@qHWw3T;hSi_#!#3#PC2_@
zTW+yk7y4^<unDRV7JxN+f6KYQ_SDpU@=cC2VbVPij0J(e{l<Ike2>R__k2kNLw!Vn
zj&MEb#hCouTAJW#O2i(n^0a0VbA*(zi4qjDta)nQ>#xr+=fL`VSw&Fa4ia1tX#oPC
zgFJN3XaUXFXy8su<eO9mDVdn;k^Dp8aBWqR+D-brI>ErDfV+`H>S?Y#4-u|J!(Z=X
z<K2<G=;itHx8%i18FF0$8Za$oY=OFdV*mrYroB>$-AuqR0ZsGn-h+0neM&GGGp(JL
z7tG)JQuT>h(&n{Zuw@GQ%Y+O|swtoLI>K@66c5K?n#tLa*n}u27XtfCLN%?B33VwD
zNzn1IH;uQYNP}m{@PL$PgK<Hse)CZ77C1l!k(?^>?zkKbs?__&`^!YM>t41?BTSOS
zCWUobxlCz5=<RdcIBXXr4bD&*Q3ciJwFxa=?8lCuWAgkQN~<v`TxG)5KuNu4vge%-
z;Z}kS4*~>#zpp+P8^9zshmF`3C#cx@e!i)veC{yWmNTsakDvBSpB?0#*PA?v8d@FT
zd6`J2gO#{UN^$8xfoVwi(B-G??HONDjdeUbegXFaU(8EuVTZ&ux!6!A%XFr(KX#60
z^089J*Jj<WGRs-zVo%f!hYWoc@S`b=tcUuqEkPv)qpXpX>vh)ArKJw7p&!xXpmmX#
z?cWAc+E3{n6;d5^@9}+O)zq+sQ99|o*FJE(`^cjjdM3(pvDx{sdWrrq(7=?(b$e(N
zM?riY;}HcTZjO~Blej(t-3(qf0FbMG{5Z$TvSq8pWLzPH@-!A#1w*?0O)I^yxbFBd
zqa6^v0OGPpMZ{Cys9unzz_zjUzuYx1ERXvnVRHIe&YjoOFa}1!8|V-V%ac)&G9Dtm
zlTJraKleRig(MSD+hBJmU?XZ8cMVzbj<8zV>qYvz#NjZg9Sj{=W^@9G7#IF6vtaM_
z{4)z_ukZu(VF?8M!)e;M$^}>`s|FIR<!=dp>o6=nTSPe>nF~l`Y>Ws!7{79#;SA9S
zTyQE{vh`th@Ry33I@E|qxs8ngR)!oMGU?Zwn@A}aDq(F7n2G64r?_I)n2A>v%WQ%8
zWa6DW?(-$qnA|de$5rF+h}{+^+i1H_SgAXA{D8C*g8q=_fq3zWwm*x}fAJbWM|a)D
zTUOkGP({kDn}#VbwB+DBS)a&&_ZHz<g3Y^Tnqvsn9Z-_O2$3=<Lw82OIa1-e6r1<t
zs)8mv&?Sr@YSBfKj#&KcZ6J;r(||U^xI!e(FItX^?lsqPs*{(3KM_2%(@fle6{4+T
zqTLyN$}0NTy$2i3PXQb1<mm_S#)97;JQM1ijfphpa7noz(Pl$-sLL<^yk;x)vzh(M
zFO40p$MeeZcaq7sj>LvlHw=jWwr)RZ36UB|oG0w7qmt^rdXcCD^X=eqb)=L5J)My_
zw^unjuU(nDc1Lzi*UIsUS+iQIdmMUwW5+~s&W{b~@cLED>8hPegY@a_>QFVh5-bJV
z!9_DK!hc$V@kG9tST*}vEcwm9@hP&LqzuSULrS1Gf$Tla-16w?2XYE69&wy_pmUmu
zC;#3fK$qztPZLi>o4rRM=LBH^V%upQ8=7ihiB0Wqz4Dvokb@XVQbg185vP4~@a;O9
zjaXP&RXFI|Q}LBZc^D|>=l}a-ESR!NowBN6vcwY;5P<Z@oYH}Nie!$&fT(WJ$&09q
z!@q9RunH^3Q`8svkC=*5S!2{6cEJnSDQlko3wL8bj&{Zir0y=)nhsm%MDTZ3FQcYQ
znm7*V^UOLmy7(sh3s%;8Vjz~_lOfSeBYGEP^IlS@|G)&QQHc(P{G>v2i`z@ShP*@_
zwkb-?ll|yhpL1>lBUih=B<_McvEw$$8^X%GDi=k|KA~>&@V+<@!oyyluO)zcKgWWn
zT_~y!8QiGhVOjgW=T*es8R#cF1NFc8X_-q1<2aN=3t=AoTlEtfsqoN*=Dquemx2o8
zFHg}G?W0b2#?jq$J{5m{e0quAKsz<A(n{`EI>WXcg4hQAfIX0wx#1V-Y9qtLf1Vap
zwYB`9Qbnfq)bQZeC+|y0Ncf_!_Wthh9?g)|#J6a32Y48Ggk0-EL#;WVSKOeLpaWdu
zHyxM8dAdtQ%E;FC*odSB+Vgm)TXo16a5bO@TFF_leg*bJpXcLw5ZWz`E@5xR=T&Sr
zu;^%gH2}H`mhe{J8`&PCtV-9b5M}(QACd$b=M4Y6%G#G8`oA!t(OjlTO+2&GsMh^g
zBg0!mWprBL7Fb5!k-C6S7$q!B_UIa20NxA4pEB*fXD0lgxiA&ia*4~sNMxvl<+gdd
z@nL~Y3Fo$<2-PVv&9QvHw#A)?nhbqv9D$U{(-zQ>yzrj8N$);HtBU=IriTD1K&iUU
zWkNcbGT2ZiKX~D~@4c+=(-fzZD?bo^JV_TmUzllAWMZBT3RiY(1<UnFY1r*LLgUmq
zs+g6O<)xlhc|@inn)eB%GpPwm{aMHo<mjD=@f9CnVK+zt4~?yH)9b-h*=*yf&WSSx
zFRPJ|HRg8H?&`huCYfQN737s)<Z9M(0eZ^#5&D|<z#1@L*?n1)*BMNY*G(G!TQK>p
z<o-_pd%(}Sa`JJtZdvraYVk1i?Qa!~6(x`So&?=aYyb(N>|?;ir>BT$tUI4)7s6~~
z(GnZ4hn0TI0#-m78#eT(z1JTaURQpPxH7;jY`?Zy{6D!*c1x)!M0E4=;5FDKliVev
z&z>Gby+IcFw(R==^9S>`RP#0HRgE5q`uS!aV1DI{nAbDo_8F4+?(L#NBt}1ixF;_8
z?Tbxoe1M2<j|XaA&>L6mu#A25tAKO}xwYyc;u59e`wZ;{>UuG89KUOi#?&S?Ip`NW
zGf07cfPXF}xvY~j`xAAm7s(cqHFys`kIw|?^(tgg=#8wm{O^D%dtT{8j#u8f<2lf3
z+WknIoz6Tl>@{eho+>{OU$1BQpp{BhO<SDS-DjBU%*_-t>CM`83Sopl=FH47>9}qh
z&ilNq^Tgqv7B%OWCWIhjt#e2Fd7lsr&YGLN&uO?KH+hNfDUD<wg7k^wjk>p)7utVQ
z73|3q!9{z$G3JrORuVBiMu<hXFCy!%y{+a2!Y(y4^>pTd<_3(}?TEhCTiSqt9rr&w
zgxx1sH8hM)d?+VUj@lhdNq|H1XY{Z8dDS6=*c+N}_^i^6G4*>=M4Zo=D-#2AmHDw`
z`q(+}xoycV4im>t$UfcV1UM5mOXm0sJ7M|w6c<>0xnhzxC1uIchu?hi@*$Ajjeo2h
zG$#sE_T7Y#xw@vj+<Eu(qST}^GiaX=C(C<9GhNncYGU?l>{DBFrtu2E%M2rMJ4-!Y
z#oIY!M7W0%Hkr4<ejKUHYL%|7RCD+am=@1;U34xu9~pVs6QgqE8tsuQ-=`QjD*ERI
zDEyZ8zP&=)Ex3JQGFH0o8;;&Gb_QVJmnio4uwMv^OoMl@Z$`R)xrM#^g}SrIlw=j<
zf|kua?b;?qNeE|R<Wn+R2CB2SLNE_7#c0zl{t-|y>k~dE!L7%%xcScHMN6YN|IJya
zM%zOA<K`GoA|gzIJx^4a3O%iY>LhDvjaKFJ-ndkoVtDPsu$9q}Xa{Kmx=LZrTnqLh
zTdAYsF_2CHtoU0P7Bb=wWlbqgJ4)bETmEVwnA)A_nE|}D3Q%yt41-*1b^czA4j8O(
z@f>fEh`@oA<&DoqCRozf@*h97KpU%I-`J=&Fxn|voPI|Co9a&0|0mV`;npcb^yfPP
zWSY`^!aYX$1yxT%^5*RHm0B>IIT=iy#mBK{H;l;`Z4(LJcGeI<fFh^i*B<E4XsHqS
zy0$29C+_kU!mYt3F{xmD$V#~aYMlZQLe$g@$YW7nyFq`Pe+6bzMk;3y{PDl-*m_q(
z$|1#DY<0VSReparH=V0O!op%?myPKctiMp2ZCc@`+<o$(?I}v)uETsqEubIzAxQJ#
z7_(9a__i*fgalf5!U)8W&IsNg=dz=24tL;F=Aqd2aDT1!e<B;qS{9Ai%h1MIbxR)o
zs5StA`6Y@(X*N^Byhu>Grn+O>o=dx!nWp5E(PRZ=$y2zMh8yf&!d&b_lwqUoQtRCm
zKU}9I08z6Zx0Pp3HL!%O&DB7<Kh5~usxwR;*pUgRs#;DO)`4Q`c}+QYNMB*FhRVI8
zpNL4-|Bl;ob(~0l-*s|)2M+1YF$yb|&jU63Rb@Z0t?5o22m4Cg1(~ln>D)m-VDRKC
z=V=usMT8lf=qN3J50u1*PnX9JTl3O23a0}5Dy#Di=QftgY;;{g5Ut(G*E!jCf?qs$
zBFb&CdODi4iU_i{LaWOu(!LdA0Hl8~2R0zHLu~a2yqAlVrz0@0%#IRUzuW8T9%i96
z9B8qOvaoM_Rv%*e758{eIXyerqGqxmXGJf&`NYuhE{|({E+s`HTbZ#OrUJaR6v{II
zNH^LvHL8s|@Rossi1NvZjYZ}PsCAWiDOHPLR(hg6>94=G`azlPE?GxN$NYc|3f*>w
zQ(;^pbvtah{pX%HsgDR0Z6)ld(^8rp;|+)&W-|}C3B{Jf?BmYFQwslf*atqXGwBIP
zEcd@2iOURV3xPKn!mlt>zW0CGIdQP_71k(^UmP|&MU9k{Um+)P+U4^m9wZvu36s}o
z_u-he(MyasML%~&|Kcg5|Ki%1-|C17aD3v)aN<p<oTE;Zl`b{_V7hEJ<_XN?zrMyM
zFDF9qf#2$@!rYX;_IFncv@A4Z1KG>U8|0J%HS0>S0wcEAXDWnFo5V>Z>rhuzO5*?s
z@;UiyTbaHBN&X!XSGRj@p-lER%%U;v&zD{o9^lXU`243l$PdY1@R?QP!o=@X!$Mo6
zy5#vXs5-y63tAKGc<kv{xQc2%`D#!XRU{s($crk?H*7GrUe{+8V}F3>`_n1x<iB|=
z4*r+NZqWG<G5ntlG=*L8fv!O@o;=qY8i53=Mr@M~y0e1H@geUZyuzSVbvr}l8J{N|
zVkPD=glX(mf1ss;2GoYoN2Tn?=qcxMe*ToggbzWvY@uW8kDQCM4Tt1YCE)vs(o#X6
zI{VqLB%hn64I{0f1lWhZ>@x6-izXM7ZG0Ob4`+WlchP+5o5Cw6DV8T<l*0DZqaAkB
zvx2WlLO;{qf9d>X`clR$tK4yTXfS^YNBIa@7mYJ_I(JQIOw&kmtZ~`QEd3X=?9%IP
z@=*N@m@`S~84aY?L3lc%aW`=MG(B%r?eQp7iqhNzeEY)o30AzQDSc#5r<%YZ=1QNt
znvppB14_UzQZ8LuA)j$9rGjMXG6Bk%FsN~$>t?RFhB$3aF&eE>2m}Bb=(G!{?q2#z
z3me9+<vie^S0S%t@>65At3ZVyc%@>SEzm`=A8n`+r}O9+AYLh4u6g_+2)(NX=`~-{
zEg5}dJg)G9hHt{C1?@fDo*;NkjDaplgy$dQjWTqNVSCCqCGq*MCFz_h^lK{My+kO*
zCc@Xx8<h{OPX(A^CRdF&92O<M>SzZ42X11XL5bh}9J{K2SB{1(w?V9S>=);F%~avV
z=9phyJ~35tZhRv%YWbJtM@b4R#5aNT{^UbP1yzh?_?d2jC?%m!l-rATOpTybTN>Px
za|X|ZGH*0fNr!r_>(J@RPP|w<CWF^Wrkiu1@}uyuewPsm{DmrOZ*HftejNSxKaDul
zOT}M)vSsSt|2{FzdSpzQ6MI^I7l~xs>-?Y+hI5#Zsu_E2Yq3P8`@-KCZIcW#w)R|@
z&c}W}BVF}($n*%C61zeqjQ62EclD`m^O0s)eW+KtogAnylV0teB*RuNxV2Pnz)Vj!
zjB?RMY52ugi=~R?rIk6Njlg;B^P#PAHHKAJcTh00XJ9yYX4>=Sb6!;Mq<~j~iLWuC
z1B)wNog2f}o7WXav=<*gbf6>0XiYbI@eR_V;5chvwyeLk`pVD$W^5Uq!M%uH*q=><
zqyjCK2evOBMQnO(ZA<Fx3}xc~15I=3Yt8{XN`E<n9xX5|crGo-kft=2QIqeizI5ub
zA{+RF`l8f$$yHRu^KSalcvbHY{mp*^R5WfAc!3{do3@S2TRXC64PDfW4&kErF9qow
zty$@bi+n#l@NX+vqvvh0${o$-RT?=@eOPBN6lRYbHxh*dvEBY+ZZJKCZ1sA>K#gW4
z6tW+<K045<*st@KqGY2X;0tvr`bessO~Lu_C<f{Vs;aivIe+CSbqe55*yuyN_a~UD
zfq!@Wg{gn3Qr?X7`wWM6Y)n)K@L-_X;oIM)N6cap5}lBile^=cakiRH{HPe-C<fGt
z<q}#p>xrSiN8eZhO-y1VaNK<!<P1TE-P-$s#fDe^P}WO*hJxdu^43`mAJMtKh<`OE
zsdcpQUou!c_@CyV{|{a4zl5@XUy=+w>|bv~cj_PIOy<9N={Y;<KkOj+|2pq~Zs`Bz
dybS{P^uZU;<ghOkB>pBwD9NkImAy6#{$J8Kq`CkA

literal 0
HcmV?d00001


From e8ac5bbbdecd6e15cdbc0949d0b00598ef52424c Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 15:32:41 +0200
Subject: [PATCH 04/10] added picture

---
 docs/report/bom.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index 89261ba..a15c000 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -4,3 +4,4 @@ title: BOM Generation
 
 ## BOM Generation
 
+{% with id="report-options", url="report/bom_example.png", description="Report Options" %} {% include 'img.html' %} {% endwith %}

From 470c6b9d776545754ae19467551eec527fac2c9b Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 21:42:02 +0200
Subject: [PATCH 05/10] Added menu entry for BOM report generation

---
 mkdocs.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/mkdocs.yml b/mkdocs.yml
index 50cc885..c4aac81 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -93,6 +93,7 @@ nav:
       - Packing List: report/pack.md
       - Build Order: report/build.md
       - Order: report/order.md
+      - BOM: report/bom.md
     - Barcodes: report/barcodes.md
     - Context Variables: report/context_variables.md
   - Admin:

From 3eef0a56cac8323980a6b72eee57f7865b1e2e90 Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 22:05:02 +0200
Subject: [PATCH 06/10] Added example

---
 docs/report/bom.md | 113 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 113 insertions(+)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index a15c000..f5cc11b 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -3,5 +3,118 @@ title: BOM Generation
 ---
 
 ## BOM Generation
+The bill of materials is an essential part of the documentation that needs to be send to the facctory. A sinple csv export is OK to be importet into SMT machines. But for human redable documentation it might not be suficcient. Additional information ist needed. The Inventree report system allows to generate BOM well formatted BOM reports. 
+
+### A simple example
+The following picture shows a simple example for a PCB with just three components from two different parts. 
 
 {% with id="report-options", url="report/bom_example.png", description="Report Options" %} {% include 'img.html' %} {% endwith %}
+
+This example has been created using the following html template:
+
+```html
+{% raw %}
+{% extends "report/inventree_report_base.html" %}
+
+{% load i18n %}
+{% load report %}
+{% load inventree_extras %}
+
+{% block page_margin %}
+margin-left: 2cm;
+margin-right: 1cm;
+margin-top: 4cm;
+{% endblock %}
+
+{% block bottom_left %}
+content: "v{{report_revision}} - {{ date.isoformat }}";
+{% endblock %}
+
+{% block bottom_center %}
+content: "InvenTree v{% inventree_version %}";
+{% endblock %}
+
+{% block style %}
+.header-left {
+    text-align: left;
+    float: left;
+}
+table {
+    border: 1px solid #eee;
+    border-radius: 3px;
+    border-collapse: collapse;
+    width: 100%;
+    font-size: 80%;
+}
+table td {
+    border: 1px solid #eee;
+}
+{% endblock %}
+
+{% block header_content %}
+    <div class='header-left'>
+        <h3>{% trans "Bill of Materials" %}</h3>
+    </div>
+{% endblock %}
+
+{% block page_content %}
+<table>
+    <tr>
+	<td>Board</td><td>{{ part.IPN }}</td>
+    </tr>
+    <tr>
+	<td>Description</td><td>{{ part.description }}</td>
+    </tr>
+    <tr>
+	<td>User</td><td>{{ user }}</td>
+    </tr>
+    <tr>
+	<td>Date</td><td>{{ date }}</td>
+    </tr>
+    <tr>
+	<td>Number of different components (codes)</td><td>{{ bom_items.count }}</td>
+    </tr>
+</table>
+<br>
+<table class='table table-striped table-condensed'>
+    <thead>
+        <tr>
+            <th>{% trans "IPN" %}</th>
+            <th>{% trans "MPN" %}</th>
+            <th>{% trans "Manufacturer" %}</th>
+            <th>{% trans "Quantity" %}</th>
+            <th>{% trans "Reference" %}</th>
+            <th>{% trans "Substitute" %}</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for line in bom_items.all %}
+          <tr>
+            <td>{{ line.sub_part.IPN }}</td>
+            <td>{{ line.sub_part.name }}</td>
+	        <td>
+	          {% for manf in line.sub_part.manufacturer_parts.all %}
+               {{ manf.manufacturer.name }}
+               {% endfor %}
+          </td>
+          <td>{% decimal line.quantity %}</td>
+          <td>{{ line.reference }}</td>
+	        <td>
+	          {% for sub in line.substitutes.all %}
+		          {{ sub.part.IPN }}<br>
+            {% endfor %}
+          </td>
+          </tr>
+        {% endfor %}
+    </tbody>
+</table>
+
+{% endblock %}
+{% endraw %}
+```
+
+### Context variables
+| Variable | Description |
+| --- | --- |
+| bom_items | Query set that contains all BOM items |
+| bom_items.sub_part | One part of the BOM |

From dfb1e4994a3d94eb79278edb565bdd6e841ab08b Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 22:06:55 +0200
Subject: [PATCH 07/10] reformat table

---
 docs/report/bom.md | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index f5cc11b..ef98406 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -59,21 +59,11 @@ table td {
 
 {% block page_content %}
 <table>
-    <tr>
-	<td>Board</td><td>{{ part.IPN }}</td>
-    </tr>
-    <tr>
-	<td>Description</td><td>{{ part.description }}</td>
-    </tr>
-    <tr>
-	<td>User</td><td>{{ user }}</td>
-    </tr>
-    <tr>
-	<td>Date</td><td>{{ date }}</td>
-    </tr>
-    <tr>
-	<td>Number of different components (codes)</td><td>{{ bom_items.count }}</td>
-    </tr>
+  <tr> <td>Board</td><td>{{ part.IPN }}</td>  </tr>
+  <tr> <td>Description</td><td>{{ part.description }}</td> </tr>
+  <tr> <td>User</td><td>{{ user }}</td> </tr>
+  <tr> <td>Date</td><td>{{ date }}</td> </tr>
+  <tr> <td>Number of different components (codes)</td><td>{{ bom_items.count }}</td> </tr>
 </table>
 <br>
 <table class='table table-striped table-condensed'>

From 5aba9c93c36bfb3c0f7bdb9e8231ac8f74bc1f0e Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Thu, 21 Apr 2022 22:14:18 +0200
Subject: [PATCH 08/10] Update bom.md

---
 docs/report/bom.md | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index ef98406..4f961bc 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -91,7 +91,7 @@ table td {
           <td>{{ line.reference }}</td>
 	        <td>
 	          {% for sub in line.substitutes.all %}
-		          {{ sub.part.IPN }}<br>
+		    {{ sub.part.IPN }}<br>
             {% endfor %}
           </td>
           </tr>
@@ -107,4 +107,7 @@ table td {
 | Variable | Description |
 | --- | --- |
 | bom_items | Query set that contains all BOM items |
-| bom_items.sub_part | One part of the BOM |
+| bom_items...sub_part | One component of the BOM |
+| bom_items...qualtity | Numeber of parts |
+| bom_items...reference | Reference designators of the part |
+| bom_items...substitutes | Query set that contains sunstitutes of the part if any exist in the BOM |

From 808ec992b738d968437aa5d75f886d6d9bc29bb7 Mon Sep 17 00:00:00 2001
From: SergeoLacruz <michael@georg.fritz.box>
Date: Fri, 22 Apr 2022 10:49:14 +0200
Subject: [PATCH 09/10] fixed typo

---
 docs/report/bom.md | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index 4f961bc..27a002d 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -8,7 +8,7 @@ The bill of materials is an essential part of the documentation that needs to be
 ### A simple example
 The following picture shows a simple example for a PCB with just three components from two different parts. 
 
-{% with id="report-options", url="report/bom_example.png", description="Report Options" %} {% include 'img.html' %} {% endwith %}
+{% with id="report-options", url="report/bom_example.png", description="BOM example" %} {% include 'img.html' %} {% endwith %}
 
 This example has been created using the following html template:
 

From e1ff14802448890bb45619d18ba4fda58c927a9a Mon Sep 17 00:00:00 2001
From: Michael <michael@buchmann.ruhr>
Date: Tue, 26 Apr 2022 20:20:45 +0200
Subject: [PATCH 10/10] Fixed various typos

---
 docs/report/bom.md | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/docs/report/bom.md b/docs/report/bom.md
index 27a002d..f656d25 100644
--- a/docs/report/bom.md
+++ b/docs/report/bom.md
@@ -3,7 +3,7 @@ title: BOM Generation
 ---
 
 ## BOM Generation
-The bill of materials is an essential part of the documentation that needs to be send to the facctory. A sinple csv export is OK to be importet into SMT machines. But for human redable documentation it might not be suficcient. Additional information ist needed. The Inventree report system allows to generate BOM well formatted BOM reports. 
+The bill of materials is an essential part of the documentation that needs to be sent to the factory. A simple csv export is OK to be important into SMT machines. But for human readable documentation it might not be sufficient. Additional information is needed. The Inventree report system allows to generate BOM well formatted BOM reports. 
 
 ### A simple example
 The following picture shows a simple example for a PCB with just three components from two different parts. 
@@ -108,6 +108,6 @@ table td {
 | --- | --- |
 | bom_items | Query set that contains all BOM items |
 | bom_items...sub_part | One component of the BOM |
-| bom_items...qualtity | Numeber of parts |
+| bom_items...quantity | Number of parts |
 | bom_items...reference | Reference designators of the part |
-| bom_items...substitutes | Query set that contains sunstitutes of the part if any exist in the BOM |
+| bom_items...substitutes | Query set that contains substitutes of the part if any exist in the BOM |