From 2d1e2aca15ecbe2871ea2fdf7dc65a4514fdda7e Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Fri, 29 Mar 2019 23:54:43 +0100 Subject: [PATCH] tranche-make looks to be working --- module/da/src/da.lib.c | 2 +- module/da/src/da.lib.h | 1 + module/share/include/da.h | 1 + module/share/lib/libda.a | Bin 14634 -> 14658 bytes module/tranche/src/tranche-make.cli.c | 73 ++++++++++++++---------- module/tranche/src/tranche.cli.c | 2 +- module/tranche/src/tranche.lib.c | 64 ++++++++++----------- module/tranche/test/try/test2stdout.dat | 2 + module/tranche/test/try/tranche-make | 1 + tool/bin/tranche | Bin 30584 -> 37504 bytes tool/bin/tranche-make | Bin 0 -> 38360 bytes tool/bin/tranche-target | Bin 0 -> 37616 bytes 12 files changed, 80 insertions(+), 66 deletions(-) create mode 100644 module/tranche/test/try/test2stdout.dat create mode 120000 module/tranche/test/try/tranche-make create mode 100755 tool/bin/tranche-make create mode 100755 tool/bin/tranche-target diff --git a/module/da/src/da.lib.c b/module/da/src/da.lib.c index 7fa384a..f09412d 100644 --- a/module/da/src/da.lib.c +++ b/module/da/src/da.lib.c @@ -33,7 +33,7 @@ bool da_emptyq(Da *dap){ } size_t da_length(Da *dap){ - return dap->end - dap->base; + return (dap->end - dap->base)/dap->element_size; } diff --git a/module/da/src/da.lib.h b/module/da/src/da.lib.h index 189ee50..3188011 100644 --- a/module/da/src/da.lib.h +++ b/module/da/src/da.lib.h @@ -26,6 +26,7 @@ bool da_boundq(Da *dap); void da_push(Da *dap, void *element); bool da_pop(Da *dap, void *element); void da_cat(Da *dap_base, Da *dap_cat); +void da_push_string(Da *dap0, char *string); char *da_index(Da *dap, size_t i); void da_map(Da *dap, void f(void *, void *), void *closure); void da_free_elements(Da *dap); diff --git a/module/share/include/da.h b/module/share/include/da.h index 189ee50..3188011 100644 --- a/module/share/include/da.h +++ b/module/share/include/da.h @@ -26,6 +26,7 @@ bool da_boundq(Da *dap); void da_push(Da *dap, void *element); bool da_pop(Da *dap, void *element); void da_cat(Da *dap_base, Da *dap_cat); +void da_push_string(Da *dap0, char *string); char *da_index(Da *dap, size_t i); void da_map(Da *dap, void f(void *, void *), void *closure); void da_free_elements(Da *dap); diff --git a/module/share/lib/libda.a b/module/share/lib/libda.a index 49ece6500c9e81338ca19d8e4cae70adadc5bdc3..68099263c91cbfc01f99f55f9eb7d1706ed7e0fa 100644 GIT binary patch delta 1526 zcmZ9MO=uHQ5XW~mZu|iIVMA%O3ESFYV>MgJr>AWR(iH1O>e-@D5J6%rDtg$`En>}~ zg(+3&!S92DQdy*8FVzMtYf)i>VQz7Eqjy{A~Jw(wl8V3|mY9f`)bSI@iv)~EL>4vodE{SXa3ZQL357-+!*%mv~s>PbJs!+>4A*Xd*| z^cqma3V9R%kdI*Ru|cTdHS&ndGD6aesfW3#J8n61bzR@xB2rSF77?+abhkW( zgu%N66PR7H1gQq;&?TeDycl>?7C}072|Gnmy>I7z_%R=RZ)SeqpPe_eZ$3=EoO~2F z?16k=?sdm7_-8l)F+JOh^I*XUzJs6MNBykS0WA^ zJ3ePb?;DXR18#WFo3}$aZ7$yXLp+bU3MjR^@Alj}z>1EF`S* zI`|yt(FZ(QWk1D^?De`2x7l6x3i}-UGxoYVA3n3cVBho|86n8j3u}@U- zQN`7Le)(S3!~%6-mLEuPqjkmA`A5Y>YT}TfE)&QquHMj;;xVm!xS)fdniy9z8&>}}y^l^IHTgrkiIY1r}v#5z1N>P`Yr4?^g+*VwjKklVF8$RK4$3qh6LZv`4oin#fV~IR9Iy%xX=#tg1x7WmOFZTvpXsz`3f*S|uz1dzeciB%g+2$~piA*F?oeDrGw;AG7ARKG%{vXNqO_?k x;(p$SS7_P}T)+awC+OOa{v{?pqj+F9oWDE#hd6-9Kjum%V-XC{Re@HMDzdv diff --git a/module/tranche/src/tranche-make.cli.c b/module/tranche/src/tranche-make.cli.c index 5286e3c..6fe480b 100644 --- a/module/tranche/src/tranche-make.cli.c +++ b/module/tranche/src/tranche-make.cli.c @@ -1,7 +1,11 @@ /* +.. don't think I need sdir, just pass src_file_path through as the source, +need to add -tdir option to the tranche call, an mod tranche to take it. +sname then becomes also becomes a path to src. + usage: - argv[0] [] [-sname ] [-sdir ] [-tdir ] [-mfile ] + argv[0] [] [-sname ] [-sdir ] [-tdir ] [-mfile ] gets the names of all the targets from the source file, then appends to the mfile a couple of lines of the form: @@ -13,27 +17,33 @@ Our makefile is typically run in the directory above where the sources are located. options - the trc file to be read + the trc file to be read -sdir prepend to in the makefile deps line that is printed -tdir prepend to each " -mfile where to send the output, defaults to stdout -sname replaces sourcename as the name to write as the source - useful for pipes -If is not provided stdin is used. +If is not provided stdin is used. If -mfile is not provided, stdout is used. -If -sdir is not provided, the directory part of the is used. If the +If -sdir is not provided, the directory part of the is used. If the user does not want this behavior, give a value of "." for -sdir. +.. should modify this to allow multiple source files on the command line .. + */ +#include +#include +#include #include #include +#include #include #include "tranche.lib.h" int main(int argc, char **argv, char **envp){ - char *source_file_path = 0; + char *src_file_path = 0; char *sname = 0; char *sdir = 0; char *tdir = 0; @@ -43,7 +53,6 @@ int main(int argc, char **argv, char **envp){ Da args; // we will queue the non option args here Da *argsp = &args; da_alloc(argsp, sizeof(char *)); - int args_cnt = 0; int err_cnt = 0; char **pt = argv; @@ -55,54 +64,57 @@ int main(int argc, char **argv, char **envp){ if(!*option){ fprintf(stderr, "Currently there is no lone '-' option.\n"); err_cnt++; - continue; + goto endif; } pt++; if(!*pt || **pt == '-'){ fprintf(stderr, "Missing value for option %s.\n", option); err_cnt++; - if(!*pt) break; - continue; + if(!*pt) break; // then nothing more to parse + goto endif; } value = *pt; if( !strcmp(option, "mfile") ){ mfile_path = value; - continue; + goto endif; } if( !strcmp(option, "sdir") ){ sdir = value; - continue; + goto endif; } if( !strcmp(option, "tdir") ){ tdir = value; - continue; + goto endif; } if( !strcmp(option, "sname") ){ sname = value; - continue; + goto endif; } fprintf(stderr, "Unrecognized option %s.", option); err_cnt++; - continue; + goto endif; } + // else clause da_push(argsp, pt); - arg_cnt++; - pt++; + endif: + pt++; } - if(!da_emptyq(argsp)) src_file_path = da_index(args, 0); + int args_cnt = da_length(argsp); + if(args_cnt > 1) src_file_path = *(char **)da_index(argsp, 1); // arg contracts - if(da_length(argsp) > 1){ - fprintf(stderr, "too many args/n"); + if(da_length(argsp) > 2){ + fprintf(stderr, "too many args\n"); err_cnt++; } - if(!src_file_name && !sname){ - fprintf(stderr, "must specify at least one eof a source_file_path or an sname/n"); + if(!src_file_path && !sname){ + fprintf(stderr, "must specify at least one eof a src_file_path or an sname\n"); err_cnt++; } if(err_cnt > 0){ - fprintf(stderr, "usage: %s [] [-sname ] [-sdir ] [-tdir ] [-mfile ]\n", argv[0]); + fprintf(stderr, "usage: %s [] [-sname ] [-sdir ] [-tdir ] [-mfile ]\n", argv[0]); return TRANCHE_ERR_ARG_PARSE; } + da_free(argsp); // this only frees the array itself, not the things it points to }// end of argument parse @@ -114,19 +126,19 @@ int main(int argc, char **argv, char **envp){ else src_file = fopen(src_file_path, "r"); - if(mfile_path == "") - mfile_fd = STDOUT_FILENO; + if(mfile_path) + mfile_fd = open(mfile_path, O_WRONLY | O_APPEND | O_CREAT, 0666); else - mfile_fd = open(file_name, O_WRONLY | O_APPEND | O_CREAT, 0666); + mfile_fd = STDOUT_FILENO; int err = 0; if(!src_file){ fprintf(stderr,"could not open tranche source file %s\n", src_file_path); - err+= ERR_SRC_OPEN; + err+= TRANCHE_ERR_SRC_OPEN; } if(mfile_fd == -1){ fprintf(stderr, "Could not open the dep file %s\n", mfile_path); - err+= ERR_DST_OPEN; + err+= TRANCHE_ERR_DST_OPEN; } if(err) return err; } @@ -141,14 +153,13 @@ int main(int argc, char **argv, char **envp){ tranche_make(src_file, sname, mfile_fd, sdir, tdir); { // deallocate resources instead of just existing, so as to catch any errors - da_free(argsp); int err_cnt = 0; if(src_file != stdin) - if( !fclose(src_file) ){perror(); err_cnt++;} + if( fclose(src_file) ){perror(NULL); err_cnt++;} if(mfile_fd != STDOUT_FILENO) - if( close(mfile_fd) == -1 ){perror(); err_cnt++;} + if( close(mfile_fd) == -1 ){perror(NULL); err_cnt++;} if( err_cnt ) - return TRANCHE_ERR_CLOSE; + return TRANCHE_ERR_FCLOSE; else return 0; } diff --git a/module/tranche/src/tranche.cli.c b/module/tranche/src/tranche.cli.c index 97fe653..1e6ee60 100644 --- a/module/tranche/src/tranche.cli.c +++ b/module/tranche/src/tranche.cli.c @@ -28,7 +28,7 @@ the same file as one already open in the containing tranche .. int main(int argc, char **argv, char **envp){ if(argc != 2){ fprintf(stderr, "usage: %s \n",argv[0]); - return TRANCHE_ERR_ARGC; + return TRANCHE_ERR_ARG_PARSE; } FILE *file = fopen(argv[1], "r"); if(!file){ diff --git a/module/tranche/src/tranche.lib.c b/module/tranche/src/tranche.lib.c index 455c6d7..b27aaa6 100644 --- a/module/tranche/src/tranche.lib.c +++ b/module/tranche/src/tranche.lib.c @@ -190,7 +190,7 @@ int tranche_target(FILE *src, Da *target_arrp){ // Inserts a zero to chop off the filename similar to the old basename. // Returns a pointer to the first character after the inserted zero, i.e. to the filename. char *path_chop(char *path){ - file = path + strlen(path); + char *file = path + strlen(path); if(file == path) return file; file--; if(file == path){ @@ -216,10 +216,10 @@ char *path_chop(char *path){ void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char *tdir){ // target list - Da tarr; - Da *tarrp; // target array pointer - da_alloc(tarrp, sizeof(char *)); - tranche_target(src_file, tarrp); + Da ta; + Da *tap=&ta; // target array pointer + da_alloc(tap, sizeof(char *)); + tranche_target(src_file, tap); char sp = ' '; char colon = ':'; @@ -229,41 +229,39 @@ void tranche_make(FILE *src_file, char *src_name, int mfile_fd, char *sdir, char char terminator = 0; // output the dependency line ---------------------------------------- - Da dlarr; - Da *dlarrp; // dependency line array pointer - da_alloc(dlarrp, sizeof(char)); - char *pt = tarrp->base; // char * because it points to a byte in the array - while( pt < tarrp->end ){ + Da dla; + Da *dlap=&dla; // dependency line array pointer + da_alloc(dlap, sizeof(char)); + char *pt = tap->base; // char * because it points to a byte in the array + while( pt < tap->end ){ if(tdir){ - da_push_string(dlarrp, tdir); - da_push(dlarrp, &slash); + da_push_string(dlap, tdir); + da_push(dlap, &slash); } - da_push_string(dlarrp, *(char **)pt); - da_push(dlarrp, &sp); - pt += dap->element_size; + da_push_string(dlap, *(char **)pt); + da_push(dlap, &sp); + pt += tap->element_size; } - da_push(dlarrp, &colon); - da_push(dlarrp, &sp); + da_push(dlap, &colon); + da_push(dlap, &sp); if(sdir){ - da_push_string(dlarrp, sdir); - da_push(dlarrp, &slash); + da_push_string(dlap, sdir); + da_push(dlap, &slash); } - da_push_string(dlarrp, src_name); - da_push(dlarrp, &newline); - da_push(dlarrp, &terminator); - write(mfile_fd, dlarrp->base, dlarrp->end - dlarrp->base); - da_free_elements(tarrp); - da_free(tarrp); + da_push_string(dlap, src_name); + da_push(dlap, &newline); + write(mfile_fd, dlap->base, dlap->end - dlap->base); + da_free_elements(tap); + da_free(tap); // output acction line ---------------------------------------- - da_rewind(dlarrp); // reuse the line buffer - da_push(dlarrp, &tab); - da_push_string(dlarrp, "tranche $<"); - da_push(dlarrp, &newline); - da_push(dlarrp, &newline); - da_push(dlarrp, &terminator); - write(mfile_fd, dlarrp->base, dlarrp->end - dlarrp->base); - da_free(dlarrp); + da_rewind(dlap); // reuse the line buffer + da_push(dlap, &tab); + da_push_string(dlap, "tranche $<"); + da_push(dlap, &newline); + da_push(dlap, &newline); + write(mfile_fd, dlap->base, dlap->end - dlap->base); + da_free(dlap); return; } diff --git a/module/tranche/test/try/test2stdout.dat b/module/tranche/test/try/test2stdout.dat new file mode 100644 index 0000000..139597f --- /dev/null +++ b/module/tranche/test/try/test2stdout.dat @@ -0,0 +1,2 @@ + + diff --git a/module/tranche/test/try/tranche-make b/module/tranche/test/try/tranche-make new file mode 120000 index 0000000..b3adcec --- /dev/null +++ b/module/tranche/test/try/tranche-make @@ -0,0 +1 @@ +../../exec/tranche-make \ No newline at end of file diff --git a/tool/bin/tranche b/tool/bin/tranche index eb63c284feadfc1cc45b4d401b14307666312e76..b105ce0cccd7aa7da717fad390101b2c0de178d3 100755 GIT binary patch literal 37504 zcmeHw3w%^po&TMg++-&2cS1tRK%oT+dGKxvbOHp1H!Y=wJ{ZqIWml~()Jj|a#7F-wb$zftDk|+Jf{F{RShd;j_dM?0nPh6+{qKMG z^VwX;{Lb%re&=_7=iGD8y?16$-MW=dhr`f^(^zT{+mz=MB>8C=$NL1TXp4*t!)IJ+ zOfgbHNx`2_a0q2d!&awcXy{gQEUc6H{5zrSopAbq5%&=oE5v6EQkKW2S0ha};YfXVB+yac7BcSbZi@ts=I&t7Sha5TvgLs}m2<69%{;3(r*b~D zTRJ*JN;`nYIN#_0&>n^AL!$Pjh>^4fR}CbA{)JQlTTorcIl5kyf(TX_vB5t(Op^?u-Zn~a~j!; zY;SjSEq zJ=>xh#$Fp;_aWI2+UWK?KVYNh+w44UqZiodhir6pDz$OPi{lX(kHB~Y#v?Euf$<3Z zPl~|BoJnu`d(XT5{pQbbt>NEyJmMTVoLnN#rqEEvXtuMA-!3{jHNSyG&QbCFGdy9BQH8~*+CKYayCeS^Z4p?1XRDn`Lxk~BOjh;;bt45TI5dp;o# zbi5NZx-;Pxnm#!6L#DO}rf44;hT8krBYi~ULb5?1YfHXTE5i01@gl^smqb?xX#|q> z0#HeL`e5D2-up+4$O_5Pf{^&#X=$0Uabu{RF(MU8s8m8f&FQ%R^P3|hInUIMSZQi^ z0byqn0x*~_2SW<7EJZ_@uw@pN2Bfj&lw@hI-G(H6!O4-N;Cy1ln~} z%!>Qxzkt&V#aao~sF;nkkEzHW5w%PA%7q+#9UM9c>&ZOp{=wTAnMNc129jX^k~JlU zAx}s9-_G3sO*F?@G3FPFXXw&4*yyXfbZ!dHCYJ+hUS}AuGdf-yEzd}LyLh3~>Mjp|mh(Vj z(9kU zYcaZF*;_46$bC_cX^eA&jYCn-5SNcWgZ0sKwOBJDpXI*8yq@I0d^u+$dS#mPwI}S$p0Hv_HQ}B$`xq`*Bt^K9BP2? zg56&Sr$t)MW3%?x9iZ(GLG;`vdh;A=6pp{2^9)zcgD)HrLsBUHo&!Nrhhx-Vh~XiY z)d-6ad`ea>JYU8bh>8b?y8ex0I_H76SfhjP3X#{*-6+HL!J%PU7LNS{<@i;&SC4gA z)F(3(&mc6MPcP&=<8wc7Jj$sbxR@uEOW*sgsQOW+z=a2~vWlHw6P5(Db+YaB;5T4 z8V@f-kDcRE2xpqzny^ByjZ}WtCFJK#G69c3`jBe;Qo5-6yn-(DZ#e`u{1cU}mTXa( zA=qRM4pkzM%%JVy+cM}2NGxsbQz(y>HR5zTIP{+1K(vo(FoYAQ7*kx7Twga7^?-PJ zm^Zlmy&dwzE9k|fV?JJ78I4WZ=i1_h#BxIl6;d8oxel9-leBa5<8&e!+Hh6$wOCPH zJDj8w>g=zQClmao!+BK;HlgFz5uP*dM61;1t!{G=2_MZAQe0xOm4&hCdWV4kxH?-ISd#jf8> zQtww81L+$}HWi*pV8!m+Tv6qgy*8{r#^y1MTNwYRM9d!u$sZQq}2Z(g^5+OsnZ zV~cT#<^JALUf+MYCu|EbqLa|S2?M%|z_%R-V@d%7ZU_1ij5g3oacm&2H zFdl*N2>c}xa9B@xO08(Pz9o2_cUsuHINTZSZVb+DZfg%NO*guY#?EMalQ+~E@$!LJ zFX@m=H>O3?jpa#rk?#6XV{6bmbur94%3as@Xb^B7;1>aJ2Anet zeZa2+J_`7*UqT7vC+{Hh-HNS;%fu0S1nVr8S#y=0b8~h48|F#%E6aJ^Y4SyE+so>*5j+p=V#q`&K zKMnjR?R@7GLO`@1{7-|A=MiH1TVwhUga1kJleOW@p_@A@*v%voZ_>1g(S-pt=I`F>={!MnibG@bC4*qYz zpJM0VDcC~)Veo$oK5ihy;uDJTp8`Jx*FM&S;{Ecz^H5UIo_*=o>9mn5g z@iQ@wp8@}|IR1dep9TIb%nQl*>%jjw_=SkGmEW!$2Mvh+2mdk5C%tj@WBv0m_`e4~ zY5#-o!hGYk>)$Tillias$>Mh&{9@=Yu_0Ix-0r)%P+84Ikw+{Rd zVBWjcZr^#66~A`y{}1@r+WC=K{SSlx3ixa6d}p1d{}lLc%%jQlUjlzJ_{sb~5B@da z|31$CCCh#$CbbmI&)CdiyU#dTQQE%F+Y+opQQEhg0ZT9qK+1_Q@rOUE&mu0)fyvupM z8g>B2kMRhMM_@bx;}IB-!2gH{ROkDo9}03Qz(d1KiCXVV>vzr$PxT27-)rTe-)}CL zsKI9+c!;$-VD1JVQL(Ne)cn`q8sQVShTG*Mknd^(E;4;Y#XHf2(-l9R2oCX#0-%1U zuvAbD!~V`7NmwGu15YaO;HjR+5!FC_y`&O zco$X9sjTtNsjgX6Q&T3$lh|wabD&d(I4zzr23t zKv`8g)iJle#`^ArJ<50bmMEin8jh0bT4ZRRhB_xzU1m#TV?tvLL&rzT%v`ncR%2!z z>c^IVJcOS!Mf&H&(XPR(#f^6d8r$o`t%gw$$D7&M9O&xqj077aZJi-Dx;T!1jd%fh z>()T+=FN3C-Mo6^hRxvXIYRleaw9k^w;3Z;P4Fj;#uA<$-Fw zt14xs@7=-r_O_M~^~Q?lUezD_6daG|%>Q^ik>@&&8jgxNWc2rI6sz$*mW)1!98u?z zv1AUYKI6MH$@-VC*YNm+g8wi3m-+dh881o3f*6PIWGp3)7b^ajju-Tuj-!TS^^4|d zIF^j=`|`KR0p0gsQhhfI?UUzdTEzZ@>UXinC@AqCQvQ$VCMjQC;1dEND{y1U599P8 z${(;M(0KXFu$&@DZpS3dIhmRG_yP!HIp*|(;XGZ!4Got&?GcE&Qqs7+o#J*m z-0vptOdBC^q~0$ub17ua6cb{v+QO0!{scey7_(rG`Vk{#tUsLB@o>c%xJeSD{q|XNO70)W_Y!|*A_k4q#26q&+6NYmV1kAJv9|1^znPS&u zXM6$@sqRIzC!}D5sTWG6^#2%1Qj?7-`2S?tYxiZ=sm|WqhQSmyw&h3siT7Gv_x# zh8dI1Rj+4iwkV@$c;*O;+228wzd{Nr{{aZ(t*AG=>1nwU3?0vh zAeHVGSzzRIZI6xy%5GZ^V1|1VkwkL7KISv-} z32rvIu7Ria6r~BgoGoz;9NJTKB^Zv0(YbGFK%>+cOnSh8j6A-ax0wUH- zK*X8}h*&cL5o;zOV$B3=;iokd+z7;)349Q)lX%$f|IY9{DlQO*RM42A3?S~fNlJONUwo1Lv^0#fu$Aj)bc@Uh09g2}t1m##r{&fl&BefVyFKhQBaZ{u?GcC^xNiHvb?bqf4+HK@*9F)r zn8Ts=L>l$I>Kwb9ws1HO9!3p?P4!)nC}i0=u(e2x%_l18yK`Vu@dF?`4v8u;R7)BS z$H&rqP<9S96*rUjNri4lbLesDa@P34)R#*sW*9u1@o*gcCAhM-50bnB!lbgzO@srz7=UAHf$TgrNSQnxAHxt8wDmTphE)NM5;>}O58vlc4p zDVFpBO4F^~S2E|&=%P77cD6*f8>Js19!-6<#3!_FvUG>6nxc8i%fe=emR|+~(Ug{= z^Q0xeX#EbW1!a^fCr^AJp0qbH2Oo}h(SuK`8W&kL-e&5!wCf%$Y=gL$CrkEU0idHp z%;@YtHY}uSL`$w?OBzz&EcOYDTu||F9Q+dO7NxW1h6$=AMei2qG^P?Q|BSj#+H&!2 zM1u;2>CMD%Nu8@q4+_H|9n8g&P@29)2dT)U>04CqDAQXl(?6i8ZI-1~(<01D#mPInRModOe+3mAXioLTf~Uk>FOoo>auSpOUy)#7gxovYBT z#WNU;c}jSbaYZ)S(^IomO*dFI{mQCoy3W8NF=!Dj^&-xkZ)Z@utBrWwGiHV`3>aDnvL>jncT)(x|XH;EL7M zC{KMxNtapn_gT{AmUQWFDP5BKu#%2-?iVcS65UnCq`#+hUaDT9h(|AA-*Hg-omZgq zh$}8fUWFX4+wnjSE`U;usZdvoo!!VCj?2U=Bo{{L_+kgq!(|UsW_+=OAp9?1?C=uG zgG(rmY&nsLOQ`gz*~}1L$QtQ$GJP!b5-NS6Eb|g7{d!R@OiO75JEO|+3Tzbp3WLvZ z6pdgqG@M2MKrE%`?=kWWcafVQx9A*s-l9Je^A$xYvbXq$0FL7Q9HPZ%@tIQmGAM4N zt-4y??>5Dn7UHv^1W^zB?qWmq;&a0H;>X>#~#loDJV|(d&TH7JpV`w z?{$;m)~8J8V|1y<)dS*$6Et=@^-GhbnOz7f568iOhEUl*QT_A;E-PIFmv@&P6Vfw2 z2npA~h23RGY3cMrpTN)WE^8F{D#<^yyNp#hPH&d@>D}emlmDYst~gx-NA{GTCjZB2 ztjjsDePS4E+B4!p+cog{J>|8m?Pm)A+@A7RDE)JVKfR}1bjvRk{?wj{k@^P1aaQ4< z-BT_)=v9S(W=}c4Fv&5bYTvu3{4DJatJ=3tzLwvaRh=lw}t?4N@baz(JUOf0Yu&Q$BO z@_X3Ok63<+nm($#)~J|H(~o4WRHoNhF$lo4^y`r++Am@2k@+&F+YRqzDnFFPG|n33 z+vh9;50y#-Tgz4ng=?gNO%uam!_lAnG}Mu1MnyiG-JA8yB%kntTVXsL2l?>jB(}2G z8`sKStCba0eL%NT7~YphH5yKJvx+Nxl-Vk}eCZWFVOl&TCaTyks$iFIEw#qgVWBaZ z-g8`uF5jjrkzIaUe3##Db@{~RCM?wMQ21V?z;^b;jah}N?pO+Z6Lpt8#ky{^LM^6? z8!L6FD?(&%$a-a>bbNtuAEbk6xLZ4^xe3A9pn}s{CX_c^BV&cYnhg8utj{Xtxt8*L zD9f5xi^Rqn(x`ZmRjthGSJGZfy4$L1b3A)y2W%NPlNVGv`{Gi5yg8-kb^vAo2H<;O>?AZf(d zX@!VcTtxl@K`f20!Ris(pHPXclKpx0gg8!Fk>lzK6e%}F{!NUxqI>qk%Y@Js@my(1 z@g|MM6B+Tpp?gOUs=^e<(hQF6*jO%_j-fFT(^0V~U|ex1SX0Ff6F3-33mo>Lh_15_ zwfN3U9BSoub2K(Fai}HqpzdGv6O&+4Vjfl`O&qVClVE0Y24=;4tU;zE5yFt)&U+k2 zHa;DWKV)a&Q~Y`eajyQVqTz1-RznpYPN~9=Gz1pRo8293YORmRA8x2xRMi%0Y>zet zrKm!x8rtx+`9j%Fsp8k-$J33<%BpZ{eRt5ZW2i@gDjVC|DzO+b_zn6^!RE?VIBEzB zC}IVSZ_v={RPVE-~|Z6{~b9i4%Iv z0!X%)Wz|GWH9EJ(OuuLr^qM6RGkuMjxt3ySkc^rWe5U7^S@yK)?IEjlt(o3q7Dmk~ zbWe|az|1;kmOO1{K1F-%ptYvA#wfSD?=q zo7b>gx0)`rst0Dx%va5Pe8R-j=G3KT{zY?Ak2y19PU|tmb`hzpi+`c%>}|qskD2SP zqv0tvW*PDxtvY6U;Q7;R)Z)3O$GyaKKW&;-7$!^1R0P&!ZbQaoRaPZYhYP4&j{rY<)<7tM^P&9tK?YC&ab?kdwfYGz)?UMOWW zwweVpC~0?Kn40MjaI6)>lkclIjS2q~r@;TZK`Umtx19>bZ#z29_WYU(o=)G|TSF#Gf(H9u;4kfe*ZIj7)^QO!i0Y}QnX(SYH- z5W@lE;v44lCDyo@BWcbn3(WbTf(^l$wWjNL?gGTn?JhLUZ5V4v{G(?20LHjH5xJ{Q zLtql2+L#E4>=RGFRQ`^iru8d0hm-n>k>E#48W38DRF>}tES(xdf zX2Er)<4SX3m6>&k4REc+SZ?9?URfh%6L;lW%;nW^s>+;Gqgv|1#17m?cPTyDtg10x zZwPM-?A~s(yj4!_h&h?=)jm#~W0qiMIcu6v%PH@pX4(MFxS!zkUxwf#r!rxzHAbBz zsbc*1h;GHCI7{{uL_I9EnfP^_6z4W+;-h8>b#O`%iJP(3^kA;Ijg8$3_nlXlhz3-z zx!Ds=5y!>P{Y@-%~j^#es*Zge=%tMNC#$DED1x!Ihs z7&G+6V_!W+Rx#*R<(9^1gknaySrM0(Qs8b z+7J!2*N2)!3G}9Dd$3AB0qR^h?pg7f>6vhL|c)+|7OICW&XvEyKn8IJgTn5Pqh>+`;$WV*82BM*8IM_6YU8(zt zL1#CKpMD=CNz}Qh%ruVQb|tOfe7cZEFe!n(A=} zHGr@OjbMAQBN&PVm<+Pl@zi*Zi_qu}iVCRP(G}Ts4{5kKXbZK3 z1LF6)`0HHJ?jY%1(QvC`O4WNgmcVGNr$1DZu|SV>w1w&;o!#UjuJ>S6StE^uPFKpT z52!d&wgV5qFfXk|H)!&Q!B9Ydv_x7d*3cQH(NOSSSs|XAsj*7csza7_cD7Sk{45xU zCXuerE`Y8YepHiyCIok~V0R@fOj}Nh5lm$SK%a7+!~0KZKl(A*R@+QI=%YY4U=k($}!L^*~^l zkihEA;ja2d{45$0IS{Jvz||vY?Va}qIjwEp+0@q3X7yX}o@jl$?nK=oUG)feV`oQ0 zTS&}gF~`FkEQxIkNGI4p;e+L_NTj&-h*rai#t?oJPFIUJ7x*h~A>;t22gCsd$Vfjs zL^H4vtL=!Njf0TURo@*BiZI}J;W*Y;Z|;hQ8YA`~(p}Qy`b=90!$hPN10A^$+zAti ze<&QpkIS_+W1eZdCmLiv;MW#|hz2GtBN7Z_*o%y}{1N@cb}>)Yye}hyid(wtyISLB zT)8~ejZujpRIUD^HodNI?`o|Vea&99D(tAgo6`>1p=bvS4LB{_9qVqAqFr6+ZPkT= zPBh@{4;QXQ4?BIMg!n6XC&r|^jI(3XQ>^#b?8aQ!R?zRQ#nV%*_uJy>X~tOZg}HF! zQ@>9ZFYm!Grugh6QFh^NApQQDo$2D+a=By4XByry=~>o0P4RZJ4gKy$JRNUJRF7pp z7r!$)7Cp~6T{9Lv-+G@g-hP4g9$`Ga&=~7|HW%Io)W1I%FJFwuQpc*d#5g=Az0?>Q zlaB54F%B2rdc4pzmVNzpWW18gdMh%KenmV%VJ>4*61sj=DaPh*ON#N^kr+jmmJm3z ztar^ce|-{qy`t-PskHnqMc|o9J@L-hdlfzL7TkcMC*BAAn4%}%T>J+`PrPIKqM|3>_xzr= zuWnKVuHSdk^kjL?S5zE$Tk$>O$r3Fs;aK&`-^0!y zmAC&W?2Mk@UZ6i?@Cpq5g-0i6%TBLi-V6{lAie3VX>ko zJ~=u`(3P?cRD+&ployyX_1U<`0eCoSH(G&CVK1EM_ ze)qje>^};6F8oQH|G8Dq_#{4N{P84qo>B6N4}H2xcaA=v9#3NDUc@Kg7GGWbuCkx_ z5b=){J@MIKzI{Xg6CYW7Ff{#_yDvy8+i!Z#&3d-%#?2Pwvem-8sg39`_^}=dY`N)Nw8beXP8# z67sfy>Eb)Mp^H1R)_+{#Etpr;*d3{<>@+ItL!nMwM`ORCErOeg3Aos|vS_>zZfnHe z40d+xvhj4G1M}fX6u*SnXyB*Pu~iVp=1U;bfiEw>)gJd9n>qt6?VSzv?SUq2$Y56@ zx|0`#UG2e0u&Hw4oJ9-A7Qz*EsEwDP^}A40q#M7~-i^!8KvT4%V;59xm}pd-sJgCI z`-=A69Q!tlzLZrrSVwJo*a%|3A>l$_Up%W_6KyTFi=qYeg}x=B31N#8w?$#?-e?2d z?x;j()VJeX73#y4HG0cJZkr_AG_YTHTiYn|Ye3b8k=+ zCXyf!Sb0Uj*jhYenW; zTPD~i2{m?f#WNY=c#7DI8?~<{Hk!EghP@fFO&hNi2#Wn!2yhRwS@dhX1X$fcu~7*> zuro7?t2g!3o+9McPG~c>{Tk!N*_5VeLQ_;^L_D#9*_KcRMj*C~v0KD&vn94&RM;C8 z8J%-#N3mJ#SvAM|(H!hdpacRf9i1Uri^zedaA%+uo5Aftqa)bS*tIKWp=KVohHzVh zJJbR0qFbXtZ9~ybYu7c&2B~(_+V-+%2on(7@a-5fv1*wUfu?pjtzoB+&T^XTY7@K5 zYIj%LRj!B~u|S|9999t&oBQyOy%VORh+%BEx|wr9e3cMU+u|t2w!69090=UJez_Vo zx?ZuXX4}AyZ4GJ(tHsJUakDqjz`HE5n&)DMz=Yf#qpvg;OxMyC4MoD z9SMMklSw@lRH>^yVpNK5s*D78qRiPIyiPHmDuboLQuXF2itrM;lIS zEuFB1k4jO2G=|PIDlz}@W{LDmG^VmXg05?bVlx#@2sT7pV68sX5<}ZU%{X%^RzpK~ zaEHdkUaaCEfcgympMuz@pw)G>oYNa?*fP44W{+= zzAx8%JZ4E?`LE?Pyc>Le*O*|-k{##HO;ePrvFdVrOB<_?Z_J1G5?D}4% z?^XKZyQ`%s@u|q#yzyv)zP^sxlqZ$86xfte)cTtGHz?Ta*Zbjzr%DNZou}m!{XeAi zb^P^pqxeE@@b1!z3MTg7;RJoXzusOg724^X?MSTu8Sp5g>(~46r#Ucj@O2LRky!t6 zF!6xA7z32k`={=u#A5v|u^6uHyaWcWmMwj~Uz__5^-n{Wxub@wwf|qL^iQew>-^I7 z>VEtgbSa|s^?ib&8$iUN^IT%1{eKM%yS}xr=93!iAN!%}*YG!B+V%B*$YGznX=NLHe5FJV*k~;3dNp}E2#GZErmvC`FXO!q`;jO+FNyx|IWgnV^SH!D*R?E( zeod3q_=4VuQ3ew0-=Opp95?iDupvgej;ZNs}&TG1- jb4O~(Pj8Qe%k{ufOkJ;*Rzee|hfX|6PLDHzw1=UAU=D4-iIQ$k$E4}RNqTY8kdXsP+%ZWU(xCaiyS#e! zq@t7VN%zc&udVv;zuy1;cX{{Sck9(X9a}fMT`of>x3SJ3)>aV^B>8C=&%^|(Xse7O zBVf!mE;aH&$-`eja0q2i!#=lUXy{dP9zg0HRs5sw05IYK0%NB5%s}lSA@wpTpt2I4 zE0Cy$M!CePXELjBqdY(ictC*VB?1^4YB{SszvLVKfXpa(SQs@74eff2jkiULd)G-l z4Ns|hpH@)o5v5+8(yLQ?8lF;t&``&dG2!1yW$&ar0E~Emz}O@{Gmx@Oov)`N%-`ZC zMi|I~#i~3Fwchp6qo2QR(qX?rm6t0n7gTu~D%5Bl=b*XN*rI0t=w4*F#|=yP+>13BnzIq0|Npm*h<&(1+V3c4SE&a?`I z>EgCI2fa84y(kC$njG|-L1)`cN$6kQ>`p6;p7>BSW+YRISoh$NF_cavjh<+{$LQ&e zrn*TVQ0z#0$QXAYz!@FS!(4LFSD{sT9!k*cQ77P+9B4$ zo#P+-yX55ox`45N>v34w-;WtD&-j?4Jv8<(hO@^QQ+T?e-$&bz0%w|79}tjZzEI@k z$2l8aO`(Eu!A7sN$=3w}0^>AIe{}NO=x$8}Y_icgesyZI(e<1}-YOeiP0d0jV58gT zt)PvrE*(O?(?-{GEEzj(bOgvsyKQv#NuBy^boODLhHUgwO$6L)qnFv}2W)iRhGgGw zqucxSVHn0v982F#;DO@CO!w^JTN&4vxI(4IVUq&}taL`%a|X zlc$0sC%rF;NK7vOA;^>SU&CkFoB(pf`^YTclMOPzeU_l{Di>&k~o)c zXO9W|MdDntojoG(XNhyEcJ{EqpCHa9+SvmF{~yG;G&?&a@XrzFlI-kmf&VdaF2&Av z3jCAAxkNo15cmVcxgQZ>ubSR z-c40l77COFr#{O+u=Xe1O-NVn2#&r!u^+Yin)!WDT(`b7r98^N@c;$UD|V0G^;~c? zeJnV-b~Kt?SNc1(z7 zMAoGpKCIM7-fTndr7A45p=jk`z#CkMyi_M%9(0`m3QPE7{aKMwlpw@aylDO!T0p^n zO{v>;b&>z_Z$#B$YzNq=Cjf&ie1hYme&oWwjJ1klR_nmA)g9-`K9#9I%fp`zkBSl< z{yHONNshefXy_aoiDF?89)FL0R~oOA5Tzfy2K_@+?vSjIt?WRZ6=8cP@FT>sl|)mB zauG;+3P2_0>HQs(2kx3QQkx`43qs;or=?}a#*49Z#z@UkLUavgf;6Y&{`0pdC(EAd zn6x5jD<0Mu`m#TJQ8hP|Wv_FcQVo7Ct9M9U*}))dQ0)yr0&yCKPWGL(j^n$OwzlrF)G+ zj=qjh?11&0o_)t@go7z#2-!2VaXoB|cD(h*rI=;j5_~!Fe2&wAl4+JQ2Rq&xxiFdX z3Rsx_>+z0rvL2XNXjm%tOT`P>GsPQbaHQjc3vw6Ao-*z|k!qUg72b;m0x4Mb{0WXk z*Qv6njk2dt%s2doao>sb*DaNFftcOiSQ8vS@eD3Bx^c%}I7&=*-6a<$CvhoKq7@EN z*QtNit5;w^S^k~9I+f+siHui|{>tf@$9T(1i zi4(jt=s$-i|7!J8BIuYWVTki8fVdcSP?rK2+#8?x_%GND;)2H-iD?_;n?Rmc%X0Zks;pnz zD|hk$DtA9FwFktKM65wz?JI1(LmkJS=OUG*9+iZ{)}rOpAe{Xvxd(ULZ(Fi_Ox6VL zGd}SNUMBB5QFhLv(wpZ|qHw&E^9)y1<1Zc&LsBTc$k8OJ-_1}T6Jty) zw-6Q~_?RqQc)mb%X%;*_vGXmC>9Tv@Wr;4jD@6Vt&5b-o{;Ykn>hFRhFS&xN|33X=-tXLeYx^zjx3=Hb9Lg2 zK;|bMa)rjm9CX9g=()m+S<#OIPX26iax3z$o|~MU2blNIlas3ep9M?-KKb*>$%g>T zF=U?vyd3aV!0mu<0VV;f;OY~A%K&f09I_oS377)>6TpW6t1*>73HS)$tAM8f-vYc8 zlSmbIAvOUn1H2P(JK%GGDZtAyKRpC^3h+t59!zJi0`A8Y_!i(hfK|9qz8{n5GQcYV zw*&46OaUGPd;7P!l*xlgsXC~MF8w}Upa#v$h;H65314KkD9ClJEWnN|gKuL9RpGZ^`1{Wbq#ZeLMII?EI);3;QpFejE4=cK(hG z|4q<$fTzng`7 z!v0pp&lR5m@ZW|03cLOt8T|*rufn*`RsLh(&jx>QR{fHqejI}@gTEK^M3nY7mzICR z-BDWiaZg97|4?2>Y14ydu(a)?`N7gvBL!EM24bbF+DqHoOPe;7`Ztu;Z740@Q0f)q zzADc!j=+u{<1}|MU5voR2waT7#Ry!Cz{Ln$jKF_X1j=UwL{Vqdxo<9gm^3VwsC8Z% z&*nsG!jn%Xo@-^&=bIZPYH$yXN!%*{mahvC73(-c&Hu%_lYAm)cs&6Ec~%?HYX*pl zGtq=iieE?s>1hdY9$lt71*;X*082KR0s#TBL>1|Ps-V6<(`Nu{6@Mr{Aaa`Cq;Tzb zP|4}DfVzBaZHf9!DF3n1CU6~3+@1;igyJhR|KUKND|Z&WqC6l-n-#oK!5#(oDELtY zA6D>B6?{s;uPOL#1%IUAFBQyJ{jEm9_bI6T(d|4pl?cbW`^1u)JRN^cZ;r+yr0afq z<;IPd`-L>1m*K>ljzhLuq;B4MyOj6b1PXWiHb>AcWxr8CH z+E3ZYp8;A0sMgt5DJy+XM8gC9y)o)d7th_QJ)#O;jOT)Xdpyz4bsROE5_8Dt@6*(% z@jac4zGk$kYsYjlL#oYqmL^yG^0*Dtd}ZhVX8W>#{(Httjs#O{PW6H>%ym9;TpVe@OX%K{HAD^2&e^ z_$c;Nrb|-(t5_yT`G;!*LafdTYPQw|SeB-|u9=u~iVN}41exg^b8`xEpRQdE;PDoW zLDZ91@GwB0*W>c;BknGEhrpHpA%U5^TA6t!z7hfz^T#w0LjXJv*AFm1oB2;SGN11q z!zVO{p;^GZm#eAMd5gXCAmtkYlDD)V3SjtNA+o}E5Wwqun#f9ll=~ilY~Ct?)cJTs zD{r+x{Ju2BE*D6Xubg662&B#T06A*}vdZ@z>Z}z=!1v!N77$3#x06V_KstRlQD=id zcKW_dWK+#r2<-N?QEYS7Mu0wF6Oo|sddRnj$QFU5e5KU6swfGt*Y|58*UabyIN*DP zV%L_jgkj&8>CScDEuf9~&Qt9AvRy##_wkyMx2xnHfWy9zQ0L~_2*4x0%Zc1l9|t(% zo1lSPg*!)mC#iFr?@EAUzF(3PDr^SwjIV<_yM=EjeBod+1v3cWbZ>p$W|JqJV%*7S~?~q z*x03CXZ8U>Dg6hUJ1FzlB45x@%uZ1J3S_>9zcQoXIK{n>koi~0mi{?D3K|>8E&l?j z-Z}2Fp9vZEm{P8Cee+619$CY;L|824w+($OW&Q<-`>qgqblle=g)Yx6^@>el!(UiX zp2E=aeF{>AUeODT8C;tc`UK+jZ6l{p1h?FGHIX8L)ESj9P+06)3jL~of!?UCK!QEW+wO&SdN)sGX(Oz zWE8XA=$ADUtOKHEf$h2(nlD411|@DL=bn0JrutQKQ){~Y@69_y@GN&OFrA~95J zyA9We3j$Dfk40);gN*AV3f+zB(BryalRB9HH#HP9j1KY1(td1}HrSv_s~t)iu9&uN z)SYB$z4=F!?ovy)E>C;f+bDJWjQRkjyG!m?(wAD&+bK=c-E-M*;CQu9$TmxKw^7$g z`~&%ml6Yi1*hpCf{EOcgoDDsm|X?)y@uzb|L3%=ELp577QObEr{EL!g;0a6ue0@ z3YQcInCI<5;Yyk3?LpxcB41UI*9~@2tBZ?*>Yw4ma8*}f3>xn04-@272QcysZ*>c? z@@nzDFn@J7u|Rbtc?W6=0bDg70L@)96ZyQF5I(&|?Jybh^SP|@d3ZpTsa7l!-lwQM zpvolHQw@+8>nZ5+{@&G;Puo5ZPr)>X{@W{^GZ3hz&d7?+%;E~Y|NU)qCzDjO4@G~^%JY8&^%p~SYd_Kbq#)g zg+<+5vP&svD!BmHx`wN0`ev(=qRuxjk|jg=i&X9``F4FklsRIR{3$5c_ry@iPPMiR zHi(itTcjg_nGaC+daH?q=^F}^X*3B|PX#pV9=pYuJwQL!mE_^l^kN;UxR_cUg4BlV zgoNk-SRdC9rP`pdR5nK^y2E0_wO$uCr(QYC8w@7t%%&pUdU|;^`!DI_N-=g9sd68d zDrm_yC>I4mV6If`GyG?%&?Xf0Jf)4L6|NZt<+U8FhNtxM zqAQA47j3~R!!yq)Dq05#4B#?kaa*e>*pSO7g;E9YGYGtuE>CGuk<@m9;485iTLtC9 zjCIT~mEf+a$53^-wp3EStnak3qIcyet&zqh*%>r+w z=}CKAy{*U1!sFQEb?3Qux$!P5*D-kQHvW-w=6_Cv4O9wE`1^>ZvfRg3GR#E?nZEJ$ zl)KF8^Jc|yv*cN`Y{V?_wwM)Zvp8kCM$DSEX3=relQK(2OxJOjmYSX{iY&>pO4^z8tu_|YNiUumzu(bK2w3=b_(v&$1jl9NO$adUm zdQgpFm^F)EH)r4zCLTBEtutqwH)ju<3sUC%VbiW}EkrEO*dItr-AO&_ZEIEibPnm+GZ)BCt-wxVCHHS^(E(Db6T+s)_-Fj(MiHO*(u;>+o2ovc?S!5XvR z7W7@S5CX2NMW1zX$!^sDzc?%W{(7<)`0qJ8h&ScQnZq!f(A)K5)6?oQy~oW<5l&Bw zStx_+B}j>OcVA_e0&~0P%`gkDHqDeNB7c=xfH}nbnz@;xSD7VfRm>yrYx{Q@+mK~! zC5*jg&IfIZXEW&1RalW_JoApAUJ%`776YK?i@K!DYAMPdEh^D;wOKoC7J2=qiE)RH z^L}czIJBx9T0Y3$WqL7uN6i(YgBDa$?H4#oIxMJgx5d!iveut@gB z6DdC*tS9^TM?=!Ic*kOBC50G#P@rFe5lLt={xF5Rdix#Rr|>J0L%3gu2rSToVV@lzs(DhJPWgJ%XZ(O_>N4(zq44S`rFqMu)*Y-wH_x^66;Y4@eTKPs)e{*kdq|4t7 zSJw8%(lFQD)464%k&Y#CQVJ*Ey8FTjdeCiT+_ad&U&K<@+X#tJ>T1dmig<<6v2-#T zS;B_Y@ndZ4@1d4n||C5F1&xCXTbEhh&3tu>v*P6V}+|ON3N6bi4P+P9YjjR%lNu z+%*ujcSg~l1k<+MVTJLZEgerwBWzxj5ebK)dxy|P4Mb$HKNe2K6C@_0!Ul3!TlL3! zlOgd&QNAxUorp?_J2@t3U~nk4Ph?_|J1`Ke!NGB&&9L`{ROKl!SU}y>vIjl8vCcZiLs5>x) z&-crooR;n}UYnMlXPxi18}s0vLZ9o-rsrGdzq9ED#&qYVJ=hf1=dH8leTF`_olP$^ z^!e^=I_^o!19pk4#IiGfq!S$A;K6$%AhN zoY_5{ef{l$Y$cENtpO)pKe=_%c|dDw@)-JIW`@U`tvutOCo>e8TT9?BvCd{|{xv!1 zVMW(xkG1?hMb~F%HT{o}nXcR;pu2IRTAzc}@}E=mBNYKn67bIz{fvYDSD?F$OuMk2 zOy9$w%b40vxKqJ$%Vz{AW~CC)U3g=+{(gsMECPKx|1Zx$->B?6&rod3As<%q`mR84 zK_?X5xtIMBMR)G4^Gqh|<=o)^Z;I}GYVd@jJ0C^7r0C8E8h@+pHv~jzR;U2|P|=-_ zUd}7J^Py0Qd-{0RgU)`a&pa#hMzf;p^SGLxt6%XnqYLxNgYyGg)PmEsBTwt`P3`)7 zJ6bp*>`a|cc#etk&VF)0(5KFCJmcizw+jLRZCb!Df<6Q7#WyQ5Vb@8duPD0n=l~x( zQr>x%gU6m`C|x`FKIj!jt#Kp}5M(rmNdJ^W{;Rlq_e0(}?_J0tUkG{n<80qrMR%T@ znJwtb2^-+!yK5}Piftx=+2XAd_vBCs~=hG@15;e@_K%V zs&e^kaytL{?6Mr!g)_=eC2o9%@|b7z^-GVtZ-{ti);X<8;VI>he&CIVc_Q&~Bkeo; z?YD(LB~uRdeqYg@X9izWbmuXocLiM)W&=M_@_*wv4fswD`Epc{Xd#xts2bUb&8a%~k=**k>%RQhl8 zlmU+ktpB*Fz|X66CsK=B;zmn27K?Y`My)^ApTZuu0~fdX77b4tQvKby&&7?fT{fF8 zbYMQ2O5+W;-3ERV1Gj=n+$)DtgZL6!JcfrDp-?0q>K%x8g$F_r+&?En;q+d-cW7{E zAexFsT2?MuwQ_nP+~&mkdE*w|hmukW{31sJ_jaL3dT?+bRBV{2RFiN_v__Q^vPt+7iSm?VF*A_6mhI-_U+dN2uf4O`#B?NE=q*~BTo1mk4WBl%M=`qyK!CHS*6*%Zgm!(c!q z@C78MmQcE7P5gpSc8O3@ z+jGce_T;#E77A^@W~1ukw!OP4HB;W$e%dEf#8S2Qo1w6pMoV(vAT|~OQwa(CbPijs z(ZrC^g7>LKTiQ2lY38Pw#ISGM(v|MVZ(a3Aj22>j{Elu*WM2&SB*bpB;OxQnG{2&2 zM?&CXIu27o<%R}QMvG{UmQ-{v@|-Whi;GU*675qnWM2fj8j~7wz)KCChvD#GKQ0Wt zaoEB~izq-ELvtA|n6$Y&EBz9cX$hyW(bkntVWMw|M7z?xuojN>X3+jv53W6m)zy`V z?$Maou~QrbaGJ~A?@Hnh1FywyrKtC}jw-@The3Va*5tX!;1qzRf6^TQhVOzXeZRmm zAGq9SrNzMP`mebIg8!P*pC_=)hf{wOSa?NMT>J0!1ca~`>og|qKb8j~>2-ucjcbv? z>cjG1@4q!E{WGeql)lq{MK<;$!}eE;UEiFf`g&hi|869YWHaghrS)_>{s26RXnp;{s=U?z7YseOuo1h;1PjjKD3^OKLg9IukY(0X_GpEjH<|KJx%@v zGNft$^?l}PrSFtyS@!fc5Ym*m#nSpaEsD%&eGNUxaQ@aw?_;-dVn^crnmswXlRO7v z7f|{8SIEp^2Tzx)$xR?QY2?+dloG8t%xF(e*=0HOue?fXl{ox&>Tk%Qzx_I?-)IjG zNKXB0mA*6nab8%E{!5PXwH-n|_JxA_@T!fKQ)>RY1oX}L)BQpBYwnxqzN1tHINd8T ap60hFU9P5anw(Dm))9Vl9@u3|_D>*5(Bpu+7N!*y9yrFvx7 z^!3;Gd-b(7-~HC}o$q{Sx#!+Hv)8*}wcTbD`ml@Tg0N7Yhe`5Nh?0YhD%ui}Av|KH zm?2U@Nx`3oIRxdIhRt@#(9o&m9Dt;ERPm46J-`U}5D-)NGY++f1W7M`c+{zaE`@5C zD{;~@=v3h%*FzX^4})L{1EHaoGs~-%d{HgsHGD-?NJFb0#RlP&$0kn#98vWa6bL$$ zUqmLoT&0(*^fY`;1wum|Pl^fsy{zoMZ1(^o+(SUD;?FoFSvoeq9c`fVV>OHddiX@c zR#l#cTJIX@as8y)Cw}U%Z&Bq<6c?f6qM#~XRJFG3xNKonYePkAOM7fr#jYinRa~~P zGSX2wpX*KbNp{Vqt?UbhRhuH8C*hB1#DB2X_11TPR{Qe$IeDoY-`Y2OZRv(G($#-B z{nW?jA(=mpblwDX_XPCWpp#DW5dvX6`x_>pUp4{#jtS`16VNwKKwmZi{lEnDJrmG( zPC&nO0{U~HyYZKNctIF1KG#k_&zyjsF#&z@1oVyx=r>M4Zw7t5_7%wMdP?KVL}N!N z*e)W`aC?1QNQ8pna7S2#V$ld_4K3}WG1$>48k>UAdJ<|?vJJ72XbZO0hjxp``qqv} zP_zYFTRZB7-(Mfy9SZt)_z8mv7!-|ngj=FP(HIK1v_~7s4wdEilNbI-G!TyZ+X7Tp zI2aUbHmqH-(m%g)fq7Q5&^(=Axd?hqZ5{1O&yO0~KlUH>z_>&T_fH#W)bI58P|(tn zMI+f^MSHOKVGJ`4@wmccr7alQ?c(o%(=l+hhartcdTb)XpoLCtu8(00U6)C`5er>S z1*}rC*~2gmpX8@L+!neXXNXsBq3fZY=+zcF&qGASvBW~Rj;9_AoyyjS&qCK@Kk+tO z=z8iSdYy%yP6Tyqx6mo~_0ephXK5l}$U@Jy(05trITrdp3*DOc_gLup7WqRKdVz)h zh=opLxIT_p=!KdHc+^5Kve1uN=*1TLh0_ZWxDbI05x5Y63laG57=d?lrhVw^I`8!L z7(cm62;YIesD1P`U)RgdmpB}wi+&37=)GjNeN*Epdjb8Sf;VmV`rY#_uGYmO4YZjE4!QCC-pw z{7(p{rOnXrM;9>)>+JC6>(=)7Z7%l+U;hgOa|rZbpN}{fuEP$%dxuE=rN+vf>HA?ph(pImu#oXB zqt9r;aUxNZxt=G&=s@G4mm1^3)Ly4p{xiQ~@WMw9U-z)@g~6+Qw$r}XKZ@p=7Sfc3 zWPK`s-?D$8-H2GhR$uqqgLfhbr;U@K*lu}gOnD@K?p_k~edhczXmvl=3I$*HH>tIJ z-4E3f==YAW>;2wg1qT%zQ1A@Hg9oV1ecj%pz8>$k&E6h@}-d2X2W|d|iDu7&-!hBjE1ui_JsMzrU1JVDyC(b71Zi<+1PJ zvJbHRG+2Y?>hgZiHdIAcy1cKTldy4$c(%2m*p)E#gfi8$^@#7_qBmgyu5x?_@A!kX z6xYw$e;y?b{Rkn(A)lkgw~m5fQ5d7#1;7DvT@P%v5@ml&(=qU3Yy??3wRViPVz| zwYRR2z8qZi4M>{p`1J2bM~_pA4E?oCEY!Py@O@4XDwtGzlxnxP?_4n|GJ*#Et~4_E zJoJ5F_zoJUh;+I4Ow85qeU?m~n+D-CC!WFisagu7PM$lV)a`w?-^;N_)%ry2Via_R zDyU~G6%n=inFf_E?{RzAUC)lPY_=(T2C^Zm?2kTV*_5ukj*FAb#5seb_3f8+8M?<+CeDudTzr?#+~b!@h%)4p2GL^UY{M zN@YPG>1jzEpjeh*C(LQ9edEETtLi}cUrY?cwE zh`gBdVBf^-OJ4MKzh<%rQL_PG_trD8e+KbaRQcGzdr^*N-}yUtf5 zI8qe_OKqSYC)BAmNuBUqpRErlEa4CJe4XmqjS`rx!b#>gQu!$OA4%#jbu@7P{BJoj zFt!zJ_yb`21jo7h#D#s?6e`FGjR(gr_YUVgFkyI95Xs?JD3GS)m^{$&PSOZx!Yx$2 zfA9^AU3}id^+Ux_de26r4_EG#tPsfBlBdLsur){A2(fG>ZVHx0AgNpcQc|AY;~m|1 z*QkiDk{m4viQk@)mMJz)^t=HPovwsRB=nIv9ru}VE$12UsF|i#7Z7&J1^^1?i#hub z%Ps(4bcw=u3FVl|2S_plFwUUF&>AYS*tv5QKAfTPF*{j=AWSX-=(dUc3vf0{joyPP z3Zt3rbpV9;w6FWSgExJ^v&Z<=;E6nEfA1%H4`1$opVRe|oqh-N!Y4ZoZz+Trdo%6q zE{C37K8lhs;hDK>X?V0FC4J7*h%I+h(~ONmP0kG`^h>ELyEbG6shx8p10TMjk+1!O=ik-Aq$E%DEc}CyF*2Ks^av!u!DT*q_G>w)I{+hk#v;oPNbE=PqRNHGg-x4|B>YFXxLSVi3im4Jy<656v z>g(@2L+gH(a{Vv7LYN$b?)*2JE-~*>gPqGu61BbdiC%5{4|p}4;MG9ftFymJ_R1=1 z@ye}7Mvm72#cM#v>v>d7jZ~iyFEp%oWaz7uvdKZG_^7~5Y$VD-m-8h}kg&%K+P^|I zxL+o=_}8#97^i)6K21@wePNVxQ&u(Sz$JwaRSgBVBy@j^BzM^U!8({vwqzMmURGv`RJWl%`6G<-$trTS2KV|0zyE7$241;P zjd=bA`7w~k)iPcFsw(RVED=q~m-ivQ_n>n7d?z6HcK>G*(oMw*$eK`l-WI2-QA3RF})QEI_61`ToiT9XN z|2I-Oxb+Yfu1Gs+-N9)8;12lC>>e+i=CoW$)jCLv@czMv=<;ead1GEmeU_Fb34{+qW&&U{TWevwoESx=GK{4Qh`v?1eMSVJF|3_3JF6cM_xc=>0=acxhebV^;dB6@q49J$=NXR^7v?nd1J4D(B8**{EsK7T zQegNVtgPbmYu9foZI%HQ|VjB&~B2;NaRdxYX{ChZg& zysb%_0m9IIGDnZfCgNg$CfDKIsORXy1~bhbxW$B3e5IrF)0>o^TVw(rgY*&A9?Qu^ z)#lTA{=hClj~D)NVQVFuZ3|`-tAB9Md6_}9Wn;;puhY1xtbGON<7Ev`xBY{!o`YyN zrNJO3PBk!&_^$L0##|td41JEO-qj{2UZxij9Yg=p%2<3#KG%{c#LEpSG>PPCyU3zr zC)&A12|CdXZMZ7-PW+Uw9Zr)IYW7!2@|p8T$TcPWw$;@78L2bJdYs=+y^!FPo?1V7Qx4*APO>9cXUn{Xd~f! z(P2(mgm-f*Z?)<-5~=Gsih=Zv&MYdov@HTltIC` zGv*RUrc;lz=YVXKe?+RT9AZy~DQySH4LufMa+6m32WQjy!L27Pr97xhIk?D+O=!|y zIo7>)k~)~+@lBFs_1LFveL9bO2jiXv^y>oy#m zopP}dTYU#B2wuD4lDFv|z~HZc4ht{*!4aKa^P`;U`;e|;L-&Upx<6Re{p;G%NpJeP zUb6Wv|JT?r=>EV>x76NTdrR%DwSMcKG4EGHk09SyFz+OgwF}3E2waH3g$P`Tz=a50 zh`|2~5wP)7m~l^5#=_xXd$e`8JK7u!2i+|ZcYBAswWB@go>MW$-4TkmbhKBdi;XRj zNK1Q@duO0E7IZgugcZv@I|6Q7V@qpLL>gMc0*|hSMWj8@78G0C!@>HFruLRQgAEpO z5$))3w*}gFy942-NL4#K(-w|?DRj{OcDFaD>m+qzbV2pf@V_X^cQU+Yy@>|kH zScR;8J1!+?(ujEdLR=L-0{9)kfJ*@10;~g^ghlQyz~z9C06v4|_;J82teejOt_B)FjTqNuQ{3aIYj{sI-p;$g<;d2%Kj=woNx*2*RJ9l+<$-113JDmH(Ri#(XT`+3~ z36iZ={GEpGy{NOO&Cb2szA`J-aUcanGM}#MtA92+dNZKOx8Fc)=06E?EBJG*{2;TL z|0?J^!7sJ)x5oMBK@WjH-O9f)&d-GZ9UsG=2Yx&Fc;F@O-<@&&4d5RH|I1ds{V^8c z`h%Z$c64;Am0uUvzYqLu@F%L@li-(tzsss`kC^sf1wRCSR|0>J$v+SNKZ8#{BH0kir;zg9{~S%3HIMJ?Pp?8YsDD- z?F9bICVw9Ig&4bcBah7ZIihwFSOwAs@Ix4@gQUMYJNM7+-t3akIlS5KgDKwZ^7{;5 zcJf%U5K(S7ev0$j)7n?c{OyLD+c&b^tCM7b0*W0v951 zAp(D71UBb;SktW_O#cs+ck-wCTLmpHv2$;T!S13X&D2R(#G2d^~&or+KM zJRO?<{zs!7j5|C8Y+41jnlq;5~GClqhI@7mP@l(&d3Wo^;UE zM8|-tpkCjr<-XAGhPl%`ET`#xsS?+IZ)dI$E(LY@AC1cT>{If%pTYIh@x&zx;~NxT zssEP&{a$&p1DC1xUajEu3N|XZQ^C6xd|1K96?{g)(+YlH!FLq=K*7{J4;Nje;Kd4F zrr>G?uUD{9LG7>3hneakS<`hpX?jJly@7Z-pVzEhd4;_^{=`^om87hy>XMQugxd`STZ8WkIi)e+lO`T?bMJT2njAwjfYrewV^y z%6IZDSw{0T93vB2A~a7!ovW%Wqp7|=sWMn^lP`3zKXcbyeS?_m1&YgDc}O~Ui<|`7 zrFb2<{x*MoYar4rL_q>?ZhfOa6z+%y>uEcPDs8@N$@VVgSBLBB{I%C!>)mqQ+N(ER z3w=FyC|_1z4bJLqVw6lL`IAQd)?DAQ&5I}`X8S1{srjJgfoi^EDrKeb;b5S(rHMC` z#*60>)gFJN;Dvb3{o~__JlAp5a7@f0qvw$#)&Iwn(R0goHOGu6b4;}vy(>e<7#Z{z zdYy)jt;){-&Gx1I{EzgP3Hk!}!%x$flKTrO{-^dAw4IKlhGSy>DP?rqmwikQ=(Z24 zwws6g$+??K6+*W=@0Bqn@k7ezA|z6Npvc1l?PlP{lm7#nMaplQD&-HE18AZ=T??l$ z$!S}QF()$zAAKN<=a}8*d>m}MJ#9VeU{6VVi7;mxJ+NW7r51 zyKW`1D;cSF-9enCj4W{#5oZ}A9@mG2co^}y9w(%hkvFjWxhAIx$UUxFLbhey4zWY7?~=|<#bJO)T=x)i^W?h#j<_laxrN<1>Utc) zDYv@r0yyTnk~seKULeO^4-m4Qed}|j60*bD1@N*+p{dG9n@kU>rdMP9NVzmSgTBTm z)wvo1sZL^KQd5#&Su1ct)a5`jXy-1~*+!=a_;eROS(eIU*#eRM46(YiA7cq>?CeWW zOzOQ%$$pQ_^~iHtg{PHfQd4IB7=qu!UyexoHf!ET%pa1v6Y6PYrNqtM52|yzJ?9TB zLm87zYh%}}Y(B@SaLs3n**Oq#Etcn#V8V4JpXaR#2zPo~Zj?wrflRuS+g;?-+AQ70 zh|{$Z-6}nu!aEd0XaJQ z5Q3t&$=@0$Ma$7Uu%~D-;qzToH%IRydyB3le;09gwD+zm2}OnNvP@Z<<9myK2{X3E z8Pqn8-a~tfju5^?;rHwn#cK*ZAmL^Ze+uyq$}FL;h_UTun~vV2d&T6a8aDq#Ny$tfKE-(GftWcS5@L>r zyMUPE;mttI@sOJGQ;diEA@=Vb4-Y}d91kminB$=bNYZ#{&j;-j$3tp29uIj_{Nu+% zlI8J`WdE4)&;z}(&(p_NcUT5ldmPy@a zG5I|zX;0SA%RDSM!<0Tm(&W~jnUr&=bm13RwnC!YMM(;k6ia25J~2hEaVdCJR4 zjSwxPTg`~3v=mz?E%~_iJIxxDl2jS-_yh4IdsBAe!`8|zc#A4=iCN-}7_wztT6GIf zYJs?$(t_G=1r6n25q_M1u_*>C`_Lq{QA_NP4R^e7jqNf`e%Um+CSN5`A)8z?Rp-Q%OG$Yp`*cbfm}?sNzG+~kYNci|g&t$D zEoY4{Dh<9n4K3T@A}oMpEtcydIVqQ$B^InC{c6sOKNNeotS_4-?l<+T3#H3G*_CT_ zx)lwO{(K$PqD54J1q!VzqHbVYsDw9*sWFl+Pd%kdy2>o+mu5-jIs*%N&?uj-G6jwY zpj&0l`b*MDj}}9mpmVhwNP5zmauF3j(@9zUm@0C*S>$Xi2xM?(7OD0SQ}&XB(>a{` z#%SDNYD_m9VCpf_C`)Zr(t11DcKCoPU1my`)R9NUsY{h~ym7y7N*C*<64OdZIxkhP zP-vE#LZWrQgIxTjtfNN^8^D=U$530#mjXOZUu-HNLaPdbe zb78TAAWVGmM+=z$?-x7!QArmrB-f(*$bp0}B-3YQQ-;u9g-D;D>7jGFkW61J&nH1V z{YpNcl$KHtc1D%$Ef5PAV2~2F!aB@`!d^InE+MQ=PEouUh%GynTEpd_7wG6H=7m&_qS6a=bYzlHDaMg3T6048 zJ1~baB^@M};}xy@1+tjWBc;nhZ}QT?y4P#nOi?_9bK9iU)vQbJ($Y~(^OCJl>C#KI zbd==cGVO5^}YQUWB@IOPS z^mBB2X0p6)9obWAW9duo2ieg(yr-0}W6vxmT}SWvJ*9k6d}fX059}%3!ur=r{LG%R zKc|v^lu9d3x(+U@A^goWD$CxxeM$st+5vf$*8B9{vd>aQf1>cO?JZkO(mz%BQ+vy} zS$?MQC-+W?26hPBS%rUfZy7hx+X{bTZ`rp}?)#=Dy zG5xbtsV`>jR%OL!ynaZQewDeCWx$(DzsTrZ6@M{(DYft6ERRyA6sE&=cm^2LLexHo zr^^*VT`4cH56@NWv$8W((Z4eN_T6Vb;YT0Ghau=!Y*R^EB2l7ab45vD&h^h2AlC940z~ryo z^oc8PEa>U59X`lKP?Oh{nEmRvtZ@-}PyLFUe48#rHu;T-O@5QvsjO?vQ1ftcO{EU?^yi4ZDeH4enIC;)$J20Uds<@yg0o2l zr@54sH(e@Yg}|<-u&>R!Nh!y#<`zL&mb{h|8*4~0-9^%?v#wOqZVC_%+u^WT)aqH% zcC*a3)oMA4qJBq}T#=PGrjk!nQU6A@SYcL@>%3x~ndcV~dvVt1@O@}>bnz#ZT!Mw% zw8nN+aVbhoEJV#>)+ZAaZ7_|4^EZj6g*yeEJ-Z_n^ zSOc4>(2c@MHTpckug1s0yHE*_g9m}i@vU6A3(F3Zld z<)`Ih%hWzgWMnJ{38|}2k!2}G!jXMN#+4bDXRIy2u1*ewFuM~VJndpZz*%5(WM^bZ zIU5MBEQ{I_Xr#yOV16$Ecj;tIls4Pi0+P?V2zII!-Gb0)7XpsIUH9$qn-TqrawCEH7|Piu9B2*nu) zTYee|mw;zlCf;PpgQw$#HePv(mJTl>of41qe_d#kp=}N~B^FB*=P8L+bbEhZw)fOTuC%0h)5hZ=PyTx} z@7S(3DaE!tgL-_thZmNkyG+5DQ^Y6eZN=99a@Az&6(t2WYX?QsSvz22<0W^$GOIZ< zHYGVrl3Gx=uj5$9O-;>QAF z^-=%owHv%3U_OqY(GL`KfQW{U?2hzJ=5|t)m?Ko|aO#FBO-XQbWcZ7qI*$@E4 z943qk;j-&Hd5$?Y!{t2Fh2w6+cnar}jLevk{ z3yh5QHyQZLwBE?* zGO}-EBzGL7nmKvQaa9|+WXHAMNUMftRYr#6<~k!CHXRvH8ZJkf+i;#R(v}*FsNi+R zB?O%LhVu?1?L?E2O}?gWkZwhdw3wz4tGvK4ju>e#7`ZVc|2-qk*=*!~+sMBk<$MRC z2muwHwxLO%7?a3)qhZ`_6zw$9-ZhE{hgsA|o-GEjKWaGk!^Ynmc`+mHQ6sa-aGfxw zlfXJ-A%RDYG}I2{M~#_;*BMJpa(2^B!*-+Hj)eV7q=8-hn6h@l6#gR<_S2=XK*FE^ znWtuQB2jhD{*ieKHD$S(dVnzIAszL`pd;626uxWZoiwse7&%==7IFrG%#0egE~99f zk#W*+a4y>_E~qim-!%%ljN+(~zRt*8Phx41 zj2V+XhU=tJ`jp}BBv#3KBfZm@6f>&cH5{GJUL)(IQT&vV`6Ss(KWW(38}1sT?4(iH zN!lefs@U04GElIT3ZGp~r4@A=Gor@SPQzGgTq@hyfm(IKtdaS)k&jQ9c*>Zy+{k~| znAT~`jT*B%4d+tB=ryvNj7gnFcBhf{10#==qsA-(of3nq@31ReQc2V>I*rm^IvCxJB@N_dWJOZB(T)Dc$<+OH438?=;^;VY!@5z z7ErnyQKPggZWoctdiURHI(r-2?KE@*p?;5tZjp@q`$4O_*KpsrHikeW#zfI!#T6_w(t~S+`z?-$w zaJ_3}JcXgcKq)9J4I_+k!pOXWTA_rZQD+p$prqYwI4~qYz_y;d=aU$e?P4;`DE~Fx zbHW+sKe5yD{4wz)gPzU5gCi#(f%J0O^_7pK#AY~88kA~|N+VqcmoqNPIc;CZxoNl0 z%BS%W$;OdiN29jkJZr2bjdeyATHIM+TwMJhGPWYY*kTxa&zL=)XZaw)vm64-GiMif z8^<;yldNDmB7hDfMX9&4X!&}hxD%6^+b}SuAaUk^gQ_QL(VT(;Of5`x>311U3{Bm} zWwn%`X&8OFkeZJgE+pyFZ8R%6swojKGHR;0H=uhjMt4BJ__k5L%>!c>8v^ffo;xh2t1}^M+p7n1WlF>N1pp6 z`YVRPZN_{@MkV=|hc!bN4M3Nyr)5IUStF~C`bxnShHa*?xXQ?Sk1F6;kG|YQ{d;u{ zk0#E_^%%>m;Z&6|zed&6(Z#rj+$HIYjH(*L@d0~_`8w|HHq%?>2B@gl=((6 zMwYX*u;G;o=H6a1<9v*Ue_pjh*LOj;j%KgdYP>)nhWq_{>HaFmg?D>|RGh zox|a31jTT&h{K5n2Ra9Ti#m-8jLnV4NFh%|SEqi%X)GJ-D^@JHph z4Uh)^&XqqDg??jepeZ81l7L^|XNx;xjs6`0{92YDc6YXf@f5rMngD^HzzW|M3`Yci zxd9B|$FRb|h#xwvi^s|v*mPBMM_aI}ts@+24#px?k=TxyzctX_z-OR0#9D(@`o#qK z)d~8CxbTe%P4u-2P3%4WMAvQPfR?td$o=)PFqX`%v9@-BIPIhlY+Cv|S{wWwjg66D zlz!FDy|ShTPyc`X>k00PwrH$9xU4CN(6-bA4TS5Pm&qT~b5}GqHSBO#U|F@SsXYdB z6^)zMt`xEM2p*!xOA+_u2J#_1L z$~bV6$olQXoeF$Yg=#DQRtzeXlbR(g*Gv=y{5O+PW-N;Ah)KJYDJT|!^4BBe4FP{} zR|q*LK2xxUT^5Y` z0K8-+878z{TT6Q&iXW{b!|e^Xqa&LcO3A7VrT*ksAtu>2JlsUNZ?5e@lfPky6a3Cy zQ?!}Hc67wZXnXJuSsp-=x8Nj{sBAc`GkZzLI9x}`lu!Xsu0{oCstP? zY}#}Z*QyZ`p#VsoD568Zo2M_E{WNT$_o*Jvp(DoyUX5vN#E{XT1E(b@AW`_Far({> ze`7;Lv_$-xwj)6VjQH1H8wmyK@tc11Z74J}Qg6Gqwd0N; zjh)x-YG`R{Fr@0 zHVeZWIrPJW?PzO64VA_TWTbamoqxa(Jb}?Y5|m%?BD?$AYeTX2`lvNfAKw?VQn9lw(!_Z0KRR&JdSB{z_FbZHTza~2r;R6%ea77J=$XPjE4U=iyGxc=GvpWN18kf%(2{qMb=%y!SO7qR{*u%tU#- zNwj%9`^Dn;xbzZ1zY~;vI0S8Jk3AgpcJJ+;F${+&8$%<4gTIAiEXyJEGj)kPhnSW~ zP?$sL$IRkv+O$a#zZs2FO;_AK+=NzLCl0X?AT`rSY+zgyAuyKS2O5KhJ`_Xy~A zyz!{tQ`7QaQuKj5k0vqvrlRZjur>4VabgqkcAUr|c&`lUp}|e4~=rm)!bh;~k2geAn`BMNhtc`mmxW-^1ni zs!-qL8^hmH^2v9bUs3erd)9Ag`)(Px%T)A!uIR~k*GCjR`Hp`+_97|%$qyS$SM=oP z87@}zp+`Q)d5XEI$WTfidF^YHBf`f)L&2OrBOkf+C`-H=Znhqp{1 z-@x=Nk^IDdSkaU7ke;+9|C67+z8myBi{JY6JOYBzVa!2K{p7;W^%FwCb08oh}(F6{!rOZelYweik|$uH$DAK@kxFR`TYsXrAL9s zE7v)JKT{{5F9n_AncVJcSw2f7KjmLHfgO4npZrhm?|(XhJUuEtp8sD0-95Is#NUCQ zXU`GNYEJ@}ehXndJFk;Gy%DYCf$}lH^kShOXUtOcVYY+uN4;Qnv!c^;K2)#dwgA9Cl~XqxW;3l3bB^tF;43B08lQQ#|Em8fR^C3k~eoyEL zrYoZs@C7BG{I<^DP9XoRl23kH;q(OZZz%cXcMi@fdh+`>=O(a2U*?r(A3M%u;N~#p zL-G@=C7|aaZu&u7J>Je#^2twcR#Cb3vDXC^Y^PY9+3ew{>2_Jkb}WHZr#G|wSo){A zS&zFT=6~G8yli1reK=ZE*&!+e?d=`71joKaOBDAulW^V%Gih`o-BOP|9P9*HWfSSF z1M`t+48I6kFB-5N(S*z3VAvmR!3gt;cMWSO~mdk+f}~FRRr)i?-%B_g%Dr-Zn5LG$CSA681R=;jJERfVN92(ISCX zeC0?WQdwhevha?}L|YKnt9Wx8Mt+B^+Fi05t;WV=V+AKk$F=b+0dY*`#A%!fe*fw% zwHv*D@1|9LKiY?Em~Db>lvUd{)o#RIZvqDyg*|q^AG^zbuTNReZ{S^HgdZrN`Ms(@~$TQz&_6yuHFGu z8<3D!+op}!4ysQSr>Zo>lB%L2!|}v!XG>BM=!V#O#@-W!n`&a&a)rGyk|M1#7#? z72aR-`*%blDuR5^0RBL9j>EAg$=!OGedYb$8WSz@@aQ@JD7(%Mkb(jY1cYo@Pvs%+TZ4to;fo*8p? z;uaWvyOS01gNKGA_Xa|heBz&0)sP|uwD#DZ`t9t#S$un_+C(lj&m+c;4 z_#P3Z?`ACif#qnzQ3K4Xf7b3{{#m6zi?R4evi>Tt@HN;S+JC+8>%?^s9ol~^tN76C zCWVSkIKgVm^uOHUVOF`)uTzGxoZ>iXeXPLwxE`M*s>|2=$oo`*uSzlVGdX^@fS_9=ad;Td;Osch{(3*qBV{83D`exK6s zQ~KM%qa!(fy8ipYBmEU5gu|WYQILW8{e`5D-43&St(LE_>ZSGFO5d&Y`Mb<53W}`FiwBeR^>tE6Z9cqBPFoJGuStJ_6KnZ;AHJ?!O6coI zEuZZF5v8x=udhq_3);b>?@h8E$?bO(OcK%h$7(z*evCR6j@Bgof_4c#o9WmZXq`ivI({ CS_PE= literal 0 HcmV?d00001 diff --git a/tool/bin/tranche-target b/tool/bin/tranche-target new file mode 100755 index 0000000000000000000000000000000000000000..e9fd5ff3fd1ba8e2e3cbf264d7958c96738b498d GIT binary patch literal 37616 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