From 7ca6077d0e1dbac1602123b5e6fbfbbe83f07eaf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Dubard?= <loic.dubard@ensiie.fr> Date: Fri, 9 Nov 2018 20:57:00 +0100 Subject: [PATCH] tableau en couleur --- .gitignore | 1 + Makefile | 6 +++++- obj/affichage.o | Bin 2288 -> 9776 bytes obj/main.o | Bin 1872 -> 6912 bytes obj/tableau.o | Bin 2728 -> 8616 bytes src/affichage.c | 55 +++++++++++++++++++++++++++++++++++++++++------- src/affichage.h | 13 ++++++++++-- src/couleur.h | 54 +++++++++++++++++++++++++++++++++++++++++++++++ src/main.c | 8 ++++--- stackchess | Bin 17192 -> 24464 bytes 10 files changed, 123 insertions(+), 14 deletions(-) create mode 100644 src/couleur.h diff --git a/.gitignore b/.gitignore index cba7efc..4d37d30 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ a.out +obj/* diff --git a/Makefile b/Makefile index d7a105c..fb67bf3 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -CC=gcc -Wall -Wextra -ansi +CC=gcc -Wall -Wextra -ansi -g -std=c99 stackchess : main.o tableau.o affichage.o cd obj && $(CC) $^ -o ../$@ @@ -6,6 +6,10 @@ stackchess : main.o tableau.o affichage.o main.o : src/main.c $(CC) -c $< -o ./obj/$@ + +affichage.o : src/affichage.c src/couleur.h + $(CC) -c $< -o ./obj/$@ + %.o: src/%.c src/%.h $(CC) -c $< -o obj/$@ diff --git a/obj/affichage.o b/obj/affichage.o index e86c05005ee87b10d46e42d89b070b9fa69fc406..03ac6e4ac6746c821f36950b76d322066814e47e 100644 GIT binary patch literal 9776 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 literal 2288 zcmb_c&rcIk5T0cf5R0H<VuHqA{DII7auGC=0xsP{BM~7Uo26`Rqb;PnHE3!yY1A}@ z1W$V9Kk(>DF-FnEsPX1iF)4wINe_)_QfIbr=(1fBW1P)<Z{GL5nR##Ky}hr7$D1Sx zSR@#R`ixP4=X>jV&{l)c4nCOH@;|lQmS4-?E9NunYiflSH@2`_Q%j_8_GwF(NO?hB zk-CDqo-0a2YANFrYc`xyOHx5CT~ybzAJ^0}F*hFD^osUOTk3jCh*nUGn)F30Kw-M9 zMZapVzsvS~(Dw0g)jHe|Z!=g>|K5d`f7jq4r<QSRW!zfFVzOGT?%Z|-*DCf}E3Szg zY@TiK!so7J+FteIS;VQ?Jo{<+!<*hf0D2+o_e1ui30Z*9*w_XCnajpZLQnYzl>wzc zFw|31&_x&J1Vy?#3DQER)a`3&UB&_)LyQ{9RVwJnfzC%wW9`jySVD@8dv!$J1HY<X zYqICf0Fd$X5*a;ti42a*<RHk<;+WM{8NBx^Lvx)Zw00a1IreFv9kC<WIt9l$P#L`N zfnD(PyWqiH@X#(e=&@KL8rN?aN>u0uL_*<-(UEXuVto9XIu)5384arum`^8CRt)Ad zmI;PwMQ$f%4KU}DNy8!#oumOyV;qtuY?R#!UPO{}1fozS_G4pwj6f9T*Jk*<ghG5D zHs&unaLO^`PX*3?Xe3#w4GnQWJMaUjv!8DQXFpuo9}d2A|G!=QHZkXm>)!tfy4Wb} zpX2rj+?}6c2i}2p%=eQM6!ODowE@MvleF|1P)sXb8{@2{ja#~684DIDv$~~&GGm&c zq~~grC{;3rYpFTQP(oLx1E!@%Zz6%rjCdrL){}-E<3DtM^g&1C{IbiSQ24ztF4DkL z=thll72HN@%6st(hzkR%2dVsWj|%=NfxG`0Puzh7-wpQ(pZ{u4?}2>os2$EZzWZO` zjz1*q`*C#2iXa|$f~d1SkE0IENqxx#C+NYwE-?50SB3qc%bxSk@FXf;_3IbEWUdp{ zk8IhVaSG#(jS!SY{0CyBx4I9T+nz9Y?GS<m0Z!1wA;R4@au78ydrj<L-)7bnxBVX$ CJ~Ea7 diff --git a/obj/main.o b/obj/main.o index 83f308b5febfbd49ff1ad342670fcc623cd4076c..74d76029f69338a80620f4437b9ae73dffa108d1 100644 GIT binary patch literal 6912 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 delta 439 zcmZoLyTCU=LtKD`0S+9%EC&W&2A+xb!4n@?F#1iF=JFKk1c^KH3A8ae^Rh9u@UU}C zJ}4?Rc>-4*BRh~KI$4EVYBC?U(Bu!2ER)Z0^DuT!zR6wB=sEczxA^1&9uHZDywsAC z{L0iKumubZrcfGWH}~YbJmS1OK-QoC5D+q%kyqR!21yMsl58%LI3JRD9g;XdlKA8w zB0-a9il$G#Aj&>TOabUNMKN<h24;xz2~b^JlQYHi8BYRzBR+Y9m<E*fK}>`7BuK^N zMk(RR24Vt}8^l>Avq*|Cone?9C8@^fG}%#Hobe@C8&H}td@`fBIMWA)$+v)#L6aTD z#6>4SZIXc51f)48>q=>hYA`~C8lW^ckjptaS4x|61rtOjX!1fSbIuh|6B2<gmj?hb CCTko3 diff --git a/obj/tableau.o b/obj/tableau.o index 1937f871456d0a771a097810b4fefb0042dba670..b62cc85da7d295b0582d0ad5ee5b138195cc5bb1 100644 GIT binary patch literal 8616 zcmbVReQaCR6~E8UOJ3r9ICh$^md%4PT8-FgDWNG%n>4s}(u`)M*~0jEaqO4G)OpVA z=h8AdI?@8c>u991!4$E=Hq@;`+J=O>v5CN13etuU1C4EHDu}U+L>kioMI*q@x%XVh zxtM>rYTrG--#zEtbI-l+z4M$q!hJhjn#N?)*jBcTB+J;THOq1*7du%U^Rt1-)IY9^ zOfIaQI`mpD{95FJ$kP|xk*V`@s1unAUpOCLKylvAkLCszBC(eu$0}dpI=O)hkz;FW zmu=kV!`ym4lnXC_!((;lgktzYM0+ukW4VDjbnx^WZp7ztkWGf?v|M=Z>hNo~KR+2> z0C@rBdm}lpnmoJqhMRtmp+=?-EdsR|IXYW&Vz%aqS%uCqA|@9CpgR|t%3gTN3;yML zgf+%I<poD`ksNl5k*R(|zyXlG$DbFoNiSS+6Zdg+HrpXI87u`dgdV{Sitk7<N8b1x z@8nYh6V2;qaJhN^UR=?9B^biIly#KBAIvnT1TvL<^L%&-9n6Q%hZnifnhP(j$nu=b z@?t@j$@gS<5mLK&b@<KOpPLLXfxLwB<I?LTpW;l$R$%iAUo82BICtobm0(27;0Lgh z%LSKS*D~Ou>(z#Kpxj0o4!AXgcP@cSh%6N(I0yG7dct<VfFth1{oSTpU_{8rR->#N zrN%V$ZjIY=Kd+X&XS9J5pQ7abvKWjL_@F$8vKU$7z$?Iq95f2>5eESQKIUL;IeIB! z8b_@HX##B$$R$vxKqUf21kwfS7pPRAL4gddJ_F$n2~?rg9RxHcP^HGhpAg6^kRy;! ztNJFybU>hb&9@WKVSyU7ngKv}3e>0>cYx1Hf!1g>_W`;`pi8xyL!fzFpcbus3eW=r z1qC`OP)MLt0<{YC3xPIh6)j+QMxZN1oU;O5sTudfd}mn&Xt0tWR`XqIEIDc5vPF^~ z<|!cX2+siR(xW^9URG*s1?^Jf0r26$Eyp!f;+aAg_nWgnm8_pt;ZQYRO15bi;eY_0 zg`i7-8dTHoZo<?H`JMuKipzyZv9zMWa5KhN;w|+UtpNB+N-OyRAy8Ez21<=3a18$- zR&V`wX=#+!8aL%FeO#F_e1tJ=3qQ~(p27<>ZRS^?Tg$~Q^(ech2YuIq>cuf2UDJF0 z38ro3`EpGs{kH%p7b9bkqBCFsiGr(`pe;YaI&=w5n|T{XeG^P;^P#qDdJNthIIyk^ z?;F{MNYG|_;UR$f>sAT<!BtYHg9N{obeMLz2kpV1-x&w>U?rx-H9aI_3FKqhL3Y~A z3GyANBi}ymDsYi-)nAXA+QmF+7-<8?%_}11$wIZ6v*fMWj~Q6jU!}*;jvDs?vNrQB z>95M`H=>Sa7?^n3PLrU`;650u(U)tw5BH&h_Tfg{hYH$<K@qgaBX+MJ9M)==R{K5f z>ebb?ny<_Y5xDA^yLz+dYEQeT#}ALTFEWp3D`>zuCJ|1WUIQ#_D0Zk-=GWZS9*;27 zfH0~Gylev1aw2qei$ulpJaF@9T8|&?D!;&b{2>^w@`HmdO>oz26rQ-@wkD)%h~gm% z${W<SHOaUyYr@5JHhzD56Z)*x3u19WB7Hy@a*0Uz!Ql#`Zl${({|bkzJdigZ+<o<h zfuN&?;&wj}fixB$g)m{`F2~K|8_MrwF5#u{U6v<7cne;AF7^aSn)X3;6<m332CSAz z$5<$vNr#e&;m~L-7CNx0&1~D)l1$jy11+O=Hnb^}uw%(=+!A^OKB+gHa55`Y7;~b- zNh_KS#<2LyIPthO5*)+Gor4or21GcZFmECyM9|<O9B64d#>+-sW94GKu!Ls4{� zu}gP5dSghhJgzqygSz)l-P57#j$X}NCGL=3i=8o|ufhH~y#c$7u0yBw>Z_o09oF3f zRoty>yKdDzle)iG*QVE_<O8W=gI@ox?*Fr1_n2Pm=v9-t_SiPP{7Jp^H+p5CUhe3X zS>5-T-t6c#y}F*&E1%RW#&qra^{AwWbkDC*N&5yEy@k<wLKt8@h7!`7u!8{0uzyGd zczQ*E-;n{9--XtEMc{$kZQ*NhpC*+fy7pU_8}`-g*=-JIM@-9(v)EWPVOz{hCF5pl zWF%ub%$!IhfdQpVbic*5GGnQ<6Tku{leo<?K}YI>)~)G;W0@09nwcZX=xBz)aS6%2 ziE&3b+i)}kUdN;9eO5Zd*|ZgnbN4&19SC%{w+A)_Hw0S)E#pqswmL>F+e#;50Hf*H zSO*-rmbQ(7meD{<)XpRVEpQMzV(snBPFdMF9vmy3X33O28sHZU)=Z{i`vk{fESolC zsbqHC=JRhb*PFu5<akF<U)Y>TW+A$X6dcpB)VLM8HL)*gg?9Gr4P~5YY@cmqMDVE0 z;uhvA&9V^DsBOgqkj^yAq{hb~kA;+N9e{8kSu|(DHkXZfY%nHr!%UuSNEtT}*%isl z+S!a1-@tjEJWRUSn|uW5j7MRLIn9Y^d_6O<14Hbt5Zy-6T?q-y?uQ#t<Y|Q;3|P#M zN5#ZVZ`+8wj}rF$^vL^=r7eDZz-SmUm7Ne<jyJ5$Y|C*{2O(ABj6f*kDR^4o416Vg zfmX&b_a~6v&(BZcDdT66Yl-7I0*SX%kSv}kaR{t&u^ljFD!U@z0L32TiGauxcEU+S zlZi~!Nu+GXc6N7f4y?V#8csxQaSU79*9k$?4ER{QZ4c89c(v7)WyW!MRt12QpQfil zW?j|ZyIkE>rQu1p>tRr$@lG6r#^1(LXV3EZ5Fe#dNRIa{j~}LSUQ5VvR~J{n`A^dL z5cc`;8}j3`$V20GksOZ;{{i4Hz<+GKFq7l19}5LBRP+idfG>#ud|Yf09y7&gc$OEG z8wDC}`u-}Qxaem5dr76i3$Im+@GD<-Qo${%bqVvmn|<P2kB_-Uah=zbf?Jf+66Sli zD9`g41t>b0uOJWni~!dR|9Q;{ePL?_P>jC{c=RLfWmVTn{4>yFlhxr)kWv3noMlYb zpu350qOBRC@vlQ)Y~CA5{~+nhx_X%SM~LU=27N6*^Of7n+}XE#dsm;id&iFJ!h6lV zUEAS7%f_QgxEopirl-fIyou$rbtG+B^k~UHL~u5SMGiKo1o*BjeJt8nIQvQdU!TIa z&^pi$=0W-yE8y|FLGt$%@K6or`S}7KKOCg~m#Hd2|Al_KKZTbc5BPm4Wf1cx75Q@b zk6(@0<i1OOh_j5zj~B^bM)AqKA*2wvh1_4%FT9I_<WKt9LRj{aZy;ygivAv&w^!j` zApWZge>d@i3O`D`sqh;Jk1PDY38xjli{kvY!e2%F359>1=6z7%yNG{O;jbtBxWYe8 z`m+jugzz5~K1cEVRpEa|e*UTOy9mFl@axEri|pin!E28<ufh|}KBw@%BtMrc{LRE~ zR`^TFQAFXtMf}$kzK8t875*&oX@x&T{9%R1dlK9C6n;_AY)0W9AwNG?_#Y8Iqww-M z@~pzkbN{l!FA#o1;r~nc9fkiN;g1wvqc|(6m-}cCZdUlCgx4y(T#r2O($6C4ZBz75 zP#k><j~|TKu2=X!5FSzZi%I`cg|8$2w89@C{*1!U5k9BzC8Yn7!rO%ZuJErDep}&R z7RzEXA2L6GBmP50{{`a9skD*$GLCwMmlek)3ZJ3)uTuD@XufWR|2)mxukb_U=Vpa> z$d5%lsv#xc<F_mN{iOet!VePvtl~%33G<46FU9k|qA%-^W_&S1lkr?h`n!mi`TPsb zyGPNNb<R;mzlQYhS9qD9lZu~bL>TOxqW>WIc~Q}q_1JrgzMIx5OINura?dtXNh{YS z^DN)>$QM?<vNluwoFj)SA0QsXrqDTajl#?L;|eeHa75u{o`0h7av#qsygUzYD!e>z zESNbs4mBh6PFnP1Qc7FNXwbor=3qSPL|JecKD&dQja$RnQ8QtWq+pE8(c$5=wSUEM zG##}^t(7M5Yn3HUU>+8X;deTGE(h(DV+G+y2>49_K3vI>HD->aqvIAu|Jl0$nBpGE z{gs|NNl<@~L*2r*8bAsB?<^z{`vmbS@mL3<t*qVP=R@AU1Xtwcu@o$0_ZA)wNs?{> z<Ub^$&(CV#R>UXzm-F`)9`+)->wzn_{ziJyFVd$Vt{+{g>)&3)Cs6EVvdbw6S0KZ` zJgFSon^=THYZYDos_OQ`NU`|6xUtZrJ;sl*tMMm*Q+)!(?xXqNRt6Qw;-Fh>{!W@- zo)erOpFQgQS>Vv8j1xrO4thlIQx1llU-pMVt(bkTTG(GCy8Knz$$pCL^9m%KB72pW zc9MSx1mx7?p0`&F<ocyO*8RouH%R$AMT(d|{9~K6mw7EVH=3N{f0<)U)@OJ-;~)7{ kd)#Iv#lSH3B2EZxpXl;eWjXx&u$aC4@k+)o9jNyI2l<pu>Hq)$ delta 418 zcmZ4Cyh3z>rWiW|95{ek4h%dD+#Bt^nI?Dh$!=cGSI@}EHhH6r=wurKsmW>rLYp55 z<S;UFP4*QMm*fKK`12nEUP8@b0n%KPYk{)dNU|A>5NVJs|KznmSw1A$*GRGglkW<N ztMDVqIx`{ZMG~JJA$@CdqfGkb12XKBU&urVo?wM2yaAyYI41|nPUkcP@<8SrOfHla zXOx}1kzaW79eEyBE0Fl)hy22f%O^L=s!RDp)j@3o@*rRZ(_}$evB@(O1a!TCA|M|) zKxE+L0yYS91yqC+NV8AAs-Ppl3=!D?^&r<|L3#1X8j2E}5m2{ggWVIOsKV(1jfzOH Ih>R=`03zIAJpcdz diff --git a/src/affichage.c b/src/affichage.c index cb96d5f..7f8a9d3 100644 --- a/src/affichage.c +++ b/src/affichage.c @@ -1,26 +1,65 @@ #include<stdio.h> #include"tableau.h" +#include"affichage.h" +#include"couleur.h" /*affichage.c*/ void affiche(pile** tableau, int N) { - int i,j,h; + clrscr(); + int i,j; + printf(" "); + for(i=0 ; i<N ; i++){ + printf(" %c ",'a'+i); + } + printf("\n"); for (i=0 ; i<N ; i++){ - for (h=0 ; h<N ; h++){ + printf(" "); + for (j=0 ; j<N ; j++){ printf("+--"); - - if (h == N-1)printf("+\n"); } + + printf("+\n%i",N-i); for (j=0 ; j<N ; j++) - if (est_vide(tableau[i][j])) - printf("| "); - else - printf("|%s", sommet(tableau[i][j])); + printf( "|%s", est_vide(tableau[i][j]) ? " " : sommet(tableau[i][j])); printf("|\n"); } + printf(" "); for (i=0 ; i<N ; i++ ){ printf("+--"); if (i == N-1) printf("+"); } printf("\n"); } + +void affichecouleur(pile **tableau, int N) +{ + clrscr(); + int i,j; + printf(" "); + for(i=0 ; i<N ; i++){ + printf("%c ",'A'+i); + } + printf("\n"); + for (i=0 ; i<N ; i++){ + printf(N-i>9 ? "%i":" %i",N-i); + for (j=0 ; j<N ; j++) + if ((i+j)%2 == 1){ + if (est_vide(tableau[i][j])) + printf(NOIR " " RESET); + else if (tableau[i][j].sommet->chaine[1] == 'N') + printf(PNOIRE NOIR "%c " RESET, *sommet(tableau[i][j])); + else + printf(PBLANCHE NOIR"%c " RESET, *sommet(tableau[i][j])); + } else { + if (est_vide(tableau[i][j])) + printf(BLANC " " RESET); + else if (tableau[i][j].sommet->chaine[1] == 'N') + printf(PNOIRE BLANC"%c " RESET, *sommet(tableau[i][j])); + else + printf(PBLANCHE BLANC"%c " RESET, *sommet(tableau[i][j])); + } + printf("\n"); + } + printf("\n"); +} diff --git a/src/affichage.h b/src/affichage.h index 04c6bee..d014779 100644 --- a/src/affichage.h +++ b/src/affichage.h @@ -2,13 +2,22 @@ #define _AFFICHAGE #include"tableau.h" + /*affichage.h*/ /* - * @require - * @assign + * @require \nothing + * @assign \nothing * @ensure effectue le rafraichissement de l'écran et l'affichage du jeu en terminal */ void affiche(pile **tableau, int N); +/* + * @require \nothing + * @assign \nothing + * @ensure affiche le tableau en couleur + */ +void affichecouleur(pile **tableau, int N); + + #endif diff --git a/src/couleur.h b/src/couleur.h new file mode 100644 index 0000000..1323b6d --- /dev/null +++ b/src/couleur.h @@ -0,0 +1,54 @@ +#ifndef _COULEUR_ +#define _COULEUR_ + +#include <stdio.h> + + + +/** + * @file couleur.h + * + * Ce fichier décrit un ensemble de fonctions concernant l'affichage interactif et amélioré du jeu. + * Il contient 7 directives de préprocesseur. + * + */ + + +/** + * @brief nettoyer l'écran + */ +#define clrscr() printf("\033[H\033[2J") + +/** + * @brief couleur noire du background + */ +#define NOIR "\x1B[48;2;0;0;0m" + +/** + * @brief couleur VERT des pions blancs + */ +#define PBLANCHE "\x1B[0;32m" + +/** + * @brief couleur ROUGE des pions noirs + */ +#define PNOIRE "\x1B[0;31m" + +/** + * @brief couleur blanche du background + */ + +#define BLANC "\x1B[48;2;255;255;255m" + +/** + * @brief revenir à la couleur par defaut + */ +#define RESET "\x1B[0m" + +/** + * @brief cacher le curseur + */ +#define HIDE "\e[" + + +#endif diff --git a/src/main.c b/src/main.c index ba9c7bf..b6ee7fa 100644 --- a/src/main.c +++ b/src/main.c @@ -11,9 +11,11 @@ int main(int argc, char **argv) } pile **tableau=initialisation(N); - empiler(&(tableau[0][0]), "RN"); - affiche(tableau,N); - + empiler(tableau[0]+1,"RB"); + empiler(tableau[0], "RN"); + empiler(tableau[0]+2,"DB"); + empiler(tableau[0]+3,"DN"); + affichecouleur(tableau,N); nettoyer(tableau,N); return 0; } diff --git a/stackchess b/stackchess index e5a9c2526ef9436324f0ba3dde332545833abdbc..20256850c324160244ebdf068f264d88be8c80b5 100755 GIT binary patch literal 24464 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 EA8Z)k=>Px# delta 1551 zcmZWpZA?>F7(VA#N~wI5meQh=eyJ3(fD$K+n6+wICB+H@F|aAy!a_FL!Zry@nnC14 zo3;!3{utT*NTP&H5=m}i*p`fsMHrb|Fw3?d@?$2tltChuN{DNB_nzJZ+2%=ZpL?G7 zd7t-v?>Xt<Bpn@~gLcDcCD~d|QckuLC&?$fuDm?2b|~eDLkU`1tR5BQ?Wh3N^jnM3 zEN}mhewikIC=`Ck(H~rU@?z`Q{H~A7Cf@yQIwkZ+JSeIZUuLAelR}6moUyh|{6>>b z9mg=u6L7D3g6zS_p@K}t%thiD2{y!8An+?A-W1@dwv0AFr?yP6{0%p?pVNM*(tSd2 z!yVmB-r8T1)a#DZpgUgae(3)NGb1eTK3vPuLq<-jcWDJZ=iD*Y>hgY1_(<P&LMGTQ z@-rp}-4A;sw89;`kdCqQ7>kT0J!9w@W1e^C+#5{3bcsNzVc*Vs2}$ao`bdZJ9a~m! zVa~D>Tt<8M4UBsNvlw1fZ&tD-EjQ3|11+;c?GkFjM<!7adHU?%BV>hC7@KpmFF}^~ zp(wQFavznO{l+h-CyP)L8Tn7T|EG$<`R}q!JuKbT=sJBO@SCf_RqqY&*=r}H!4q~c zeAN|5oCvIY3m<uUS5%(qgd$>kCf>@cRf>bk1;tf!O7}@p<ZzH8;y0U#f6s>m&zkO3 zRI($-!y>9xN%|hK3vm_kGU5<odsLECl#q2qJL2#YN%A62Af88@M+_lmtx3`t;`@kq z5r+_05S=ke(%|jW4n38mQhZUZOHx<zI>LJvD~-SvONmha7-lScD|#MdF)X^dUci^v z@Od4Z2{6)?sTmNCWhjNd^i&j@kzxbPg2ieRYNAkO%@>YG;cbLNQ5ZmIj>3pFpMC*% ztR{LL9$9TxJGNYlt!=p}yp-7;N2(9`mNlrh9aXU@F5?vNpjs!6+sf7WDJg}Bqg>dX zD_V=|@G1*tak09dA^``z#ncFIcnx$2fA#RG_iJ&g#!iLnR`~N|CyV(?1amH2^_`|O zu;laYc%a3KxT<6zHms;6Sp?ncPVI*gpEhp_DGf0akCSUS{0R4a2D%8t_`3?xQ-;<A zDzi~b%(7$~SEjR%k4JnaM<$Y!<7*D*GkFs?x!%V4alK5ma=wi5;1YDuQ)}#gg{v;< z<ZvNZ)o^}+yJmBKHaS`*xrPn0#jZMA^;}=TeOi(%o;vaxl1I)sIl-Y#);E!U?wq_9 z7;NW8U-7~Qp3uqpab94Q^WDg23&!UP1fiqOka7c~RyHhkh{JUgRBWp+5a6QHDQX&9 z6vD+6_@JpcV|T7>mPF`K>R_s=lp3I;(FB@iP4;ttuW+EbBzwp#XKkWJ>}WO#uyEF> m?<$o;ZK*P{`(F%+vqfpYAC{SEIB@Q8+VD&AE)_b?nf?JxnWU%y -- GitLab