From 3bd40b489f093b619182ea7a7742022b147a2141 Mon Sep 17 00:00:00 2001 From: Thing1Thing2 <93027319+Thing1Thing2@users.noreply.github.com> Date: Sat, 8 Oct 2022 16:11:33 +0800 Subject: [PATCH] DG:update diagrams and description --- docs/DeveloperGuide.md | 100 +++++++++--------- .../diagrams/ArchitectureSequenceDiagram.puml | 8 +- docs/diagrams/BetterModelClassDiagram.puml | 20 ++-- docs/diagrams/CommitActivityDiagram.puml | 6 +- docs/diagrams/DeleteSequenceDiagram.puml | 64 +++++------ docs/diagrams/LogicClassDiagram.puml | 6 +- docs/diagrams/ModelClassDiagram.puml | 43 +++++--- docs/diagrams/ParserClasses.puml | 8 +- docs/diagrams/StorageClassDiagram.puml | 22 ++-- docs/diagrams/UiClassDiagram.puml | 16 +-- docs/diagrams/UndoRedoState0.puml | 8 +- docs/diagrams/UndoRedoState1.puml | 10 +- docs/diagrams/UndoRedoState2.puml | 10 +- docs/diagrams/UndoRedoState3.puml | 8 +- docs/diagrams/UndoRedoState4.puml | 10 +- docs/diagrams/UndoRedoState5.puml | 10 +- docs/diagrams/UndoSequenceDiagram.puml | 28 ++--- docs/images/ArchitectureDiagram.png | Bin 25055 -> 19383 bytes docs/images/ArchitectureSequenceDiagram.png | Bin 25793 -> 15320 bytes docs/images/BetterModelClassDiagram.png | Bin 19781 -> 13678 bytes docs/images/CommitActivityDiagram.png | Bin 29758 -> 10812 bytes docs/images/ComponentManagers.png | Bin 17053 -> 16716 bytes docs/images/DeleteSequenceDiagram.png | Bin 33030 -> 28779 bytes docs/images/LogicClassDiagram.png | Bin 34952 -> 33889 bytes docs/images/ModelClassDiagram.png | Bin 26539 -> 35511 bytes docs/images/ParserClasses.png | Bin 27452 -> 27102 bytes docs/images/StorageClassDiagram.png | Bin 28454 -> 28563 bytes docs/images/UiClassDiagram.png | Bin 46833 -> 47149 bytes docs/images/UndoRedoState0.png | Bin 6582 -> 6146 bytes docs/images/UndoRedoState1.png | Bin 8013 -> 7119 bytes docs/images/UndoRedoState2.png | Bin 8381 -> 10127 bytes docs/images/UndoRedoState3.png | Bin 8047 -> 7048 bytes docs/images/UndoRedoState4.png | Bin 8103 -> 7322 bytes docs/images/UndoRedoState5.png | Bin 9793 -> 8858 bytes docs/images/UndoSequenceDiagram.png | Bin 33034 -> 27264 bytes docs/images/tracing/LogicSequenceDiagram.png | Bin 18539 -> 16674 bytes 36 files changed, 195 insertions(+), 182 deletions(-) diff --git a/docs/DeveloperGuide.md b/docs/DeveloperGuide.md index 0801ec325c4..90a280197dd 100644 --- a/docs/DeveloperGuide.md +++ b/docs/DeveloperGuide.md @@ -23,7 +23,7 @@ Refer to the guide [_Setting up and getting started_](SettingUp.md).
1_pHbH z_xikswIVYyGNOMts1-xun&p~6(v@G|eX@Z6Ud+s^s>m} zVZQuzQvAp~T$4+li TMuH zL~n1(<>t7&O+2Tr`=S7D=4UC&a+9I#ak~LLQr>pK>w^umKd)X>jAZ`e{`m3Z>FFt` zC>7xpi7eO^&N!sfp~#nHpsRg;Ubhxu_r%n4ICp3)PV}8vzGxVjkB?7GTL`0=^w!ZQ zG!j)yG&m4(-4rh3#>C3XN I9tv9jlW`#C6pHo0Q zimdO~FKiu5bn66N=E8ieV`@Vh Wxlfw zPG|(++OK&gEVZqjpI@HnRr<>WqQX*n?P!FA$c(E+uN{5<{$)!*QV?}? wBN6eXAi# z61ofQ 5YrN1Tc; eknZsSjbtSgt+ocr{|JH!KQL3%t1Q;5jdiS&)YQuXy_#ALFGIOlbK|DXe7chf5 z=I1kXF+cU{-nJ86B8f9RZXBDMs->wJ3aLMW{LIM9xG>{2^}E>N*fSO$@sjEonVKRZ zB@Ks=o|k#q#6Zkn=qLLJi%fFs>+5R|YtuVWZ;6a%KyJe!e=BTq?4)v*RfylYxYU*F zMI@SzEYt+Wp6J~#80Hof6kIZvKwq+$m?9CgEa&H(_uoOKEFFG@iiS2(rW*yJJXbaM zB5MQne#L$xF`Zvr%*e*}+!$jaD=`Sw9L+|RBT&xtsjaOoCMn1pLds)Bc7C}IlEhk* z2!25Yh5#i&W1~PSm-i+tf8bY&4 L`^~lJxd8?+THc5zk_l=>BCs>ehk;snf9qMOj1#A~!h->c_?q>%3-3zs1 z( xosd2Y6(pZvGmPcC+m%%5wnb(A3n#XVwaa1b($;Tpe3cvr)yf zgiepXOuP-r2*8Kv`yJo%n6Zh9Jq3`F1gBGC@pZlRT5lV_4nMIqbx5))UJFaao43-m z2MoTtFZv_P4T9{vO#dxNxxT(G`Bbx1{Po)8GK%|~)lyHxz#jAWQ+L?SP)?2xv ;Q)rVF`FRKV5+M023SVqU-`~^iu+UKJafv6#2zO0~^X``sy*y_1hkaia z=Ulh9D?1k5`=@$K?huiX5S~1-J|m^3o_UM4_@DK%pFd}pW7mp~o{om-l7WR>P@ z289Ma^X|TNoax(?#I=d8Z?U!;HMF(OjL7p(jI%}nH4G2h-&U4={`odZSJnrqQ{IQ+ zSGQ(%OJoWs)$5x%s8vTN5eiilmoVDuuGBnfrsf;uayzqLPwU>D-)HOy-smFf(>cm6 zFSiCx8IW6KJ>Po$@aSh>e`K*vI zP1gtbyu>#AWmi)wdn#MV&u@;6(#}Py)|pT|PZ{=xrPFE#uFq;_-1ZkWaf2fxElJ&$ zxd`9tI1 | 9mYv|t zGY#!NZMTvU?qTniL#w7vqHF84WB1m|FFn?doN7A1>*_y6poYg|Yy6tbud3qgn?YIx zW5PNru>ABdf`tXvi0ISfUhK`eiPx>JrPOVgt*`a6EuYC+8v4P2e7~?`k|~Ioq4F{6 zQHmD?1Z5l^Q{TwU2O=nVe2tlt?Y?%Kr|q{4%zB)w1=d~LuD|iQxG0nVkRk%OM|YaE zWlI{r8$RuuHWQSu0pZ|5C~m$D^lE4IHlf3$Z@Id^n|z(Q{#PAQ*IO*!a~NwzYpY1Y z09tU}zR=!^WNPlyNAZ0YyXTtRY{p-ljqf#C?0wlQbHK#3RnuM-z+Kq-A;n>0YN}DL z2j4H{eDcxqWbNe({VM-ofC*E$!P5h};>w*ON_OW-QbE%Y39<>L{aqDqpUpD!a>wnu z{LwZ)BuHhYwQBo_JV`ZsisPfQ5NWtso7yy{PL!2bWiMfs$EA5x?0Z-GH{6058a@5} z@yAy#o777C3@ZNr44g4cDIU2{Y_aq9?ID2<%Qu!biN-bN87T}#t=e*puDO7_W8si^`K|&DTV#)j zmF7yB-|0jPpM2Oz$iMNtJX5U>)d!&Kd;HAIjNlPIV=CV_jzfIvFN91KmC+S_$z0}~ z%%@ZjsF|{~va<5qw+Q|9OI~*qE-Bn;kCS8_9ij0`Pg3`%^BWrYK_K=1pNJPrXzP7K z_MabhNh~j7S86fhd9hK-a~BZPFy~ybs}ORc$Fq3Uu}bQl@;&rz5T>YFIK%)OdtqkB zTkcVj_qCuVvy*M9Kico{CCZSA8EQjS9S^tekL#5z!+x{=-OJs4diDq^G3n{dE#&FK z8CMGk|7G~8dWWK3jeYf6<=wWVW7N4DVG79l{yzB`8Xjh3i{AAjFU1XpEYznhaJON^ z(kpR*rDY>9mhBKBqVL85ga7U%@}dK)50%&g>{l4mDglzY5M9b(__={t2;XHSDk|F4 z)KvQ!9iL_G_EP@8h`yntn=IZ%luRg;ZCSr6c^?!Y(-C>yi 9VL{6+V$(8dWlW56r<0^wu0WhSxX-puA95eXYB z%HOdv>lmCzLjYw42T&rnKay};h}GzB&(2ghnIa{Ggs50T)ct+%Us(9zHw(-NmtQZD zT(Wybq3c2&Bd6D7L369}>&L_zPz#Os0lvEnJYZX92NBvwM;@7+BqSjTgGgEb(7Yfp zVnmQ-T0q_Sq&G;dda2+vFafPwp$VGpPw0gDWKB ^(!kAD&8`@E z@Mq<#ID}ZigcOYW#YwikHYA(>Xcy62G`aVagw~Q`wLARUIc5rmfcMcMLAWq+Bb*Uq zd}RNh(cUp9A^JuFt*3AKr9ZhXx@81Mv7iKduP9i}Po>Jf!EFu`!tUHaq&IMOCj4MB zh_Z}Y(<-oGxxUrN`R{ZCRHA7q9s7WG(=V?4j+IVe?$nTP%}7JR1?(&njV&5HWz>xf zVjy|U7dY(f?8=O#gJYc@S1=&+&`1Qo`e}injbRV^uQ?VM&p`ZqeAWT9#j1NT(*Lzj zeqEhL4~_pLc0QE~vJpGoya;1vci6|ie5@b 41qPQ-|gi?df8J90i-)Sr%DP2JBjOsGuOi61{g8AgJ zChOaqZNQuLr5@CsPh{IfQryKszg0EIYbCYn48;R6qyX?#VWD*l;=h8jzFxCaL#=gq zS_i`H)Vazdy;{VXZRMtr9Nu!Bd{NZG)YlM>mmo`*zPC=O%G)6!D=V0*Z`yaY&*Q$2 z;P8*+!2xTyyk49ygW>D_-}*d2l6?B~sl>V(bg^wTv#5slZq#h^oeJ~dV7QMDeBy!z zC*$wiNrO~qw_!v(Dau#hT(I}biXjt$AQuiUE{EIMj&_3< z&-}+j*nCL4=(_(C*ZFl-w0WUCVI|3c?=!Tmtq)-1lDLd(|K31kGB#PUcdsl+Jma3^ zaB1la0B8v0L!z)(v%T?D;qsfQusz3VBPyJAoj6=KFL7KU88qYm)R3^S4vm1uGh&}6 z=hcUDev(^6Ow6}_WKh!^1rL3|8P<9&RsYpQSIxofSB*Hjou}*MsRr7fM6%Ow`j%s- z+?(u{2K<-Bk#TV^m}n84J@4EIH yYTpDW9E+yII}SlnKiH#|xBNWEs7bm^vVpON2fNl6KY z8r^!VeC N~NlFCg|Ey&U^DcUb;y<7Y*$C3r^3^I|h~nJJKK+ zJWHg%!dN_}1Ce48O3SAhuY16f!o2aq^54hAEG%{a(9T*FPgHcKAmiQ+j1;k1?c6iJ z9OO4O^eDa4We?D4EARLCj;HhFio20I?yA8&xzNd7yC8m~K)%RRM&yt0vzeB=h*(a& zX8&G)e3*CQ=xj#*3r?Tsu)x^S_EFtyMFPFo1va$2YzO>TSMxSNASOg74SpsG>UjSA z`OxHKFatW`RF_F%VIgqyp|c~$ mUYTs?`>h2s%gC$ 33*EsCgRjGAc!Yee!E>wm&8FjsHEk#0*nbRi&T)A;!ODVF1w>|1du> z;ef9eE^B9Jr>>s3M?19`)qCC&1yGg}TN6nD!zHq12o{M%5`Q!%Sx|5G()lxB<7hEF zJUloB)&|+MUwYF9V8=zHC>W;z<&LBk76;}Sa4QTN?-o>c5O}6m`^1O~fWPaVxKbfr zYkQ5jw5HyV09|W1(OREoe2}WY84M15dd2aYMjdI|Ccq!K{F``vXr-2w?e8?F^M9Oe zO wj3JT(2CX-l z?U9`^zImfzbYN#lpxbNeIW6lIEd5J?t{T8KFfcJyE0Sv!t6*Ii+$l`#?86(le#>3F zHDs9>_n^BJxFcd`#fQwB?a5m(#A?3Ta5>{7=#F8;YV{cX9yfLcbFi{v1DEhG2jq&& z7WW`B4$iQ}HEN&J?COka1h+|av<=X^W0~8*=IVgCYymMH$v@qmST2SaIDjjd_d~81 z4e>|!HG{RH(=syl4i=!CR7cDTaSE)s3%%eY+Az!P_$f} -yKB?~0 z^OAPGzz8}kiwX&0+xVLwmvQ?7(H|s9`ZyPnj)8$gF5vGpBB+Apwa|jjq3yE|$3?m} zi1Kh_BH#S&yU{EVes*`0^V&W&J{56-?aWjNvRy!v*^m9NyM=9O=C0@orm1pS=JZph zr>BF1ktz3HjZbi2<5YjkBdNrnGbQ0(c85EN^0JnWU!bxviH&Y{4g#P%Bw=mKcR9~J zz_Bqgm2T&jbUQj6t1Gt>T3~eG3f7kq75ks|hsC>SC&xdNb22D=(`!JX5QfjRRP(0- z)3MOmO!H-iN7pmNB`O=bxade{;CV#Q?QFxdEK~ ~l-PscnX2f6s*V;U^sb69u&!CU&(zsD?h`;J&v5o=7NlQ@bm;y pG}${$uXVRkV^pr zZwLv@+Vty2b+hK4Zthla{af!mh0c390N41}C{qr!+vMg_rK$v*!4491hde t@PhX#+G}GI>bn(O!TarPCmg4 Y+?eaf`8S> zdV1c5;xQ=Oo6uMv_ocS)gF$n26qgr~K;DXUrv;7~P_E&PM-tT3%uG?xBW8GBNzF-f zpk$@x_+@`Nb%pX$9!^Y%{1oD^{(jYy+C);=0qr)YjvC&`h)z10r(dMGz5Bjf>a 5bqyX^jDrTuf&X^~!Vd zDhwXmV`(id(w5+Gw;7m`p57|~fyT;89JP(Mt}nvh1xxe (~I_|Gh- zK;hXrI3`Mt1$G^+QbtEd?*W=(Ipvq~Q 63>^dG{rmSW zsof0~vNkpqz0A@tF|VxGd|?fm(l!CMbIyLpCtA>{3vd6K1qgI8^&A9!_u)gmFu7nn zctQI>r%9EO5N+GL7$s4B&NU1u6(uV#0{y$%8Neej7#fEsuNv8`TbJNb!nduxJt%fl z-D(F`okVPW|2MQ%oZ(=#>HM4=N Hvu2JUvL^|prSM?U{uX @QJi zY$QbECxYz(@B~HN(UZ+^vrA)&QMdnQl?5b;e;<%WB(tru%I&4$^Ks;gE!3Kt#OJX2 z|8rq=fgN|5Ldyp|In48|qJQh=t7Huf3{+L|rHqV>#K@?hlL=2@)P_h|PX>*2SnX^o zTn_d^!82hj|Mqep;kFie`}VD#US>23GV(%#3C_zrj@l5^H*-hNd#$Zi$=uFu tXC&$FRZv04B{HdlC0vTDf z29o6HsIt(0;1GtgjQGf6ae&izx44A^{k lZETp(0S}}d$g;mE0j$}-u@;USH`3 8G z@~D3*`2u_Q?j7*@)0f0ikeBzY%RRKfUnhTA5!Z=GcrG* z?LsXV6X1zr+Li!D03Mmdf+$m+@Q?Hg%F9`s8Pks?(3o}W-^~cb+JL@)8i>E2*bN4v z80`yTNtS>;S5i_Efa6Dmg_)a~;T#S7_9QSrua1OE(Cy!Bk_o1{cP#fA?!i0|Y2>e8 z5^+&cQ9)l}gM--4MgW>7rlV _~zz`n2FZEsO7qf63vkcEPY6}EwBnT-ggZdO-{ z4}n;^T DgMV0;RaX&4QSVcEQMCM zEIwmq!J sjcr&meNT(%d245R ZzBsBRQ6of8p(Bwg#HDi z@XcC^me> +&vUK0_ zNfa9w7kB?|!B}#=E}YsTEQj;6hWe)k2MwzqDi&5*VPQL-GP_gh2=B>5i>QtG`}fa4 z#(E-C9?b8&pHFv_FaO(|Y_ieC4)Esw
a(|RKl(vgLQthm&u6~Au zR0D-Bp=MWA+e~NÚ*qp-ogFAiqCWn*J|*DoIROs1B( M0#pDsv3Ogs&|r7 ~;QdGkN6FiH6xErzn+1G% iXvew1`XyoZ94sQ{D zcn?K=unGmx`ynnaPR@Ov?eWgvZXRCh;NHH3@1>=st*x!y8n$CQKVXyeG~ICjqhat0 z36oU4(Ya!eq+}`(iHFfext`lz%-2qy>)+Zi(J-9Sh~~1Kx~J5SkC&^#i}!KLhVS{Y zJv0 ) zkkfmK65j!00utHTag-|bKywp_8EQf}3gqq1XDH>OAJT;Z8BjR`tr{I29kpV3jwyIw zwzlXr2gV |VFm4;Nx2 {;=wunj%+Uc0x%^6?JH5UAIZ#fJ$DQRf}Ms>aFrQ=^mM3wdhh#ozQ7p^I3 zZu@y({>_mbFZq=4jcbiQ#a5k!>qpV4|3OUpsfEXV9;G58Cf2Mn85+tF2WtN_!`srO z4XMRdCHbMs^pb}Tde(@D2-e>~6#c|I0(~S@th#)=xVrLt2Ktd_2K&JzZ`0e`+w-Io z3f+*aD$K6d{EY(=%9^GABP_jyj7)D&PlpDPIugH 9dvGPhc4#}L zjc_FB{7Lf?Qq!at`lDPWfh?(NhJcqf#CtC#=jR$&QBjfp7K`UftT1`nw{OqxFQ6}8 z?yZzIq(b2bwA|U8##Df_30o*H|DJ)yy*$NuqIwWgb@WuAVzH{Zjt
E3HJsViw*T1b?Un7inA+PdoC3moO*oj6{HXkb2om40Tj58lR^Wl93YwdmleBAC zbu2Epx{V2_{z&$j%TJHwXcsd++T7c7tm}=~gL$2tk78)l+l=GVQ&D+SnWusumXpK0 zM=?n^(gd$|8urr<&(!Oyew%Ua6aAQr44pO4FFxXrnpP+A&^7qBglGFrN&-EmI1Bo9 zlXO(f13+kbg|5rR=tZr<&*%6JTDgr4o=_J3tRs->lv2qJ(DH-rqU7P=_)(cxfmZ i3pqN`-GZnA>9G*Kbn- Y9B-9q($Oa4)?FN2>(o%>j@dO%d^GCJJ3#!<@2TH3aF_``QNLF zV2;N8%l2e0FcA@$+*2L?Ytode!XRbvX{(P8;j9mj$e(}!L2@sxI_C %QHZtxxd ihQzS&p9mNx*P z`|_2E%?DDwLV2MdOFbE$nqzZ9jKL0TGV8m%`z`xg=1a!|Eqe@xWD9GtH`mS33TuHA z%>@w(7NJ&|r>2(bf7PwTpV?zNtdd|_Bqujqzo{?_V6R1s>q`KDkd5s^{74OgbHPPc z8>)eZxMfoJx@t?^v+Rb;qj;48vsuDlK{|cc(Bs@NdGM_=HU&Wv{=hg1U?#$do|;Mj%pvK@0*jt`{*O zR-oM&?Qm;EJ1siasbAOyyZt+{IX;kCtka^wrT1aV1vU8~Pw0HRo&CAR=2zgVcW6Ue z!)0TeeW$iAkeT4eUR97sLoRui@;PN%v!^#n*WsDF`^iV@-VYZ?3z^#3Jl~1dNPN`; zmbK%xX*$2~W`yhXr+vc38&mkmmY6U>4QMj=^|HZnsBxyjV$V`XAmgkrIA%?I$$B!c zTjWLQm7Bbq3vl_i485c1_41#lke--;qWm47a52ZSO#^+XR!1bG9#yF0GR-C0)aP0G z>CQuW{lOaK6@zil6iH%2L0)wzhomGEtN3~k7Z?7a0%|?7XmR@?a}RUuQe~=qe6v3? z^7r@u&*U@InoQV#N3%FOAGpG*qPHUK#CCHz5&lap#g`u?&zXPi`V_%R SZ*M9~oV2;7GB|#|uF03x!J)uH;8ACF?A*{* zY131udlp8XQ}2#H6qE7tlG=*}KZ3I!F`sdn@NDCs$`9h@v2U6aW|&Ugen8+wNT5hO ztF4dUnZJ9YzvWg$*LW>hywfFMTf~bCR}bjOTTS5g{^xD;_5Ar?$uIYPn6hB?0UO{X zTkD^Hz3*kt&E~88p=sciv*wQ4Ka(qI{W~TGBtI?NH~*w}rR1?iJAO%LOLs^buj=lu zPCUo^Sw@1%)#VCzsDb*;U0aJ24&1w+-=6#9*{n&6oZF z)1rrQ;k#D%vU4muZ|8=+(DwS?%DH%%^KE uu zf0XH^$p<9((~KTS)_s>=`09n6{cDHn{Pa{{LO5{V>icDVi+$z?j4rU*ulQEt=XQkU z Gp>M3H7H>{+;+}vOpdatSZyKY_`u}`^Q%Y?w?IqBDK_@V6p8& zCnqLg+w4^9bYMFhqb7YCs<%hxwAro0Ilvj8K7Koi&)XQ@b4{N9063)jGQLS!^@Y}* zJb#U;6C_k3=Wq3mpZ|LH?mdQSXRWMFQs(8eRlUCM<~vDi>MDy}$N9J47WPtAVe`C} zp35Ae^DT6B)SkWPXPT|uwC!5g{@D{F*rHzht@q~J5u+6*rDXYF)8Wd?OTT}sb^%w| zske@4KL^f;Pnwp-mtVu3RbQwjz0A+a2IBPOn`!y)(>{io$vN-3#U=?ny@4r8r9}nk z-CMvd=#Jn9lW1G$pLbHgozU}LyIUrt%*>UzF9L2(7XnXvs1ef@nzSlR1}eQ|l_)!K zk90b)Ikz(F=)v1+i;Fwo9enS9BImF|n;55OsP@+0Lf|nDP)^^3WtqU1qLlch`7e$G z_foTi44YN~YMvVKI3jumJkFpF1#lB<*23)DcdA~mHJi Tf;UAKU_NeLu_#-l~q+0ROYz 5bdP|7NC`?vBc*gV42=lV(xoWK(A^9$NH@~m-3>Ey zy%)Fl^ZcIg`;OyzKmHgFn7!9tYwxw!KG(Tc=xb#;VghOcEG#Ty`Ipbtu&{2ZV_{*l z;A4aTvEqpc1AjesdZFcHY-{IkWoqVxC1+}5>R{w#YQpf|o#BI%lbt9xx1E)djgzyr z6_>HC^<5qjS}ZKQxQ}nOoc` N-kg_-_CJ$wSVp^_wnA~i^l1+z9AhCGFFk^d&!Xe0Og?%0y*-HRx*0rA1kNz zN;1s$cwwo7X+gzCmUee#4O$-KOc{E@fEZc#L`C!C`T46+EFP-fmX&+D2y?(zb}eTu z!R+Xx=odyi51&JyKijlxAKUIn7WHul#AdO~bEFMW35!9+MXfi8mTnQ{P ex0zBr)RK`LP?bHnkswQ`pSvN) T=kw$|=}x^re7|eHPF&W%SszHG+i;<4Gj4BbK{k{z_QDimLpw^E zr+C*A!Z`XKpI0O=%*Td7bn6Kl`h8c@PM*7q;FfdLu_9flhMN6Mac)Tw);hmWTfplm zt!J1IXJ}HC@m-+Cy~m&&74G|NcD0!Vmx<^mrw|*JpY6NEyJ;H1y|=mekS6Q6f7*Pt zv=%g}tX`|!p&{z9a(+4_6GzlvT4H{y&hXA6+;HT<^J?p*rd(d0$e$kq3L~FB)WvHa zC$p|(-Qjz{E9qz5JS2<10@-H0+c0i~O>oYmBRSz~v6f=MUA)NW!>#zkUU7ELA?v zq=^f_$K^oY`|wzNt?X9{UGM8BiM)T>*n%kn@Pm0ji|kfC4fOO7WkzzXCY3);Wa(^D zreY8Iqq@2mK}&Og@CChrNaEB~pIy?7m;1X2R;tGE@-N}9)gN>?R7(tyeloEO G|k3UB!T~%*pu^8LMTZN24OA(OJ}b-|tfqN&0cf SlN3Tr3 z+oo*MUVa_4tm!VJo02v4 Ep|^WU7P#!!hT}nl%cn)%XwQ%XiRfv)Ti3v&Usokq9vl1Q?hUi-}pDU zV;_zjeTUaK4XvWqcv?Tc%V_;9!y^{hyhhuSj!&%pdymxGkh$Ennx&GgtB 5x@3nAz!o!j^BjQe{jFU^JXPO8gSh*a3zd|XRgsSSuBOg1flRUKYTe?U-x*L zx$RV=kzVbnNkWVY{*p#HZLU9AkCp7r4=<|i{qWYyN?>1!U+{a)#;Y7`jrLO;C+pn~ zZGIvP|Iu$~QR*Top|@kS1>e(HsGYM^$-dMLT2G+V)+rQT3QbynZ?HKYex%hK6a3J* zTu)A@|7Z4}9G{u5?+*lWf1chS>ewTw$8-+qiWT$V3N_kJYLv7Jl{h;cED#dzi9&nN z3(WMs+0H6ce{h%3YEW~w8_Awz +m|gS(UDJA>|jFKV2Gw37Ou~kEY4jdmWL# zz3*x3d7Tney?h>Fll$6Qt?qOyWLH4MuhGXk7il?wUddgD9EucO+Fmd#Qy5Y7HP`W6 z^7am?^HTjR xg>jlQ%Ce2cpl9)k+@pLb-=?BWsQn~+> zC;g~H%xP}_h-EL*EoSbfiF0_Sz%xs0 o8m-%Unh2Q<@HL~M3h&|aspIX|g|5W7+O9_`zqvUAYJ~B!0oCb%FaiPZ Nkpep&JPbHLXrdzdua=e6T@B z#K!RA;}Fir@AyxiFl72a`t(RGuF*-Wt8^PRXXK=Z_{Ool-FMd8h* B03k?h3lFI-3(F9xSPTmc)+?_3)|Mes25ul?Flpi!FOni tKV85Y2-{&r>b;7$Xz3uLiMfcJWC;u+#3>-Wr!yYEZBgwK8otbBn8 zog3}=XV%0&)}KU^&~Q6r!=hoIqsw!<-A$2tDr0&=VO}ssY|!ptQ=lkgM)+!_a4tap zCo9zqW}%lGCR{;yV;$PUPjp4vCWtt^JI=1*p*BcUS-68x_{RPabC(SF`k1>hb11tl zl&$Az>!+{jZ$Zu14~c#u&`%E{6M3%H(>eu4<>sqrXehWfJRG8vCukZA7a%I1V6B1I z8;Pt2!hCKz%V)4c8ltxbVXXv46MzoA&DCMf?0|4de{5J>uf)Tr#IBjZr;+ATKnVKd z(oj{!j(_8bNv46Tpc@Hk2R_|z0l(?{m@b6y{F=K4cuFs6Q=)WXgz11>K1ndTsLn ck-L8SZsvI1(pjj7Wp3`%-+h98qM^3}CVmPDzObq&De*DRK|A<7@_pQk z Q!v b1TYOK5m1A3K9n&Rv4zmm_#c zd3`Lhw=qYQ*t;IuCwoO6$i>STzSi_GnY7{?%eEfJCzmOZM|0M^|M((4P((F>Gkx$J zJcqh^>~;h#mNzE7sUspIHJRRL (m8{E>1Xy})1F&RT#Sl2rx4>a$ruFY;~t=`D;7KT@W;Q;B~A11VPQxsoFTv%BX zu@PD|89(k)Q?%)z-+4x|>#bbhEBwz9!~tWH1N~&EsGUsMXat>_4TYS~$BUTL~-6 zznE~{vQ4qv=1(8%_4j+$U4KD`s6CNoAy~ur@RFILoO%`mVSI2Vd2MyiIcXZIZGt;* zR%g8NPXjAcyl~zeP1^LrdcoycOIygQk{z_4n6xG8+eQ+s%I8#O?2uvcy`L!8{TS;E z^Z@EyhpfK;<#p)cSp>e23Q8Pmw?`_IDWA+7gjpUr?g>sG2ty|kC(*-;wvmF ck)*gdn~8DhBTsqKZFSxc zSFTr)9rTt)80gjckZ#`oqTZgP?3NNG`jPCIcd`)$0X|?2?q!i4LyV|#QMNu9G|AM; zW_70*lGUB>c-fQj9vJ7+KL27msdYLL4nYsgq@@m$J-Cg$bx;(DVeIm?0gAjcG1(#W z>odleOo%sO%i*9Kuh!U(Mm`n8zrOo37z1eDfgh!u@`)`|Z~5DB!0FEQa&UA=0Ae!@ zM?xz4JtrpxYdXo{S^Mw9EC7FNUr@tRw zFZmgbu(mm>zp!u@0~o*QBT9xpzF3ku0;L)aY{8H-{pCKV$T-&1INlf`S3Ef|nhRb= zvJrWpZBx-|?c9Z^1g} ate-+)gonSWsWaI}t2Ng!{qD9g{2EavOg*-j7}B|>68&Sc=oUrTD* zYgxdj@0ovq;JWmW?xsHATf81Rs?uobu}yq!dE90HtN;6x{{MRLUoXSDX)^qkt#D9% z%Nc$Q+s~o_GwI<$Jqxm1KnyYd`xCY~V0JS&@#7g1VRF-7OJW`Buf_epe{`K0OhL!% zt+`POf()NVvb=!1x2On@AyWC2|NF ldd$fwVe(cpX#9Iqwp{p6 z=?lyf8u7_D2Cn^N0M@GgT1{O6L{wUYuizHB;HzONC9lqT|60uTXfWpH<1njNyanIK zip(GIc!Fa{2}Ru75w&k#Km|IWcj~m|e~M=Ogr!mO;Cf6k{P*=7Uv*C0YZ?C^)rhXw z)EaqztwR%>0^H;S4D|W4|9^{v`!wqRKP?CvLX8oVk|mX(C~ZU8Xk79pz1VtzZ#K@> zJ!VKnnDN$VjX@J4SbiM0lD~)HbI1%_5c28>GG5lS^TCccNdQaRh=w tYbSbt>oSrSGQ zm#Iy$E@K=gyaT{m4kf$w>1&gRddf}HOK3jTXXx32^IHEG3CGG}!ub`bF~#=XQQ&~; z1G9mz){T743X#{@KvR0Z-u!FC!m5xVWfb5?%neYL-Q!C2H2jEF^Y}d-TPB=Yt^|`8 zDbyZ*e0rhR^a+LfG#~yhidE=E{!N^>70Ya+FovyfDoyU*O!}85eOu5Nnui(zyl`#p zxNX=Q4WpjpHyC6y;$yds17oYjYgu)Luo(23Q|)qIhM4_6V*TJ)XU?CfhWNbz+YdPN zi$RRz^uzvN<5Z{)*bI&%yVv_pv)1I-is}lVT0pltY3udk+0DlrLoeLbVoAAcDg9KP z^C7_*qyvcLqy=1I3(|rN8o}466t@R6muEhY6hbjxds$`&pgGo;v;zAg^1jotDl9gp z)iRni8WybBlVNbU7*;p&ITFhC5Fm1Vq@ezW 4Rq*Q*`vkASUOD>LdY17NweI=4AU6~dUjX}m|c)L6Ug=7Nx*GjLR zW{A}gCYtf>5S+2sA2kRdsU5=Z{x}3K)?A?%CVs+DPnX%Ueu|cs>6!}_XfOA(ChUA_ z8{AjW;{mRNZaLy(1D63
{b$>q!w}gwqImx(0 zxPt4jK5YmN?-AA)Wj6ZqO~BUMNJ$+T5XBa@u;u*)eIxf~e>LIrInTXN&alt5vL`^t z-HN;|RV}yOnwFmmq-1+g3(y_1o&nCOHvE8f&jK*h2pgSZGp=5#O WLYR6hF;%_I7BK}FI26_q% l+S=q?ap!1DPNHjVn||4@9+rVsV^#moTHA&lnxHQ%-0m7w#$M7 z0+2 X8T<}R)Y*)C=c-5JSxo-{3@`w zwQUPySyuLD*TEbePAP{l0y{ocAv=V8=u4Q5jpwUZWk&dC`(A*zNOgmyrrgJmk*@^s z9X1UrJWdV@3%~jMldO}+eLZOsl%5>`R3sn!J$z wpBK`HcYo2)_mui5Iij zx4b=HqkDzI78j}2-l#Ycf4Txz`?>uRXrKho08=o?>ag@|B1Cq93~BMpb*?-27t>rn zTU$pqEqEU+=FS~iKKL7Bz|fJib_D}4t|geprb@vtDKxNXgBVZ-9$M&e&l+IzGy}MF zoA-O;dQ0KoxD=#*!R`Kk4@|F@0Wc=|fxt$hAGkbUy0`FzPR6evh@tz8N(dYp8rrq- zq4-?#%c>pEFXrvrC@P7mD%-IS)teT|dCVz^0oM=Q=R??9Us`2lB^@1|2~z&a s;(yt $h*oX)nGU zzy{l1s02z#nHAhyAA%m@3z?G$@jn;55kd-~kW{nXyFU-}k*vAlSgbx0@8=F&U0vP0 zdGq8@WgS?}N->}8-=?SCqxJi`-_1R3nqc3q-22dtU|ppdXv8o!9KITf=Uf)-X@0G) zLsW_0+uS@nJr#_bGkXN!mET+wOUtn1@v|!C<>jsB>zh}5(^=m%+u*sgy&c#;JUffo z$f?Rv+(+HOHT((Zyp6;N2?^EJ)Z9IsQe1}eaGTAdmM=_3lYbSh6;}IS?TYboXAXYQ z)zc$}4%s#ygnoV`WK6;WpKK}KggHA`WMwhNv7B>rtS1csnGI5!p1K7~P9_1)SV)W< zWW}r>x4)CcZ+qJc-E4sHJUP>ho+`mbt6RG#9wW-j-x?&aYZe9`Ai~1Je7JeO0Vgvj z!`9h*ALq^M%cOnKU+a$53M=D#2!D-O;Njsd#NG;|YaaS}%EdL+sq`-35FU?nit6v~ zzIn0W8i0IjX}Q(Z tUj7N=aIDw$k|Mb#CO3E)Jq dYUy8;qWV zsjQxqS5! ?#d(G9oT;JV9_aIzFwV16eM2Ac9tlQ77$0I8~7XqlDb^EREA&? zsaO0qoC1=Qseg?X7IGO0@bC=01VWsVn$-q()o7&!*%C5*sE;fV&-C=t^nI{AFgz4@ z;-Q#o`w8BV`|KL2lgUzAxfTj7l|X1{s46aHcHq^>mjlSTAsWxNwL!}4{wohr==NN( zUk}YaYHD}_1poH!iAw8~V$^TSY1WK5 GXck}QdAtj|@p`oT06%!-oGaeKfaF3sPrvo2H6gle}mP5@+&i0W@#8)Cd z5c^Hl_t?d@5)R9sitDYY&c=;VEq!TX#8pOw*DlDj4XOrE4DY_mpb>SIZ@b5v$I%F+ z1HlF}OlJ4iRP#o7Vk|5~?S20AeyM{kTXYT#+$lkt;{SDDgk2?~p&`vGk!ZJOw<^Cn zsOQP2IC7uyjA*G<)*mG$cO_>V8zqfK#uDn#r^8i-cP{fL4~sW}wl6ee`R`=RSUaUg znm-B-N0g_nuRIA)rp8Dj3}DPhZFcATMy#x?Xp0YQuDt>|+EhUpc%``FC8^$PS65f` z#N#*BvsagMM~~5bN>W)1^lrY8auw^@!j_hnuk4zenoCO;e4p}V+||3WV=>6V&gNz# zLqlJyL~#RK)Mf5|P6x*ohjy!;^L?kK&iZH*Q_~mEpRa2U57#*M3w$sm>&nxnNIZse zadFX;$g4%ECVi{lcy{mJxe?Hz7yYJne-&cbPGWQE6fr>tW6i9GoBBxr3&pm!wgyi( z1HZ<~C6X|eh(}u)#%IaZgmJHKZ+D=6XqA~MxwusN+?UlJ&bD9b%j?17*R0SjUW3`& zm*nN;1!{ha lJim@D}rc?ubKkI$$|gs1)tQ z`-E8u?{Fny8bCwFhNM?nakh1=t*!Hj%}|m)sb`3o16J05CL{vh-rg=QF6!#)CIPqc zhyAt-tJceY^+-AKLt_yeuItWDPInBlKG?3Ih1T!z+^$gPWDLJRnD^6@l9Hw=FB+fB z+;E*TnTmRs?aOtELupr7XyQZA6b*?0f*JFhrDlO?-GDC-0w>||ciT{;goIN(n5yyY z)}aCg5NbvCl*$-DT-)hTnodj;Pg^=51imlRohho^`J#=9Eb_EvwGIsmG?4bW+1bHX zJV~fp6nM|6J+&m71z?gen7$58QU>+J#KfW}J9lHE4kEqdDQ=oNCpX81fv)cM?k<=6 zT85YiT}Sf!()A<;{ 2SUm_&z2tq^ugmP%}`?>_(@1eLP%4#1{)4c4=6 q%YuY2nD9E7HusDx%hOPW}%jEx-?`BmnTq$wUM-?m?Cjg%t80iH)+zI BLhASswwpM#XmV0zx^*(b18w zo^gcMZPk5t*^w;iXUyVzeIFQ%*H-lY{reFS5hn3V`mi*e>L|rh9BXx@n^x!Cib^w6 zQwoAFyS|Oe3|nQ>*$9k1#?4*dT(qf=_FSXm<-UD!apB|R15TAZ_q|$Y &C8eW2j75V1 zU!D} zkd}ZI-eUG!%G7u zOX#)OA1BH2UBBnl!UxYDPO`Dh+n(H=NnvH4ot@26&Nnkg_NFPYO!&j$*|%^}+?<@w zE-vx=guoKdFS`1s4gYiAk1Uii@ux1kla@84P^P1M-$yJ$Z84knu4}u-=QQ`k->M5R z^UT8>97=17P*jK7+m;ZPq&KCHzYW`SH?*SBd#Tz=g7PmdE%Uy7Q9AoThCaWrubPql z?=?f{Ki+Wi;{3h&eMGa?KqSBHxhv9bdb;|kf32v%Z{G)TzU6(pILWB{2g#^;*x# zYslfxs0JR~grOj{Cw0!0BKNPdX?k;M2Z!^bIa%2l_fGJKYD=`c*11RJhO&zK@XZ}e zLR?&Rb4h>cG>zMy?UWB=8Sgi>gSmz)lq0V#NlZ)(_$YU5NSD^gEEa|(CGVh z;Td&$O`IL#M>HJWmDVU@al?6QDi2T3c9D@siZ^Blo~=@WtV=cl91V5b&nzn|6JbFm zMO}0rt^Mv{ETg#P;-P8Ki#|h`%zFL#^Jjc=GU9~T(ulw=?BsdR4Q6$v`){u@l9H$> zC}hnzrCXW -3<^Cc{LRL}p H}L)rz`Lx zclCOAcaMuxVV1{e5G-Y@=0|2e PtuBma)_f+LX z9_n@5?l=1NBqv>Z?0#miwnZ=>Q8bN=RFs#;^-womlF#$M6|e@0UscuUgnT|_jdFFx zvLubdQeC{~c`Nkpfu8$P%2^LndX!XD`h{5m9Lydto{pUw49_O^Ktn7a5hyqueNK@$ z6z|BNINxB!(CZBTNr|6dAIt)8=cN7KUd@GBWe!%(H~7Z@eE@uH%dDpac`e^j*lMG+ z){RX@#ed`+A$|D7r+e5O939cD$;$hMb^lqy)!v?JOP@b1TK%gt2rbfXrkMo%p@sHA zE`T#AukF*(0v*s7pPQ+yeG3ux^yKZlb8XP;O~if$^y{k^f?5>4#jDb5giBqE9k}vT z)QhV<3#{XisxxbSjY3_K1@F;*amF?JE+>;B3xaQd07kh8VPWA8hc!s^R!I?Hj)ryQ z|L_7N&f1|4&dw&Y??3QU8=Gl)?g)g NY6=9s-h>j#X%=X|Fk3NHI!I=pF5;PU zV#v)!6+>mxufmn>w#T3D!|cAN5YNFfU;{jL9r`2W(z!sEq`w9Qh$PL%`#OpkAw}$+ z^fw}^6ZE^#hlEL0JOf9NwLSw01Fz-=v|y46{zP7~G}{SOSlF#Sg3d&PWtXttc4PEs zFjawaUDoIy1C^`=v;I|j@3(zMh-VHChoX#)X6HLq(_!2(^1)FJ@W+8_z|71HX`*e! zmHhiyYe(0nnc$?rfZHiggs9Bg*3RvDkzdxGe&0tC!%A<;6r`ro^0L35;N5*ns7E9~ zcx~yxIzl$9q@+Yd63*{XT<0V7l&)iXpeBlc+yuK-rB6wIAq34oty~1M3_ClK^b)TG zKiN62AYwYW4mAYQz}a?dh? -y7yS2lj7cIrG zjgK+}6CXZ&@KvcRDvGqaQ{uqvdbMK`^KiMqLiF1pU~l%V5^E-4hMhp;m?-_!O#->` zOj7>h7K&ByLC9wUOiG!$I;+M8)hQwQ{rk-@p(MI51FtbRn6@9;st@1(g4vs_ux#;E z?R`}PM=1khRqD3G=A(4Fu8qSN0h7(6jiZj+{UXTI@HaXtff |MI5y_F{DJ=xOCe41ppwnj^=)ll9RED zK08@S2+Bi)W#W@tczEXK=CKol ^X{-_;IAW4ENi&}g&?^27FQFTg3$mVTB=;+~hR{NZ@6zu&fH@4HrTp&yqWePBpQ z({C Eub6Cvd; z0)%LJ3A%JfRlzp`Wv_j*J>yeXOk7@9e lKCU#eAo)&B92K3JNv&?w{j%A;KI zkF~u{4FIKx!SiVnagqdGhc4J7LyjmFpS-4_>YAFbadA--Pd`|%z^t=`a!9E1lC^&w zfjDq#e7wB8Jc_vV@F+gR2%q7c^rqk3(U(h;z-EMzt}ESH2-L1>rfm*j6?^iPKyou8 zf~3@l2p9JpYBa{h+fTr&AyDyp4Q6S{PHswSYM$hjy1Vfyr@vf`421xpKn1gGZ@}#U zpsY{S2=i6*@C=3CQ1Ob1dE*OauIcINCN8>t;<2$Cenj^ejMd)|I%9+c1^t1W@$R!b zChOGewWnv6{l#K8PqAfvF4lIcE(pyib(_F60y aS?z|l%p1%OUoA0+?^GGZkRCT2$oimK z*#0&D#fzY21B`sik?yvD>#O^=eRWT^+r(PkAEg#zs+QFELXTu+CuRC$VZlG*5)zPW z;uBO9d-bugS!_R~+Ths~n<#E}b`VrDmSx`%El79CeS23tttXN3eG!`V!u;hcSy@>( zH{qnTPk4}JTDndq_71I)KhkNy)!Ckb&GeY+7ddT!lWg^L?z{;7;PB6z>3(ReyhcPIvzi!-h@Dv}Rl^Zz}VVJN0bF>wS?N)ZeS3W|Qmc)rcIo95c_-^zrL&^g%K zKP=1k!;qa{T b&qaZ!|5*2e^87?|H(sxXv~yWC>wWa!s*nBo(=_ u>54lsdk69|?WA1N-3w`!ra{OX zRs~@Vtn!EbRtmmhE4Cn((hvOj@uRx>vE<-*dq~|932*1WZjRu&Ks+5Dq=|fr5n8*y zi|&2b5t#0M5>=~GVGc3cm{cfSn@RUcI# cA)_#TDvhYd+Qm6?vJnA#^1 zg>@@F-jds-Fv-SfK-mfwW-%p}aR}Z00oV&o539Q1^CD$rF4MX#-l2<%ib5i*>grO! zmhi*}n6RGkM}IFCm|RXxPPVZ5{ zI4%t`BD0|SIdG`PjYvMBS+uRC3?`MRK=E}SV~`}KNJj1!3(%pf$hT*X|5!@v%K{*> zyort7kw5q&+hHw3h2`D9j=d(!^79EhJ7XD(VK`tvHX|@F%EdNW?l`s!u_op$P=3i- z=|~wb(_cd!v9`76^;~Pm(n21#ZEED+E=PC)5n6<`%$Z5WVsf6nS(y|zdM68jq+^x! zl&skovn>rD(KqrceOmuUZP-fJ*E(046C6**r){wFDnZjFpS6{N3 23-jE|WPqfc8@tx*;Ux@Ld&&i6?sq37fN}Da?v7w= zH|&9q)Eqn_G0=^doP6KFBHMz3Y$^J0RF{#K&fXu1v*#HCS|C=L3F!yhDU%q#fwCgO za`HA*u;zAVMh1G8viOeo$=rN}{n#AmvQZOv{e2E|#FdB>nFrkRWU!o3Wn7U92>bkb zdS*tcrczD2>q=!om!*y2??c|+-mY+kf-s_0($GW?bS|&pZ96r2DpllvdJT?aG0e&7 zvtLvi2?!sW>*eljsnh`S4-pH437}V-jz60jV8Yn9ibdXE-G{QUusnVo+M^u2X)y~+ zW-(8{_4fe<;yHDsWn?<@Z$H?8c8LGjrP z_~EE#Kwg>p<-hO%VfRJ5<*{%3+1!5ij5Tn1D?Z3r%szo@8~czFP_x>LKHVp56>HUV z9h?2BoMPZ5=LK+E5jBKLKqof(?|z mG)d`yZ%a MK?P+0@Nlxq7Lt_qWF6-2 zE<%J6peCN+aWAZoK@dj0_!pQL7Z-DE(DMgiSXo%w+S+0!9^0c&rjrFsVs8ICBDYsr zj6!1<>V!#4OZ(~Z 4p5 2Cfy7Td%98`7un>^rZ}YqIIe2^kqGW;uZZSEQb5 zVq$d`8#WW37p69y_jo&R{mrDHw58eNO2krN7zj|d3VPcQfM|2fK|Ukruup7yEhAQ* zCG&4G1Ty768wdwzmzS5La$}v!<0@%s%0}Mbx^?TN8#B)NGTCm!SqBr@!0VB6ur&rm z)G;czm^eXRW}gOZR6ycO?8q^0=j =A9YTwSW`uK}H$r8SZ=p4{BrhYuf`jPm eW3In9y~0bTFjIjYscS&O;$2 z!wUuqBzT8MM-mbeAt521xWm5R&vW<_SU8CP=GjHV8`IO%OsGe`Z=1f2%+Bh=P_7OR z)F)G)f7WnCEAy%BV9SbPGa_$52#N3vkC}G(Utvp0O)CjSgIoPK=k`0<8dGpystxqj z^haUO1HaZDZ$42Q6HR}Zh#2+pC_k!E?OVgo>-4EgbQXU7?%hXo^ReM!8No!wx8!Fz z&}%_C@C`o~fD|IRJwMO0IjGK+DF>Eeh$aIJ{egX&h{<94np-@N5Xf-rlA=}*UA3r2 zLxn$Op^{_y&c5iD U>5;mcxUII7Wl8< zzBTc@=S_*_a%0gzEr%w;L6Qa)c~tH7GE4ciL4 V*2&o!t5A@E z -tezz)wQNh*1*J`&gD3kV1Z7$%4W zm%hPj8}Z*6AoN9Ya3B#N=#l2e(hl8mjD=zWM{1JyG{UMd1g= gF-b@zv&z^g>uB6z93yUgsH9`OXZ+_?So zf<}_B=jHF_06aQc+8$Aj&D~YB(A0iQ_`e!WcZB;se*D;E)ZfX~mCXG7H|A#XmxbX9 z=h_9WGlfre-V7hBpFHFdpC~rEne;Vo!3ZStZLVCv4Z0>(d6r-wKjwnbdw!l_!tik` z i>dDb{liCg5OJ_0yZHI5d0( zDy5VZv}-^_LQ<(nxpCMnax|@DqR*CZF=5mOvso?`BsRZs@?ZmDw*SYj$?L7UI!JO? zR8_?io6RR%3d?8oe|Wf_Z{cp#2}DFsO iUVOO@L)0?&EtL-GnwJ_q3gni1cQ{Y# zb$s_M1BjBp{8j^B@s|L5M8tMxrl(tlmbD(-M&ms>3u cawk@S{0w`PBg$N zif=1|jK%>!zZ>h= FJu5CsLjU
OSK+!~!^dru=ew-i}ZNxC0_SvX^Kc zdcmz930d#m0rn?Pwzs#FQ+f|Oc$WP7@Xoo Y$vXehEwbt h8r3Q@6H>TY{OJ=YX9ogIRK&xMg6|5*SK|rCjB%#Hk-VU|SM^`X}*S z Z=sEdA-UekY#?N9T%w6?Y7o-oAa zSb`ZDeFGC6c z=hvv=z$oH&ZsbF8r_!(%-W!OG#sg~&8U@;>yJUW=rvOMi7c+uYOhy{E`3dujcTMB| zCvZW$u470WFkmfsc81-%30C@}s;Y#TRYdO`U2dT`GOe2bwm0@4%&9(haB||0O~p1l zfwHrA4-dbI-xHul;z9Pye9MBc;o1)5ThKfA?!6xs!|q*!IXaf5rRjm7b>bPZfluc( zQ~QI~^le2s+XOH=s^RH*brX*yiuj%p3*aoOXJ==ps7N&NjBL)kz2W@Pe-8!kV8nGj zna|t2O%X##iK?ru?Z8destotse#$E^@;TSywrVw?UEl&{a%Q!3O|;jAjsO%64i3oD z5q {3s9@cnb oj5EU&6BtiQJ~pt-ylZJU-1lN73)C$!N*8i%p{(M zw*6bh*E7VAz@Fi7|2&T_tu#;-B(@>B;U(j-;u%y@a&~SG)+GU>+Spq|SN%~88_L{< zr&EuvLxp(X@X)#`rLqh>2S{m!4Q*}b#>Za@^0XwGJG^^m5@SYgF!HA96&gZMPlAun zb1>DMeLgocv$MEZ>bRy{>PN>_AElto63d@;4o}C{*aSfsgEiRX@P>s@=r{1`)2I1) zL*w0}ocO$=)$iXsn0mEj)Kw_9PBLhcIHu$1&*RYC92_9(45Yg=(L^pZ+kt} FIhgedB7*#@@HTXuw-w#aBT3QkrPyG zB}eslb@8HWk>~sxw(qvw%v9v=PcR6mNc={l_>z85<-si&r2zNC!^70n)J$__!SHSq zbWuUU*X725+Y@)ZR2H& {lwM@n<&!?d^0y2XcnMFmUm`(XK{KPn*CA3X`#~?dg zIY$q%SR0deY7+3n>y+xOPYgVk{9-ukEj09nw|4``H>#@Mo#4R*JBn=QB;RoHEBna= zNgn8HCZ2fS2%~i5Mks>Di{^QF4FJPn717Dgjz{e+Bbw5NzpJ~Ok*23JDq9GIDxVw7 zykyUc5DqHhQs4xOJP+CdSd8=5sJo{p%~1!IF>1`B!q3l-W%h%(z^N&>(rLrH9KJDH ziN3z+?TKrpYT)hIXx70G{9ujUa63?Fje6-i;gb*-@9}81<+$`r;cKDa*b@9`=4Zcu zuz)!r1x+8-9RVBsBe9Ri^>lSvQa`&&0}I|@%m5j!PTUv89s;gN;%njca5)?_gw9C1 z@4$92V*reEl+Uu`q!o!=N7TXZ!Nz*6ARte(NMF)jTtcEV4&S&kiP~~BA8eTJda1O+ zRqd-d)Z<{PUcm&8+g}?m#zjLgqXpC9RN!oKjgc5%%o_qU#7F7|6i3Sdl9WRc1dh!F z;-rBP1CT6&cJ3*5gtox7?+w6SeFKn1g{$bI+=oYhz8AyeZyjf-{Xp+uc~D!Bw#B|1 z{_t@D&CSmE|M+q%;>Qb-G>L&RFc$b~_g)!jy hpc} 7=UQ;g? zs#@v_*q17ggo*G_%gZJy(b3TQn?yINV=+bg4IUtQFDXecnIT{~dVG4iJ5|-cU(v#A zH8(s=Mn!cy<#t`9uP@fO&IdgQ3zi|5#xvX^wa{>@#3!WUO*Pg3Q+hqviv-f#T0srI zuYM8`6R#*=?yap+-oO8It}!z+6AthCM=-*ENfvEZOkn%nAngvH_jwQvBF4^Qz8$g_ z&&3@3UrzDdPFPToB4W0fz|*h6^NjkksJ*X` 6;H@G_KZU^vlX&Md2F)hF%q(qJ&u*V9pO06{rx!A^ZNbs^WQo5xj%bc*ZX?E zFNrP?M&NzU-;Mb!fCkvZae1nAOr6uN^#A9<77e1(+@oRif-*}yhdLc|7YK>{*BqVj zTKSio+VF_Upd0^OwQRGz|6pFUF7&_tJt%7q$w)!@xu>coZcAJPgkawP=JS#8&fKVO z&b^x%*~}aKtP%WYz=oZff6vh0lL5ReU&tQehRDh1ePt(}e0t&qJ@NYT{%n60wnAWe zV)|GTys-Kv-&7`_nOrKrr}L!i1ir!aK9~ONzyXJovm(?czb+(o51bZb@-sZ@9a&|u zhlqyMo*}X`84>a+DGhYnd65)Ye|2+N(*4~+he0t^Uk9gqPY_l#prA8Z5rVm^rw1Sf z+pDYGtkxgU3YI=Yw n|Vx;GmVC#TCVPW;8D+;lxKB9@~n*6Kh z3JfXHFcYwE!IrNocMeUJO*HLmSHqZHbqP3AFG u-tKF7mV z&39i-4b1r3`Z^Em*mBjRw5h3tssK*bq$Ym-`r`IBCp)`_WNE+ep_7AyW!&$UTvYn_ z=;p0k PKZ^#)slZP5Ni}QKmW|f$7k;0v+%hf#+vOWo_N<+XN{=7Oh!g_ z`}S?LRmj7;`nFzLCl4iLXkm@*zQ=s;bAFG*UHttP_!vbD6+=wzudr$6H=P@I&OGrJ zlD`!v5ThY+a{n^CaW1K!M2HeoFF6nh1g`g}slcC#5(6-pmw;|}#sldjcg2G9)2-rd z9M!_!LiAL5f83vzb}PHOR{Xj6xrDA@tKTi%0&&x_@&yjRB=zsO=`-a(qtOiw4S=oQ zN&Mu>#NNWE7?Q4y8c%O$52VJQkr!jFtgHmImorjQ;L8fO?kDSx_YieKc1$U{1vN$v z+<)5@zd3p4kGs06JE5t%23La@ C`vHCmiHwRZ;&CShQT3XuL+ALGl z7x^J89}KVNiU7ZJ;!~x+)m{V0>DJcP`}glH1JzOPBd9~k`0=u?&e`XEynn0A0K^u+ zV$##oi=z^biEq=w|1=omMUI;)ofdH6uV!4admR483(C70c$EV;?SlThaBc1LZ>|OD zKHkBO4#)oa{m?6Mov|o(nNH%myprWp`IkvOI;3ZdJmb >YRH=D<~Yg~ZG(Ji|0Z|Z ~{DCxe?d`x%9`X{+|8v z0L@$qGO{O)-Z$i~1+A7 x_tvjh&mD8$4rncB*(vA0{GV{#17@Sg(MJk}@JRl#6wdhdTi1 z0{)K6FKZag!`;2FtBae}^4So-A2}Wxw?MCT1rU+|^D>H4UQ@EOr7sP`pzv1in=1pZ zgN1Rasg#i78D%AqS$lX>u-ApJT!8iyUiDECSv>LCnb 6p$zq?8FH>s0Ho< zYu?inmHU!Z$A5G*-fIHrHUqKO)PX+_u$8Up`Yz%;<_%k;b#X#(d=P7CWtc5x%w)q2 z`sBuVIf*+y2)6(#S`HD$qLABPoJcx?;4%rWE?FlhC!mG+k#tP^GAQMuL!@7NPZSrR zDE9sgz52U9{b$~f79Ss9ELGei7je NyC-Lga zwtaYM#>_}fq8-!RcQxj}KROQxbAT8)F~Of+?DCEGWZGLC`KBjoClMhI+H -bxosd3){t*?=>u`v##aB2O*FpJx;AG3y5M+%?N)6o%7Sf-4dJtKF- zT`L3uf%2~SRX8Y)ivMrH@ya38 AHCKPtRg=iA%2n{ u( zLD{9-x6^^unOEQ-pR{e0q^iCsTKh#@kq6iBg3P?UGg|-l%pjss=85}9zXsoFo5T~K z*m-}AivIfVEAJvX1qF!x0Gq2bxXUF+TDs+=Klptrn;$vXH7!L;L0nNnmq2I}V0E2~ z@6j^4{{WQkhjDKDZLoA^2F*)peR1b#Q79Jcca))_s>;pEAEqhAw(jTD+am3|)JZ!7 z)!hn=Tp`3+0mf`H?mc~d#enE(m&E%dR*TX8IK!_pE8q}0Zz_|{_Pg;Gz>e?h>jTaM zu&D+pU0I6V-9S>93(QOZ{w~IC#kFo{X9pP302%yjpKo2+0Li$=c;(|Zj1kZ8tB0AH z8B9W|3$<0%`;Hu-)&^$C$H#hl6B830H=SRD!2@
(A__lNPbLyzVf8(OG7_%(b-Xchz`Yx4{mU9kAvI1GdRpzx~?|w zIS|UsznSttrj0yceWZJ%#u9nN=Ti3Jr~aN8(4I%Z{SRXh2sjXfjf>NIENd~4kv6Ei63+8>Vmui65t*}?d~$Ou>n#>_HAwT0`^c> z*@7}biUc@13 G`fWD(n?K4OqHWjK_n3D;80T?r-}j`rn0cB3U7vdG;+nG_ zk@;9xE+4`Q*1NGQ(%pNhVrGz%sIu=dpK+rSNb9pZ`};jyT_5K?Myso+gaA6akx@#E z-V_O^V@pe}CO$EdlT^C&h0ge-&fcV!cW+a_bw=R|G_!jGnUF0gKwDGky>s^6A18=_ zw!Z9+ipt6H@v0ShL1E!JC~Q?Z>kVEoNl_2yO` FWZ-2rWgp%-8Us()diH!(3Wv9YmfePM3SeT2|N zoi=rFEcD%S89-VAxdPy;0w_#NQqo!9q)UtBJiW4==(R_>2hv!^gP%tgn6(*9Q5e1) zMBnJ&G<~y?d2q97K0|t30g6@CHZrocveMVnBkpFEaySP~-#I+AvfN2m_VjTvs&ceS zZOPbymgSFo+8K4E*h@jzqaeo>VxRV+_(+9!Jg)e!$FgV2DrK%TxYg I1uVYL%uu)aFfFt8QT#i!3dBgS0t3y3@%Ez8=VD960n<+l zMZjfd%7yX4{8*f=;L_D)T}3D_=! Jo$-q*K2Cw#uCA+3=$*ZtP{Q P%Z4?lx=xuBC3OkZw78-zCez(4!46J*ZNV99sWZEyu@&3I%;Wc@1^O}{jRodM_ zD(D ~rHaxn0*u0|lFWEqVjNR4DA1^Y*}xf6)Q9DeBFt!>ps7^IZ lmcq>GO4sK5NhQfYXAZ^!8!c(cM15g W8N}cv_c+ z+>Z(r#s>BmJa)G+wyi$MiMVjHG38gji?g>R(Z6g42k@@Ae1HFY@(5xl`XR+yXs~!0 z77Z7XI+h=IDgn@e?O4Ul`7+?Pw<{S+_bkh68?zXfIw`7@KlBjmnn#=$)p#?NoDgxL zMKG~&>wxlvlQDN~n^UhK#K !1Rc`lWv$?sneBa6U`6+tj6F=3R zN8j^A2nkuU%1d8*$!&;bE|kLI+to-t5o1FmlNpkNj~~}yO?h-xJv|%#q2VuV?AYw= zhwWyj@Krf8& &D*`(Yc+a4@kb)4145qJ@R7+3hik!KuOkU2Yn7k}(Yh;$WJ=L6PZcL&xoA z{2PU>k^|@J@yyj?s&Z9)P}YD7CQ?d;xwGP+AXNC=($x{8Bc!>ZXO=rODMNX} WJCNyehjLV6F(+~ uAN7;f<8@qnCMWu4Rz}6D*@VmH=RpX$?{z|frm+aDT3{9c^`!#D(Zdf3 zqpBVKFC@$*(G;{w91(AS+UC#6si2~!Rz@ls1R3M8#RUDcgD6m|w;l{@+sjh+b;KLx z{HW+WreF|k0igc0R*8*wW?I~ss#jl23F(sA*rHkldChO~=8z@KCDJBmo&e?yAy#>j zf0t%!WVK>bqaC0@R M%-D2rW3kNA!K3}=W#ZNq`Q$(ppYTSUN5$va-h)&!w%7VTt93jW^hD*W; zqsn&Zd`>J{1%;c}JdnF2Cfb@s93wEY0!MYpr#Db=WRr<6ec{E6>C&YX1>R8BGL12r zFFoqYYvbt5GVJJiJt7E!MO(WaDBQh^tg=sQY0*$iNM({>a!@6k--jH(1dAS)wW%ft zXpUtznAK*vy@JNeN&phHZu+Ry3Ey?$Y?znK*ml#E6g=vxWbq}>>lv+6% pl!|JCiHI$tf|H>^Tr)oHx zMoT@^E*3!gz(;$711)bud3v}vFVmkHlXZ>aUIpVtvso&! 5k>t=&dKG6 Y kA82R*cv$P;#=i%g)D31z zpTR1kykn}>*7pUzT11aQvg|)Y)ZImBfDmKVjjam_WKj8~3=WQw<}&a8rFNt240(6! z#+F@#na9@;@kW}Q-%;s)m<%B{DCm5#A}Ke9|C5=euF-RhnCzT|vC8bN!Faep#ELue zAty;IIH~WU0!^ytu3i%>VWn=MU`$_OxGqV(woUOW+sS1=Zx_DK)Jk8lK&n-^H8%L} zo!h)Ko~xYMC?O 1JK+5l^BeLkz&K7(ieeh2YvJAdKA6_8Elu8)i@s)%G?u7Ktac{gw@oro78 z&EYeO9%F)3u@~OV(;60m*Z*Lu$ByCJ75CG0CJ-StKBGxvML>kl^W~!r?QXi=3609h zh#nPbM(kj0+;{iI`|>E#hQ{>+R{yR65iK=aH7(fo#*g6FAbX_+nO0#G4_Gy}Mids< zo}Q@1MadP4#YI=LVl#(A6#k~Txsg0Dtf*$(MbrB_>BIyoN-Ty85BwXdW-Va!! z0|KLytPAe6Yzabd^eJ-DiVL6CirS6ff?_C+4cO=*3n@hL9pNt}ThpCw86wh2Gi~Q9 zWKGFKFs7)mjfZA;#Efoxn`LDQx|sfg4g5e(zVwXFm=m+XheW(ik*5FD7f888dv}-& zw!sA`#bul1v@s0lt4>3XuqXMEtdlhCYlLt1_Uq?DAK2kZC=1=u9w0krOl`ozdh#7l zO_A5Jf)O&Agft~VX|Y&|9Prf&MX0{L-3xP?N5;L#V7$F`A5n^xU!0eG4^CCoT8*N9 zHqSZqFYyH@t}AvfS;$o1kt6JWsA-kBQ4un15ke<*Zu%qgUJVv@6b#Il5#5{-{ZGK0 ziL{=sd46%j)J!|(qNji-wGXH7P~QPmTr%~;S=Iyk^^fCu$(PD5C$PB_s9CG}6W`Vc z0f>d(p;zr`a??e4TeKH+f$i;ynA+mUm*=L>@gSa>=|N9wAvi_>S_N5}Lib)FgIu=j z=D1^!I}L3|=C`5uN7#(30oWnd6~yhhQ-`hyPg$2u`m(LWP@@j={bTtjyt~LEo2v%o z8aknP?;1V2wW1 15%N+$FjScgPt7 aA2_;TChf=G{41gKf0FfvPhd YKDWK7Y~1GNCNk P!MQ@xl=e$?}e*nEbmU;1n;Mz@mUtY^k1;zvhHtyp-#qW1T{Rj^<*(x%8y19Kh)R z7b^xbcw(`#8xRkv8z>_i4YEUVDqdE~&j+asU(11)yU>VFz0 ;)JK(1bDN|C;#sW7S1yxi_VnP4O+kk85Zx@pOpvgDl{!RP+)) zeTD;D;>s{$qM}%K#kZtCB%f^Q^{ildNS{&tzqtf4@^XFO3Y52nIl#YKz*D`ed8b&( H?A8AOvJaV+ diff --git a/docs/images/ArchitectureSequenceDiagram.png b/docs/images/ArchitectureSequenceDiagram.png index 2f1346869d0686b215b9bd3659b0879621eea2d5..06db08787ab70b3489e8ce367a59b0274dcea6c7 100644 GIT binary patch literal 15320 zcmb`ucRbbM`#+A1l&A<13OQ&Z$vh+(;aJ%vWM=Pq6v?W@G0HlGWF>p=z4zWLd(Xph zeD6cv)%)}LeIMUHejbk=dcDqh-S_>v@9TO#uj_eTeB@-s&z+$;gM))}PEz8L0uBxy zHx3T2&S^Yw=M6;(9r(p&Bc^JjYi{9aqNi_zBd%wrXQgeU_wuTa<5fc&8w XO&n_jrfdj$vQl&+DIs?EuL99%GrLqz1$QP|+!^YGlD!|}&j4WjZL6@-qT zS>tWQntj7U1fz{Oeb^{{hOf&Kg>RRxL@>zUu>}$Mu*|FojYhieMArB|W+y)7;WAcn z_99XwB?`~(r_=|+IcKTIKfTrP@4b6;czbAkvGxVumlhH$&*h=X8|)N|{eElDeJ6fW z^Dwbk)fZDx%<_De7M~R1>Ix7#t6=zjwCqb18KhZ`N;mFFi2LLs-4M#AhvD2=B9FLq zd$WewQn#LffuCNB9 P!hgD& zWmXfizOvI;#gc0Ec;=gZT_ww$0*zJY#|$|$lvbcz;!8Hd{53(&*TtNRu6!xYt5o;+ zn+`e*a(%SE9nNRnAwzx8cDpo|s_}qaRTp8wR>n6QHoRPJIVgkwG4+y-f7#y4@NdHl zZ}`JJo{vD5+Pm>}zC3!+=|Z3EJ<4+CV5k22GsVx>AFh4sk1idsHeeXi)_xnKx*_px zSmt(GBniG&oRx|~{FuL2B-am%{nM51ue_!ZxX%O=4Sdh}p~PlBOaI&=Pr2}1M}&}7 zoZYD+lQzIj?lrT@{-u@#92}l~$wwke4$qe&iB+F=57gG*AoYImmQePyj%%1`3uB00 zy#AL;6(nplHO*`!{M#=%_4}&NEt_x`^v8mD;~(gMi?gp&z!$y9aV0~#8D9+lC1LPN zaB$-^pI0;Q&uwjF_2Ev6m%-YP>|Wk|L9d+|K4%YlG2qj$w^l!$!u}?BjRe0`FYFS7 zi%V~gE&{AjMu(V##*ka#e75Ya@g)Kz;5$LV8M|`>*{_)6^qa#Rhe*X(Wn zU@0LbB}K%8P*VS5jC>dq10lHmz{48;wKyO>g8Cj&AuG5sUCs-=rI90TCr{iajd}s@ zlxat-c5W^7nx^pv<2T2l)-QsauXP`cCw%@)-T&}in~Nh@7ET!l_*&rgCoc&uKirtU z4({O8T2#Qe3|fLNy*%9<8j8JhrIHw`eTWaft@mIYqUi>3aEvozm3(;=yeIa5iWlIA z*q2PUXo2nSUjUD2f)%n?j2?aAV#K!M1q_@Q+}>dGLq1qMbfXb)xQjW2fIG%)p-5`Q z1leFwa3PHPU$*R@{ri2vvEFHbbiLn=OYby$jrS#)x(pmVjuVal9zAtcF&(?YXqvzG z{eK(e_(cBy`h+bFnUR^fzqKH)HI2KY-Rs7PbY619I4>fWyQ7c~Oty#AE?>U9j#4tS zTN>Dy@LLhwU!>SEzEgb9c6$*;>B3#=gWmga=(xQF@yb&P7g%iF(EqaExz=3DG c&9Z1e+-pc{6ntwQ|OIkScGu`_p&3ZCnG2vHNi5?XF2%sLyJPDe6qfYOP_ z)aLg3oZ36iJ)^-K(^owy0qztrc@$X>RuQsgFyl8!DLlB nK0@wd5)J|IQE|SNA*j)l8`Y-b{XtCE;OHT1|1X< za$mpcv%5Q O-#xfWmE;Nw<&Q82r z&kejIK`8IWmaecL4s;G59Y?vF$UFw=9s7=Ku$c5HH>K#og?A9|O5R#klq`e&D8B{` zM%7pr=Ei88`OgyM;m{@3f%f~V*P4qDlv=ckg5e)}jX%#o)QjT0m*l?CqL~%+q3!88 z<(yeoKVsh?709l;?7O8&l$#?N9Ot|$a}eif1Pe^t5{VmcjU{X`>|XIdcmUZzXD6dn z6ks)O8_QvHZaShWX}|hg(mwsFfh(+g`RyV_GOmJMRLVm(^xs=0rwg{a3zsRT6v$|R zj9ER@2{^@fK_hYFN#xHVJUE}Ljp*VJ%L~>E0U`IB3O5X!& DSb&?BJgF?6(xH ztTF vk1h7e)HZJh8BJik$wBcyiW-0tr=t{(oJZ@POq?8=0J)0yZfG{qW&@i zw~zQXDT6cXOM2vn(WOz*&R_aSSV FvWamxNAW3cw6qPZz__zW;CXm zhVYKG!;y7)94+JC1|qA>Km=?h#=KOuYd)8JFe5D@c39P^q1~J@YT^b1X8WKh;z|Ey z1F}UIF&8|q(#WvT$UwxGP2H|VZmy*DyuP7sm>=aWg)IhyHomN|E7>^42h2H)w8U$F zHmOQk$sPGn)GZQvsARDUH$F>+DKH%*pgi0kg_#Y9p=V=>-jVq5TQd5AU3wA{;d*$0 ztW&sl4I(L@b7RodY#x%{E>EjrE9oOx#WYjepF3R=CB|cGHMYgZK|Z23*Zp~5hkSH@ zt~2{4y`Y`dkaMPTkMTpVgc^qNjZ# Rme%`w6*N@6qZU;%xcZ36ijAsTzHCg zFN9KH6Pa6YU^0MNx)X`ko~uEflXww|m_#+mYYDi$n5kXfWs(WTmyFMk) zeff*xP4C+F@R-`8>g4GY>`=A3FKK$T23Mn+It|p2K{-F %0y>2)#=G?m03u?BU?@~?fvum8 z>wH^o3NqaJ!}jBp!!eI`w8cowmuH0-%jiiNTBz$`O&8M!l|005Ju8om%Q0f0yGQ_Y zna=jduV3kKZM&8;t%a&?z%5 cH?78|@#QHHZDP?f`eMGwK$)Kv13PMh8Zc1!+7U%r3~dWW)) zfcDbtme|vjjXP^#7jWsU0`COE4Rf>7pHk5$D1Wk?4nZcNo|W2t*b;-LrgTsBpl^IZ zcCS(~xO0QWtChoa2DjAi46vue1I7~Ei%6CevbmC &%X#*|wM&sWCA3fG4V@5*9FHg@|1ged(5F zgtcyV%9PAm+H}nJ>i+I*_2{