From 92fffc2d200788c76455acb7ec95e687eb75595d Mon Sep 17 00:00:00 2001 From: bosskkev <kossivikevin29@gmail.com> Date: Sun, 12 Nov 2023 16:05:19 +0100 Subject: [PATCH] =?UTF-8?q?Modification=20design=20et=20taille=20fen=C3=AA?= =?UTF-8?q?tre.=20Rajout=20de=20l'augmentation=20de=20la=20vitesse=20en=20?= =?UTF-8?q?fonction=20des=20collisions.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/engine/Kernel.java | 20 +++++++++--- src/main/java/engine/Sound.java | 2 +- .../java/engine/graphic/GraphicEngine.java | 11 +++++++ .../java/engine/graphic/ImageComponent.java | 4 ++- .../engine/graphic/RectangleComponent.java | 30 ++++++++++++++++++ src/main/java/engine/physic/Movable.java | 6 ++-- src/main/java/engine/physic/PhysicEngine.java | 10 ++++-- src/main/java/pong/PongApp.java | 24 ++++++++++---- src/main/resources/pong/ball.png | Bin 1958 -> 20408 bytes 9 files changed, 90 insertions(+), 17 deletions(-) create mode 100644 src/main/java/engine/graphic/RectangleComponent.java diff --git a/src/main/java/engine/Kernel.java b/src/main/java/engine/Kernel.java index 1b6333a..0426885 100644 --- a/src/main/java/engine/Kernel.java +++ b/src/main/java/engine/Kernel.java @@ -34,6 +34,7 @@ public class Kernel { this.graphicEngine = new GraphicEngine(); // Will create a new grid and a new kernel graphicEngine.init(gameName, width, height); // Will start the kernel and set the keys listeners + graphicEngine.drawRect(); engines.add(this.graphicEngine);// this.physicEngine = new PhysicEngine(); @@ -82,14 +83,25 @@ public class Kernel { public void keyPressed(java.awt.event.KeyEvent evt) { switch (evt.getKeyCode()) { case java.awt.event.KeyEvent.VK_UP -> { - physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, -1)); } + physicEngine.pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, -3)); } case java.awt.event.KeyEvent.VK_DOWN -> { - pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 1)); + pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 3)); } case java.awt.event.KeyEvent.VK_Z -> { - pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, -1)); } + pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, -3)); } case java.awt.event.KeyEvent.VK_S -> { - pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 1)); + pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 3)); + } + } + } + + public void keyReleased(java.awt.event.KeyEvent evt) { + switch (evt.getKeyCode()) { + case java.awt.event.KeyEvent.VK_UP, java.awt.event.KeyEvent.VK_DOWN -> { + pongObjectEntityHashMap.get(gameObjects.get(0)).setSpeed(new Coordinates2D(0, 0)); + } + case java.awt.event.KeyEvent.VK_Z, java.awt.event.KeyEvent.VK_S -> { + pongObjectEntityHashMap.get(gameObjects.get(1)).setSpeed(new Coordinates2D(0, 0)); } } } diff --git a/src/main/java/engine/Sound.java b/src/main/java/engine/Sound.java index b71382f..c3ddf0b 100644 --- a/src/main/java/engine/Sound.java +++ b/src/main/java/engine/Sound.java @@ -6,7 +6,7 @@ import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; public class Sound { - public static void PLaymusic(String location){ + public static void playMusic(String location){ try { File musicPath = new File(location); if (musicPath.exists()) { diff --git a/src/main/java/engine/graphic/GraphicEngine.java b/src/main/java/engine/graphic/GraphicEngine.java index f78e8cb..ae3fed1 100644 --- a/src/main/java/engine/graphic/GraphicEngine.java +++ b/src/main/java/engine/graphic/GraphicEngine.java @@ -2,6 +2,7 @@ package engine.graphic; import engine.Engine; import engine.Kernel; +import pong.PongApp; import pong.PongObject; import javax.swing.*; @@ -20,12 +21,18 @@ public class GraphicEngine extends JFrame implements Engine { this.setMinimumSize(new Dimension(width, height)); // this.setContentPane(mainPanel); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.getContentPane().setBackground(Color.BLACK); + + //this.getContentPane().getGraphics().setColor(Color.BLACK); + //this.getContentPane().getGraphics().fillRect(0, 0, width, height); + //this.setMenuBar(null); this.setLocationRelativeTo(null); this.pack(); this.setResizable(false); this.setVisible(true); this.setLayout(this.getLayout()); this.revalidate(); + this.repaint(); } public void draw(ImageComponent ic) throws IOException { getContentPane().add(ic); @@ -45,5 +52,9 @@ public class GraphicEngine extends JFrame implements Engine { revalidate(); } + public void drawRect(){ + this.getContentPane().add(new RectangleComponent(100, 100, PongApp.rectWidth, PongApp.rectHeight)); + } + } diff --git a/src/main/java/engine/graphic/ImageComponent.java b/src/main/java/engine/graphic/ImageComponent.java index fd98476..2f57f83 100644 --- a/src/main/java/engine/graphic/ImageComponent.java +++ b/src/main/java/engine/graphic/ImageComponent.java @@ -1,6 +1,7 @@ package engine.graphic; import engine.physic.Coordinates2D; +import pong.PongApp; import javax.swing.*; import java.awt.*; @@ -18,7 +19,7 @@ public class ImageComponent extends JComponent { this.image = image; this.position = position; //this.setBorder(BorderFactory.createLineBorder(Color.black)); - this.setSize(850, 500); + this.setSize(PongApp.width + 20, PongApp.height + 100); this.setVisible(true); this.setLayout(null); //repaint(); @@ -35,6 +36,7 @@ public class ImageComponent extends JComponent { @Override protected void paintComponent(Graphics g) { super.paintComponent(g); + g.drawImage(image, position.getX(), position.getY(), this.width, this.height, this); //setOpaque(false); } diff --git a/src/main/java/engine/graphic/RectangleComponent.java b/src/main/java/engine/graphic/RectangleComponent.java new file mode 100644 index 0000000..5a82310 --- /dev/null +++ b/src/main/java/engine/graphic/RectangleComponent.java @@ -0,0 +1,30 @@ +package engine.graphic; + +import pong.PongApp; + +import javax.swing.*; + +public class RectangleComponent extends JComponent { + private int width; + private int height; + + private int x; + private int y; + + public RectangleComponent(int x, int y, int width, int height) { + this.width = width; + this.height = height; + this.x = x; + this.y = y; + this.setSize(PongApp.width, PongApp.height); + this.setVisible(true); + this.setLayout(null); + } + + @Override + protected void paintComponent(java.awt.Graphics g) { + super.paintComponent(g); + g.setColor(java.awt.Color.WHITE); + g.drawRect(this.x, this.y, this.width, this.height); + } +} diff --git a/src/main/java/engine/physic/Movable.java b/src/main/java/engine/physic/Movable.java index b62d88a..7e841dd 100644 --- a/src/main/java/engine/physic/Movable.java +++ b/src/main/java/engine/physic/Movable.java @@ -60,12 +60,12 @@ public class Movable implements Entity { @Override public void updatePosition() { Coordinates2D newPosition = new Coordinates2D(this.position.getX(), this.position.getY()); - newPosition.add(this.speed); + newPosition.add(this.speed); // Calculating the new position - if (newPosition.getX() < 0 || newPosition.getX() >= PongApp.width - this.width) { + if (newPosition.getX() <= 100 || newPosition.getX() >= PongApp.rectWidth - this.width + 100) { this.speed = new Coordinates2D(-speed.getX(), speed.getY()); } - if (newPosition.getY() < 0 || newPosition.getY() >= PongApp.height - this.height -20) { // -20 à cause de la barre verticale de la fenêtre + if (newPosition.getY() <= 100 || newPosition.getY() >= PongApp.rectHeight - this.height + 100) { // -20 à cause de la barre verticale de la fenêtre this.speed = new Coordinates2D(speed.getX(), -speed.getY()); } this.position.add(this.speed); // Modifying the position (x = x + vx ; y = y + vy) diff --git a/src/main/java/engine/physic/PhysicEngine.java b/src/main/java/engine/physic/PhysicEngine.java index 82cfeeb..4d4cec7 100644 --- a/src/main/java/engine/physic/PhysicEngine.java +++ b/src/main/java/engine/physic/PhysicEngine.java @@ -3,10 +3,10 @@ package engine.physic; import engine.Engine; import engine.Kernel; import engine.Sound; -import pong.PongApp; import pong.PongObject; import java.util.HashMap; +import java.util.Random; public class PhysicEngine implements Engine { @@ -38,10 +38,16 @@ public class PhysicEngine implements Engine { if(checkCollision(pongObjectEntityHashMap.get(pongObject), pongObjectEntityHashMap.get(po2))){ i++; String collisionPath = "src/main/resources/Sound/collision.wav"; - Sound.PLaymusic(collisionPath); + Sound.playMusic(collisionPath); System.out.println("Collision " + i); pongObjectEntityHashMap.get(pongObject).setPosition(previousPosition); + if(i % 2 == 0){ + pongObjectEntityHashMap.get(pongObject).getSpeed().add(new Coordinates2D(1, 1)); + } + pongObjectEntityHashMap.get(pongObject).getSpeed().mul(-1); + //TODO: implements pong object collision physics + pongObjectEntityHashMap.get(pongObject).updatePosition(); } } diff --git a/src/main/java/pong/PongApp.java b/src/main/java/pong/PongApp.java index 5d71dbf..c87c3ab 100644 --- a/src/main/java/pong/PongApp.java +++ b/src/main/java/pong/PongApp.java @@ -11,24 +11,36 @@ import java.util.ArrayList; public class PongApp { public static ArrayList<PongObject> components = new ArrayList<PongObject>(); - public static int width = 850; - public static int height = 500; + public static int width = 1000; + public static int height = 800; + + public static int widthDiff = 100; + public static int heightDiff = 100; + public static int rectWidth = width - widthDiff*2; + public static int rectHeight = height - heightDiff*2; public PongApp() throws IOException { } public static void main(String[] args) throws IOException { + + int racketWidth = 30; + int racketHeight = 120; + + int ballWidth = 32; + String son = "src/main/resources/Sound/son.wav"; - Sound.PLaymusic(son); - PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette1.png", new Coordinates2D(5, 100), 30, 120); + Sound.playMusic(son); + PongRacket leftRacket = new PongRacket("Left racket", "src/main/resources/pong/raquette.png", new Coordinates2D(widthDiff + 5, 100), racketWidth, racketHeight); components.add(leftRacket); - PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette2.png", new Coordinates2D(815, 100), 30, 120); + PongRacket rightRacket = new PongRacket("Right racket", "src/main/resources/pong/raquette.png", new Coordinates2D(rectWidth + widthDiff - 5 - racketWidth, 100), racketWidth, racketHeight); components.add(rightRacket); // TODO: Add rackets - PongBall pongBall = new PongBall("Ball", "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(100, 10), 64, 64); + //PongBall pongBall = new PongBall("Ball", "src/main/resources/pong/ball.png", new Coordinates2D(width/2, height/2), ballWidth, ballWidth); + PongBall pongBall = new PongBall("Ball", "src/main/resources/sprint2_demo/asteroid.png", new Coordinates2D(width/2, height/2), ballWidth, ballWidth); components.add(pongBall); Kernel kernel = new Kernel("Pong", width, height, components); diff --git a/src/main/resources/pong/ball.png b/src/main/resources/pong/ball.png index d222eabe97d84d3fd4783abe89ce21e70481c92f..882736824c12bfafb45c18ca0931366171a18741 100644 GIT binary patch literal 20408 zcmeAS@N?(olHy`uVBq!ia0y~yU`k?OU`pU%V_;y=oX7u`fq{Xuz$3Dlfk8|agc&`9 zR6Z~;C@^@sIEGZjy}ir6MJIHoS%OMOQ%91R^0B}G2X`M0t|S*8jkM!7X=fr0(|r~n z?hsVA;*v1bUZkWpiF2l)VfTyxhf9C&pZ)T6f06%-fV-mKE@!{JI=y(+w}1PVSEb!s zxh}YLA@3dz0R@K!21X{9D8U^8+N-0cFfcMHH=1T&%b8c7H)rF?7kmFyzm0g6{<K^= zZBB7x;kPXN-4|N*O4urxSU5^N9Ryxqx){LSD95c55Nq=^KCQFxW@=sC#c8)}^<V!} zd|WQMT*vU*?@Feao5#Bu7@2yxIg)xO&zf-H1B=k6b@SG(+jL~dAB~h;+db?4uUu^3 z$8<aY^S{$Q^ZV}kpZon&IdN^yW7h_T#!eQNjh#Dkd=e^{I3uS=simytjZ@8;x}Iro zn3zRwu155;zt1_dpF62IG#uE))HLHfb7L2a(5^DC-M3Tk6nxp2d~f@Tjs<VS`h6Mg z&seBEu9iHmKIiYEw~N;JH#k%?HAPf^3sW;NZ)91g-G3;IGsaxv@9(I}^0e%{SHb=@ zS>JRR*S2gnI<?>1!8-eu<XevhhkO>6jrU}<T7@E_6c)Z#TfCw4@1E(#G1e&-r?39! z_u)*jKVf0@c!$u1IkvC=J6>gM<mTc?vJ+;hQkife^dHm5Ym(c~>~KByO;Y;n3f86P z)IQ99Q+LGbamMwzXW6pynR2-~l5*u4UkgV#Dja-WwfI12Q@G@92IUQX2kw7*uY8>| zE#BY2daeK?(_cY>BfpB*gjf|cwyfh`epI@j>H00>xM<!zxo=Ii1O91ku9>>?+nSpX zIn$o*%ZOv)C<$>8c>SU=Fie(-Gyb~Y@^XpZ*iZMa`TD(PSikx7r|?<rsWn!Qwf}J} zILF_(Znw5VN9p$)D{>l`IOAq7U3<H)>ALLacdL&v%01`X9<p!SpGz7uYK<1IxijNh zH$$TsE6YZ)kGiq#2VPjM7ut1d=K8tDW@{H0$9{8oaOC35O-0Avc+Wd}vsroBk%OEZ zNzK+vq_UzF4!%xW`LJy9gV00aJDvB6H?HHJGn0uwUiysCsk$p)o36Sia4<F95a?SZ z7bPxX`{7rf=94(d-RV=f-|yx468WG-<o`k=p;M=7&+Oq4n9<yzV8$L2d`;27>T~F! z>wDcFo(}ITmH8#L`_D&>DY8=nzWtSA{Nj@k$JBIVPs&+qkH)|sw~9sf<;^dDm_5Ng zDp;Fi%6c7sskxfk<^R4bIV7+#I_9w1?7pTr;ltKStG%x^YNlrI(+hHczDs4pDhJM_ zr>{?cf9`YBKkV);HWrRG>Ixk{0|X+R5=8cWlW1N4Nxc8ibbqeKsjR2Mr>Rb<b<p@6 zsA#aSLBVX_R9$TW4~E^Dw`!hfG)y&4jAP;O(fhFWO_9T~-!?^=MK;w}R24d|mhLIt z{pIF*-OrENQ*D%ztvy&cOw>MHFKW|yyp}WNeqK(Pu%N_*1_iSP%`2y#WGVW#`cBN& zmi2p$Y@#xZ?4pHdge<UO{=8Q5y|0FK?xnf8{s}9Xnr;O2uh}<E#N)><m%5J^0vUGe zsWGvL=>^Db4*B=$Qv=JUe4Uz7ZlM=58WgT=WL`AqCx=SI)aTaIHpiErFF4)#(_r@0 z1522WPj{I1@m<R%d;eXV-*WOeItWM~3cPZ-D1E=)y!a{H@8u^Kmin-8ltewSUHPte zo$Bi^hCz2^SXee%E||3`wsFqiT|rtEUdIj_ZOhm$wOUxgVBrD5oBy^-wyRB9JF_5u zw(yI&4GPzGJ1=|iltt)3*@^e_W)`0B>Gcp)xRBjg)O_Q5>K^UJH$8FXiz=A3IXIH+ z<o1er{Lq^J@Y9Kf>giMVH+@lZNQhuszHILQGaB*H^NiM9D{)R}=4COQ-xSBC(lGV5 zuZ>Fb{GRNun>byC6%1A$u-<fdwa|%E&L{SA@HjaLNFPaDv%HgK!|5fr)l+P&9tV9b zSr^R2;>PrJ*T%y}ag!asxoWZe(o^X8`j;atsGjLY>7`efjpQag{3bkAraV_D!gawN zm2ELM{vT}FRGcCBVsV4Qwd0G!0?#gH_%>-vjNXCom1|$z$ewzDg-Jd2ws@+{42QCJ zEWd9~ad^%2k3af#y91*)r%J=r-*tNp9{-b+4pMSxI3U5Ko-(`EJ^jR;Ur9U$v$yCg zbZo8X3E9x+z;xr<&-3CbQ@B5xw>dX3G-|S(lKnk@{^n$M|BdToIdnoC1fn&zADt%b z!LU20?)#h`_tYJ1XWUyE8r4|#P4=8O-Qn9yH8o@Q#!3#3q|X7S&u=hsCPb$`PEWDX zOWwS(e2XF@6U#Ai3!~X~rj2j1AHPrXX6hCcI3o5qXDT;1g*Z$*E->|X!_@j}K?R3| zdrVKu#Ls`QIbCTyyIzRVF-J)E_Bovi3}JG%A^Yld#2>|1J>&FsXkchO$!Zt$PyQgw zrun}6R@-uzXe)G>zRuhx$|7_qZ+85C%g4JGa0n<|*mU6j=DNyhPrZds{JU19J8gZ0 zgTU$^5A;`kW!dnFW6@uucbit2t_6ABkhN~|+j(;X<@DZ76Hi`rbB!gV;~GnE<5&j; z#+=iCR@~`Y6w|SvQvp<sMLd{s<=c#wjqA&IxGm)ka1fAw;F!C6>BZ87ejnMVe%IGA zXa8=9n9tDY$znIBcmA_q8$D0tSa&xln03#qy)IlJJA<E<k%?JA<9h$p^oV_Dz9utU z%#zJ_6nOoE@s)Sw;@1aG{eN_8vA*f*$qbB4t2w5;K0a^i$Gq$PKi8b`b`Y37JxBGk zT0^YG+G*C0?2Q-yxecl+orQmtNmV5ry3yZuZARTKae*VZ?Ai9NRZz@XF7kg~&!_N- zaV#7H5}OX(%zQUhQr}O(I{QTLtK5xDO*fMEvTwZgV!dMg)HJz?4~<Pa7O&!DVmT)A z!*g48#-SU6$$9z4Oxj#O>=)T72y?2myqzk0Z$@EjXW14*Mkbav<$!nQ-@f&H`g6*j zf4T15Es6>qTNmCtY$|*}Z~mtH(+Z!<O<SMB#KLjLc|pvX|1B*Wi%xUvGX-;UBn5B0 zx;dCB;%ASI+T*8^(N`|-^y3szFxYlLee=`BLMQ4hzsZ@Y7zha*sS%kb>cOFXzC}m; z@qGzlMkW@HH5wnT|Jiou)uXd{r4J_?bv7uNb%v?l?#uK1xM$1n9-e-+RZn(gPiAOz zW4ZHck>If^HNhjVEUzV(T3K;_yO{GwKlyEfG7}4jz>WnDJFmL_tWS%dyE*y!L&Xh~ z8Wf&=F5GwEMbrlMr}Ons-w@#jS$IY#Ku)1<eapu9vo@1C*|Zfpc)wlfyC30n<LRca z?M8W~|Khf(fYPQR%fCsv|8x`IJTTn0)w7kUDWa9V_U<&{L+>X2*Assdzo>}ot+0Ya z!aOGSv`@#?CQR-AwU^_MvxC6uFNY^EY>SN2H&3gLSjuus&7tAIBG$TTtlzyPw8g(v z3tGfG2(13lJV9Vv?X7<v$IL{xtxsiQ;n<>CkSA83d8}LL#HsyzwZsLEX#HYPX~>;X zHh=ENrk-Bytk~5o90D(99oQap;T~tQ{oAO-SCMNP6t+dYzZT}ru{%jjzyINm%52w& z8KAb^HBpW0-L`g#Z(<`}i3%LiviQcC$nP;b|J;rW*0)&`85o&rg@06V)h%G}`2Kc- zY4Cc5Ydy*8>7ESQ<wxtQf69OG6I-DH3fc(m58ZzrpW{qEuC&tIK|uP&M?a3+R%>Nv z6)tYvwnCSQg@ecU!TZb?4>^<H%SI*tii`v0rRB<sZ>D9wp3vjXyTMi$R4%+=dKxsT zR_Mez$*RS_ihp+<tYs5AbSk+kZtBDJO6=t&rY;Q*u1xOBuJ2aw`MYe<ywy2ZB{w$8 zd}G<ry<}>6>Koe$)3!J^Ff`s`_2WDs$C-S8jcn41zuZa87P~kT!#$<vpW5+{;nqba zP&EIkZ`}O(yt-P?U-c=8TpUTZ_UkwkcQ0>kHnP#)^!#|xPZkb=2*(9B!aHJ4)Qc@m z<m5=QwVTJ8c;5G?{uzz(GvAd!X&{kXX7aaFx_Wh%Z_Hl5@)LOd@S`8YZKc%x_K)>! zb>dI5a0n<E>^-pZ=GQpR<oH>2T-9Ze#<9fWX%`oFo%+uZSKV_q*9p|tJ}hjZuWM_T znDhVP*06Z@rilK&N~arTn%|2hr@s!o>7@#?@F&L}t;9EypJ(1$(=8-$L`>E8vDM=4 zPyFXhW}mf~dY4l`!6CtdN#0MJzd*3Qo_~eHwdUmM0^dGN`57;%ck2DYk3mX|Oe|tL zA9~k>>plAaxas=V7-puX2<DE@bCeX{T%GxU<>#2gcR=pGP~G_7lN}V)`R}b)u3>as zvzXn6F=z6WZwGs-OSZVA3Mx1>IBaM6XTX(w|7BR@sz{L69z0i8Tytm6*9|>$ts>@4 z0(B%7>}E<|wq<W|+MDFNx`C;$xj2$!f7__E#M-LX+9l8Ko4QN}l!{)oADA`e=aiO> z*S{{lvum};5v!6v!iVyVtc1%>@=aYT0#>u!q0%mO=luxIv^ZH&fg@H$380!F=v4D= z^S2(Jr$D`y#(&&0v&7!bG$_maA1#^2-W0*!m+f>THuzY5`V{UjdqGZWaG1<A|6EFW z@%oKwp0j6r3uK=wS~XMX(6>{4?5R84Z-g|Jf#cVZW#6paQ*U)o9sLt0D<p6v%0_}S zk^khU{PP7eQ8s+j)EpWdRGHlS4&BI{`sH@F8EeBdzF?;t`_o?*DJ~TUr89wuDF-%2 zzA&>i4tr<$>?$Lp<C@my2?F1mbav-+dq+<KWkilYDlFSQB&=Coe={}RXzF)#irBgS zv>kWcwIWbNI3&b2&VOc~H`m}>vCdmAjwJ3c{v6fb)2hEPP2VB{vBd8|_+sN^b;T@y z2Z88@TBeA?I{#yT#W&1R1$+0v4yOI5+jc)WbA$i*-GgOkxj2%}R;@FScDmvA^P#)Z zw>h7KmZ^h#e3v=?Xj<RZN_?{;vuxY>9HyolId!Yw%~dGt5ZI<QnHOZ*g4o6)@9x{G zJ++(f8oi2+6_|b5P`+07XQR*l?{lUZ=z?985%l2v%$)S}W3yCZYxNv+N*Ax(<{@Bh zU~N~hYVKPXP=aT<C8+UT{I+J|n<Hh@*5`*h=I|Z2QGBy@<~PCO8MmfDync^q|2Zae ze+lc%d)zbcFD{k(&!f_^*J`re){mXO9$;g{)C1n>mrZWjcwZ;)q*Zv4+nR%q=Lvkf z<MaIy+j0|8h;zIb+-clDNAh=VH0zZO>lChC2=wEq&RO=WzipW@FIdToCWoE-Z}<uy z`**1|sV$;e;o5;fUykaEWtIyXSNb@Dt=gsbVXjDsT>F>p>qO03s#rEk_9r>r*lT>0 z-8kZ0MrJuUjjlN`apjwBoXP1W+YZeWQ?of!@IdI$sk@&}$9_J2_cJ8@9hkt%=U=>A zwP&vF6E*R>vlYyiRyf^Qck}Cpp5Eni4&{M8zaXD!zSqHWUkU5&`K{$!;~aCklqU;p zb1wTGb<B17jk|gfRp*)B`wQ%@pD+C)=xx)D7I$UEH(EEB#_Xtg$yvVD66`mLt^=Qi zkKI|fvT?Cyhi}6Sfo-m4|MQNSs^2)f3~We32h(?N3GMSC-)4cD>%#hqYht*+wf02! z?(9Abiu8s96If5V{@(5-p<N&N(sXHqf|*)OQ^Zc!qxX{Y@{B<qR|sf6Ab&ZfQe;wl zi+|-7){TY_gbu~cI6Ke&*fKLkaO&F1IcG{+{v3m{tlVDni|ZA(bv=5~wwB$rF_#Z) zf<ZuI{_^$FDm`;eFZ_FUZJNS1rd+2R=YE#%)XSN?Q<hO!7@WfsIciiKbJizr*|bBC zWn=0Z;X~^t$IDJF{CHHBPa9M$F*L?;?=ee!vvTjdgo8)9le`<$TVl2B?bMQAv&!?I zhA7#`ZDW;~^M9ZD#udL<H*$NZx5TR0Yn7k9Ul_=K&<YYP4ouINPQR_*Q(Na?dv>j; zW6ocNFu6yy{X08ngX>TZp7;mrGe5R*CjYno6PEruKp^_Ke){2gQ~uw{Hw&r;JC~73 z@JFEA&b3GHXXxlFboAy39V$Cze>!}U^v?s(ah6_=8Y9Oydc9{%E_kwRl)2HeLHo(u z7d@x>zF1^~T74`WTU0-MY1tUQeQU+_>uc>gdgm$rJS(Fi{=EF}<yCf|uzRuCVP{4C z^p=h5zis?cd0nStZRF=^3ieg^E<A(eY*Fq%ihJ{C8+?1+#XBu$?<<9An-jnHp88#@ z0ghjW#+}?X=Gt$j7?hp66aMNV(^a;OEgN!+=bYNS(d_NTk3m}Cl=Ncr0Y=WG{x`+U zzSrYY1-v=5`*p4K9&7nF&*}%4Wdad_59&CR<rBWtGi_ztcz)^kyEPn88(O*l*lOR? zNqkey9lx`gJ52mYk=dK0mVD>mKG+x_1U7$#>x1yjEirrkACHoXTX%j{Q-srvbB#Z| z)}}LM|KIR>KFAI$)ekpWHr_5@wMeXMrCNt-ORUm9`!hRgxX(=kwagfqSgwgz#2mUY zJG*VAW=E|O`>%7R@;Q6Kk<r-4IcH|oslx~TUqr-mYcKBt1;bPS)c@IutHeNMKBy}r zs!?vZBk<6Tn~&caEP2Z&e?;iex@pW|`zGx<F@bMR9N0Gp8d&0{D|~yx_|>>fyO}SE zGf~?0QM9CWk8YAPC_WS%7VtLS6+U+A?b20MytW;Cjod%K43!N$D+Er$bzE~MZCXFq z;M?-LY4)*Kn|YJ+LJjY-9|E=B6&x10HukG`+}(QgtN6Yz3e7X3Lv{WXr#OPmy)fm# zV&P-o^0PLrJ8yhN;aQky?Efb#A%U->8*o)umkk`Q3oX~>e}Ab4&UY+T+5vf)8=cSf z%)Nb^@0d<afMZU{>aNF^e?Lq9mJi9j4hv>8t@jkDjxzVoUbku?>qceg&B4VsY0yB4 z5{j5ynm^AV>|g%xg!pF8BunXUGh~*onjda@!++&5P?#(TYm{I9@iqTX?Ng2{8(TJL zKXaJcT)HvJe&sKSGnhqhm^;2{WqzC6ypUz%`DYAw^H#8X#)Grkf~3Y`xAdcIKNCLO zW8XN3cXv47g?6of4Ow$RQO>~=`#{=KyX>=~+0EAq(*(*s%1oIwLErpH^I~;ys5m^3 zXX^KskiN6^K`npM)4If``#>Wnp!{`U1M9z8-`34G_;y-x>&@E=W>wRkJao2_sDhM9 zEMX!)e41{^wxwJ-tuResn<t;sPp?l|$O=Sv_#e9AxH|9ZWZqv=N8%*!FaLfdVkX$x z4GzUj%hOh6tMvTcxl{A@?3Lw?I_ZbkiLXmGHp}WidkU(ko9Vrefb<d5M|-(IDdpLM zdh6tNG5&o^K`pihhQ@EKWu6khy?&>j33I&PbmQ@*ceB&7Z{CCGKES}@=fi*9Q^I=v z`MqD%I-cg-P-XhNUvl~z;~lr41{`CVH%H;yu48H0iHq!5H<}-N{!v#V64Ja7c(Lq2 ze9*N};bZ@<oc$EGew8@bjT6I8Iq!{Ku>Y6gR#r&f^Gx{9veEtf)`$C84Eevld#&zs z7wm$BeN5R#f4>SJtFySD`pmfcd2__Mw!4;V>yzx>&YlX69|4Jm1K~nP%3dbR&jn`& z_N^*+vcCz2p9P!HaNrQjyLkp>Ck};WXDnRDzEOSo`Ris^R%e3JO#?&YL#{t-=Irp4 zuwL%3TV~eLn-^YKWU&2(@QNs?|E{sjo2c+@)wQtsNe}hdH~zhRe(|ywCm}UpgTq{= z<;&j|S$E(6zVxpj+r~M(zo#?Q*)N{__3P6It3bVL7LE{&4}B~f+rKV-@5eTmW#gwe zE26)$2F``J&LN%U)LWf09|`MS#-eKjJf4G!ox8#B-G4VMcY~y_1(TWF)jIC3nLIUi z!3satjV&93{3|=2o7El&RtATj!iC62Tj67N*KWRYYc197u(c@NyZUv;D`iLyw9@~u zmt~{u?zq(SrigQGxe{w88?C!jYVs9a88I^L6}X|D_(nN)-4<`hHxC=F7MzaAf@-Z& z{m>k;JNHn;&W8Py*ZZ+-oWpxt#p?g#oCtM$<t|A6tQFf4-*kh0*DZ(erW?sjU!JW~ zS_!E+1YWFl_^Es#yZq~#h}VueC1z`EPQCcF*Y*e(q+VdzrSstd%SPti5eec=H|!cK zW5o-vKpJQqJWdPde7LEW_~y>K(#u%_r*CfXW&U)!$Geo*%@z`J2Ntl%O;q@{ZC&Y= zGJ)zShpMkrzO0jV_zKE+42(?4oKrR@UH6f&u3ocNd`n<9DB+oT_p=_oxq($S=QLPV z<0)3T*$UsL=}B&pJTgzXV|odvvo6eZ*1Eax*4<jVIcY7+#)~&M#Iq)!c9hRM3k|eb z;T!6XZ+K%hSFKg}wuWKP8f}hOpyHL0iDi}Gk6f#}yR_>acYXks@zSgd=J4*$F>Q}o z3^ChbI*V0t{6@2;8_q>4_bx77yig1p(^`%4&w6fr-F2Z*+VPEh<{zurj5uDXrmald z{Uv_q+`g-C((yF=r1g@A{@d?v`3g;?uUPG-D{QO2&DG79G~fU5?rm@>Mkc`<c8PCh zn5l}19Vs%)*=<slGy81RY)Ix&*wA;NTIh(}m1QTCnr~EJe)0Eq&b3<*D;XL~S<ao@ zzkZrQ*u3hyr?M46VYqI_ySix`3$<gxQ!^li8@3!+Eqr9&J+X6(nr>uYdJudo>(VZe z1gP7X%HntW{Q4ON->#drJd*>}x=ER9?i?uXHj~<-21&gR38Ib5RXW~YZ@Z+_bR+ok zjn%g^&dq`uV8~K8F?Zc0gKcR&xzcx2);Z>Uu~=M`d*fPfSgsKy*cu!*Gky0K`0cPc zc%9wtJ<T`v1|4b-(?2W*Gb4<(&r9HT=0(vn)*Vyb+3)0C^o@j6TLKCOtq00DlaKpv zynki)8C_7wYA;{)Y3q|a*JkX>wgy+3jNoeByXi)<IH&RU2~!llO)~j3$JHzuG{68# zNC$YB>d)<)?ki!P-DatFt5nZXM{&)W=)B0npPj2Vg2u2wh0TK4Mt1cM*&Qo{o{1j$ z=EK~svx@UININJdq=YP#9CMzxJ&P)xRmr;1Kjo?Q`dz!gy&h2e|E}<kvO_og#R9_~ zJL<%H$LY0BU$1H&<HCFmn&>!8bT-5{-EfjSYtgUp?N7p<4T%Dmp=p&xOf^97*8Y-1 zH!MHL705ZhxvqK3_19;+B53=J<(X!|e3p&P&vrV@+<j4D+IrRZGc4^*-!D4r53-wu zLtw_{1L8tQ%4UC->Sf>9zwE*8^Sd)XgIhI>Of1iI0^}I#wzh1X{CuZhaylrDtrn^B zYU}>;yz<ByUx*PpUJssfCY_)6Jjs`BWBRfS)6Z{?D2ACJrt#tTn$UM!;?MP+eR?%T zK>Pdc9nWG`nP@^2$O73$Yqbtpv-L}*Ig@@y73~(Oc(bR=L?0%t+E}jIVVe?{Z7zDm z=0SCw`-we}sCSsnv^@2rH>k7IuQZD*Y2UOt$1fVHL-bu>ZQQNaQClO|dPe5Rr>#%; zG~ew0tZ{A*L@PrhAIBbZ$2X0iS1j&S_|_%zt*25X-4B-H*jb)^`<f!`xaQ7_H>YGB zg1|#NpfQj*rtc>rH#X0nSF;QhlKGRG_T4NAe5MR3i#bYs9xPzl_}e7*@*2lCTQy&t z^c7D9x1vEq8pm1AdDup)_RPJR61$mg<NYNwPMbzf*a=EJpiq<*-BI3jqkZ<8+*e?u z=Q-`WmSXq}QVg?jltesG=1i(Kjl8ep_=Z>W38$}EvL4L6?X2g#a-+?Detn|jc;@;f z*?&tkdO_)qLtsYtfxp5>?%ls~CYW_&jc(;?kq=Xsbs6wO0?A>4I#at^$KACnqn7g~ z<@+)AXRhM-3`@0DN&)-k>71YUCtLWdpY)Ns=|}Z1yD&b3rO7Wo3GZ1p@|y;JJ_1U$ zd9z#lvy%#o;kq?GoMYM8ZWj36#PQ9_$RAgIb@Cv+F^2{Re%89_3fE55hAihyn$Le@ zovll-5zI-NjnZm8vevItguyO;sPkibk8gVHjeoGHljF9rb<BB|&!NtnRL*xpy{czf z2`nUpnc{r}X8)8v<k@^<cF@nqvsT=bLFk(^`PS*!Z~pU_wtF_;;Ea3|wOJ=49;)?# z1IsrLf!Qx-AKKU)v5x<?RmOe^jyYzq=-JG*$I>xpSw5FKXVO!@Ur+mfL7LQ{sFThq zC~CS9n%+1=rK47d`>o;Wq;H^MHIR>Zd>%w`Cae41z8nD#r5UWJa<$Fomnr^+<zF_9 z4?9>kuH0`ZW8QIBtsq`TVcs;jtsFH<jybRLd5-fYt@mm5pTE@WH>}iR)A+FcOGsXF z;X9MPz0ybePCfZ=b(ZNHwDrls6O-_qWux-4mxWgqroBFV>T%D%SsOo^aNlT$qznav zg2r^Uj;Z<l>UF)sNAl)I?zdU?_23TJT7Zvd%3v{lMe)N%mW{T{GfU?ve0$^b=TfHH zc6bV6YP_%B5t}y4?l@=C(`$d9Cf-K`j5l|Tdg2-zuA)WPEgaX}vCrx5Oxp@CG4&eT z)jIYTUz!%qle9D7f7Q$nzbE@;RYT*$A(biLU!eNO65I7+M^3e{`&g}f3#kqnnWl37 zF>qWn=fJENTcZTDm*4o8yGSzE2NV@790DtXA3WkrUhaG8SC-?Nn3A%!o@!elgGUMu z3xXPLg^rw(x9s~HW!CZZ*M_x5r&lJQPl0x=8XWF2>H7<4Z~rUxduxz@wz-;h%A1)v zkntc6ffdmYKCo;oQvS0sUYpgB|CikCi*2yP#e1&9ai`y#Ifc4mTuDzKPTek1u5=p~ z#T+>sf}3sxKDN@4JW^D9!)@k+Gd%pi<ianN!L^%J6gAy=eXKP?uj8(Ua830c&m4EC zhZG9-9r!JDM9yH{(IUq;2WLKree9QH4GkuS#?P#Mz5=@+?hrf8y778S)AAnc&bP4i z!*WjCLO=O&%SO}36*}Ta>?Y4GmrrN94a=h(e<mN;#+j6CySjR(!nf5v<*X~94q{{y z=DuU@_@?>so2_vIr{jI{X3G9IId^UwEO`k;_&-SHOgb-lJawhQHt(`Omn^Jrw?UJZ zLxL^1qgg65eQDE;$D1EZAHR9i3~uym&N)*Q%DxuHOyf$*Kik(Yk)Doll8)wv%0o9^ zuD+=wdSu_kxp}*8_0_>@DuoSe4xAM};<YU5<JJ&?-_hT0<ZPAwI}dJaWTU%UhwO$~ z=j~ZH{yCcR)9!P9`0bPLVabLiOr#>X>4tEa@va1c+sf88Ia}xcLFjgE)K~Agn`XM0 zn{8uydi(Ts+a}+KRbrqCqjr{!-fPoJ4k~<Wd{Z$0YS|}PQe|iiWnDMJ;M?n|+jb=g z{Pr`uS9mou7g{F>C~TN@K#wyiex^#t+*!TbqjJOcLtDrk0uiAP4ss^3_lX|)BtBXE zWLx?gtEKQ}0n0JL3dg1!-N$&7uAgr^-fz4*7ap%+q808<Hx3`;O)5XtHb17+OBx=h zJ<1<iSvKB1#+%fCvMpaOJq!`HYqScInr>`8#+$VMOq+i^s;&aRrW<OH**5a09o~C< z=2b*=C3EJ?HTbsr>9#+|Yma;ipZt{bp}B0fmoz+e_b3;9X4yDt<FuN!(nq|ab|11Z zzJ*8%I*q?U#f<E9{v=E3ZGm;wWykFAX4bEHnG5X=2q<irb6~U3k+_Xf0@~qU<{y{< zi_isujemuY$nA|1(Eh&TN6g~WvwC1s4=!^iJ&jxIz3<$AEu(nfX}kCB>xGQTg6i7E zO!giE+Wz`ch8?#0`(r;wdh||9fj1~+nd*H6Zf9*(`1UL3!x1Z+5>IGOi&$}>jWaoW zT2$fN@X7B_>dSAqFiFP^D!Ib>!6we6<!eNa*iDVUw~>!K7FH6AX?@V=OtO#C?2w%r z|L?Vv_a+HY(J!Fjuz;^ITCJltcd5cR`=3wEN+VuCyUq$50vdO#cF67u68IflxAQ5g zo_5uay~#@zwmq5pr}PF~i$Qqfa`leARVNju&E6TOxBti4nCa$_fmj8H1#ykxY8|%4 zI~B_I{(1EK>#Y}aph0C2-nd=8!?tFp!nWeN!XK!5oQ00O+ZQ9SJG!p0V6T}KEMcAr zeXyD{X?v7j$JF3d_A{lGlVKU*m1xAbgZITx9sPB_<FxjxtruYqNLa_T|E%Q3)B5FZ zZ$f__z5Hy~o|CYQ_mykTbcJmfiyYs){dv^+HIk-xOw&Ciet%{S*NpeA)3D!j{m%65 zP<Mm8q^;iZH)*9pnMd7@^u2lr=fx(>X4yDjPxOf0RQY>_?@mWU<47T3{ee>9BXxU1 z1b)ZV?TALv^MH*r>A0@wk$sco^(rTC+&Mi38cPihvP|ZF0>94%Ilhtp`Ox>Z!39;Q z)B@4Q+3For&wTY?|0#U3>fE<CygbEJp;`Ni;s)=gh@WCbdlka=t-rI4j~SjMq6BZ) zI<ASCzCTVtJN!fZ?x~Y>yr6De;r!qns0|_dnssB5fA{LEi3_};g}H+^Q@Ou@_V>J4 z{f?=-_vGD0wXD1;qH@;7D#thFKToE<LUAO!TF2h<l?vaM|0y^f=Cw%!=6t?Ja9Uca zP*zn}anXtgp42m3A6(>2`mHZ|<lISq^Q@&R-LTaBN}wXC>4x-luB7y5?X$0;xb8ID z#{Em?=tgOtTm&u68?9KT{muIH{pJ6lQVDocz0h@FllbfZT2EsZqWC=F=I!t~Q~s@w zYH!qoC62WmcdW%<*Z*kJj?Xwd%T)bI`*l?3?1*l<vCx}!<KxeVUtdRYPPv!B?=L}) zZ+8ED$hUS%N+2v4Wtl*2|H73DWhr$#f@RruLC0@7wkT~VZn`1p&ARdM=fiWOQM^&+ zC19PkQsLXrKLyuO0xF@MW#i)MTuJj!@xMon{(`+M8|C#xkMN!3|Gwt1!*p1fgt4rf zsqoF-n{^}q)AsLZzVT|haeg{i()+Xg@8eN|Ax6*fO}RJg#=oBryKfDe<O&O*QjVN? z3T3~79N#Sc`EWB*;!JqRl&;#6yX(rTr;(HW&*{hQ{xC@g-dJ&d5YCwttuKD$pYHyO zbXh)lAn3$A*uk<<T1WiIw-fqy+fenK=1kfisn>DWX8(^UR6U^XhpzaMb+hBwlrO*D zIz0n2ZtT!-z<`y{L!kOek>eYqpGT{{Z<Scqybe}Vaf?^DHr?1fjXO#Fl>WKs3QsXu zTwGE7u!Uvgbsfngr}&GxyX~Lmp0?6~r_YEL2M!AzxwkP$K%0NzowS9jk+7map#8vI zp(A{;kkU3=Rt({>5O9+>j4P@A>GbXK8J=RWj@cE(g1;;q<=2QDxi>xj-g=a>yWl6w z#{26;j@+9OZ&!zGPoslV#7^g<lh%K(pSXXP&i8E<k*s1-Fz4$8J@|ey@#(y^+H4y? zZB6-EbqP8yrr@x^vhlr2$K8sp3ePGhpKYAo2`$k!geBa3?lX<|TAk_6(tm%s)1c{v zk*SyK&2-}=|HzL$5kFJc30qs|OPlZ7auODZrQ9}(j&FP)vuqUJe9`pPwoA6K{2kb6 zD}2Px%unEVjoGcO7nl0NYpdu7ZJbHR`-G3&o7XEBwSDS4SaRy+iZO9~bEdHA#^+5J zyQN}pr9hq0SjGBpia^=Pski<gpBq=a@n7?%hr3^Iy#y=a7X&sY3mw@eZ{BfNOS*39 z#it0%!XI2<*|@t``pCLjy#A}Mdp(C4>Bf3*hQhZa8=E3-p4fXt>ZrLS#N`3o4@?$5 z5@+rypq+l?)J#KtXx3$Dyvg!zroy+2o=rEVZ~nM8J^C_qw3>mDNpMGC(~WX<&ZPXa z$NC-M&0~Yj2huo`(tU)E$j$G)Z}EAP8ocA8TM*=Q<7&9_kK?sRPPOff_-|JE`%#wl zPgwXh9Oz=2?;&tI8QkbA`hMMh4O*k`6U)Z*^=V)H9dk;;-dwNT|0m1(7ee<Y@X*wO zEIV)3jptLB-wnHc5z*S5Cc4A1=|<t|pE{yPzMb~-kIHr55367WB7z?5`BU<kWuqxr zUT)Uhd;4x7w{({r_{f=fyEl1rh`{gbZz`^!HLv;AI_{Q(o7ZYLKdvb(+Xk6!R&Z!I zP{nlKQ=s~$h2Cq{jhlkssh1_)TW5HV1<`c>p$<tkeJ6_?-#mCzv%OGl146q!XU=4W zZ<h;wrg10fpE`G58l}VF{NPK=hO@`Ng8C`e!ZIfBRJOq~nSe$7gV~%(=Caq5b}D?+ zpZS0tt)Fsln!>k^LfvWHNl%~GpWg9ehw#llXx4B@Xm(fccx%7z@Fd4IZ|3Zu^JT^2 zLeX4U9RILy+$fj3MJ#)%!nZ>?UusrC(-&wYc+Rx7+hm?!bbHLQ@pk&+!^fhoxxr=U z`*LXi%zSg*EB(l}6FT*h)oRl4YEJBix#OCe#TMVPZz_bPohVH@{w#M*dsyGzMZB=A za#&<XY}1YB>Y2G)6~fm2s=uNld}|ui#Q_TsRKBd-%(8L6|E1qqj&B@izPUTuCnFk~ zkR4i?j;plf+GpNh&AKr=?a+L*{%d;EjbydAl}8oA)J~TsEr0U%(qz9JSck&Fm5JX& zp!)ujzkR|-_|7dUpIwr4TNs+EwS;b{Ilfsw`J1($Ky{Q_?bRj1w_%-_fX)LeITM3x zt1bKlcDoAnuV4w94GoM&Pgc8G3T5X#%e8Lz3m-8%SGGJo#|UM>;DIJ*(r@3(k5@Ua z@tMW_ZU4OOvwb%=)WS+3X7L@7O*bZ9{$i0QP@Sn({|$LCA))cp+J|DCNl)9>3GY9~ zo3#DRnfSRCW!A86Nt<p#fzu7!Wx0iS6t*Rb{ct`u?Xq5qJv6iqFtEx^Rrq!-^S6|C z$JCR>b8obN-gbQp_f7afu0x}?TF2k2Tl>^FllV_7<<CYQK~ekgw`D_a`pe8o3SoI6 zVRGe9T%nCEg$)PU*82)nztRy%X5YBUW8XX*wS4m#sg8(Y6r~N(O*h2TUZ!4B_;yO? z+m}eOEwHi21O_JKyW5g-|4(My7`y55bhd`&tS}erFv*|4xncJ?BgdQNmlVSCl0Q!G zIg2(-W#;%sck?y-KmqOUr&b%AKbLKf6yIhKDFGc89ETWw|1!%)_tfWqt9h2ghOrLl zFxj8Gx#9IWqk}q*Ij`UR=~fdnXNT!)XUg{wxV^k{m%5#DnAq9tlkcCu{dJbc0r)`I zJkC3cj&F>8uh`@YR7Z-{hY7RJXoe=+3(Ad`gI<SmCOtO^{Jh06=eN$ky=q(raKqi1 z*wtEWcdV>h&Xtt<vBtL2>E61lA&Spn{r)cw5A-;b=I5+B7uj^9JNQWPY^@_Uuq4*U zZSret%FEJe3fp48*>8KCa0*s7n5cd@H;1=6BY5&zkt3(h?VFeLDPRV)!hEsgfUNKl zzU)oMR-W(ZZMw0qvfgnr>rAMu!Ue}h`(?|#)jQ^1Ps!cPwlRCzjQJ+W1E(St(M~s% zXRXU#reJ2JT^4h1d+siS&#>O9mCA<drW?;^ty|uy@NJLC*G0>?jpboMsmxUTGiuY9 zYc2wxzoxj`sh)!7v1dvj;w`1Wz5hI;@|i+d*Qt1axw+e=&n<Q+h7})CVmC}3-*kUo zv2dlrw>Ki+FI9?Uz{iifnd*HwZfC{4HWxjzZVr?Gyzq(7V4a37Dj%k?Y&?E0`>k73 zgr;7+f1P^1^|{pnpW!A8+)#CVqy0H*`$>gwM?`-9suazNgQdDARzE+E-LGt}=NNUw z+O+=DOTJtwmXimUW|=oz!R&hW18MFgR+V`Fed_uA5dwXwuq^ypNTc6qmrv6T`Da@l zW^R9}P<Hyv&#TBLFtPCYaqK?6=X$0|NAJ0=zZUPW&ntfjn@iw06ZoKyGpYS-;lIzz z=eY~qR{y*&?_TR{@cIc30R;o~#+~s?_HTPv$zmw}_WaA>#3+c<5)_%vpT4<ax=zy4 zW6cqoR^o5>o9BOzN1o!)2++H<KdI?PzVw{pn=7A*9w|H5)vmvYF&kEdNQqdeD86~e zdv5!qkYdiH#ha7#ZpB{-+``8Qw&TK-19OFr*xkL7vihv?d4+FFboSlPV*LTDtQROV z?f2x^eMl*LX1aj3_}l+>$&+2pQsA>ZQ<%7Sd(`LF7IP=1HpXoEzi-dod@r8euw*2r zy5U0i7je-ec@tavBBm@Tg#~Fam(CZZzpX4AFGg-u{=Dz<6pb=iqStYHaBZhu&cpJW z8Lz`9FIFg9zo$M!un9h^<D*!R<8*^}`HlQ%v0{QpPD!b!$7DXs0xeModnqICfgNWO zyQ%%#SH|aTLD6BW_&z^kuS_&7NW`>0oL*D*lx3qScWmjF8;hE5xNeTC3^^c{Ym(^; z4i$%n14c~#UL4i6(N^5xKwE#}xACp4EAUA?ZjL$A{_o3ax-m2Nq>fQXteNk$%k|RR zudXSDRfDfN_Gl@txjNZ}n;R7B@6Y{iu7PHGMkZbEIg`JxpP^9ZHM>;Ds$;4>ukEh0 zZEK-3LjoNK8aWgB^P-a$f?H6<mG{@aJ+>A)pckTB(9E*&@h!0o<&L|GzV*A1q_jWm zY}s&k_l3WQns2;VbA$iWKmAyS0A_H&C<M$sAS-ml?sDt8+gwTfo}b^pU}}(p#7N^R zmby6tWp~$=+zAu7t-_$57PC}a06u*yup__e2K(+ync9wPO!lXpoz?#IZEkF10JH!! zsA!Z|Z7F?qX@yzy4L8d>_NR6{d%(Y&4H6WMdK`C*9p5aD)kw+ZUCRoJa`tC`59l?n zXoVE75=#ykawgs`U%Po*b428Smh_{$zHJPEjFn5wIUvWGH2+0Z_*yoQ&b^=S&Fp@* ztE}OQGo-RQqjTZp=ES9|uQlJ$=&7}Te|`4Mn=H_9Zv4ucH-B^D{I^Oz;Y~O0HeX)Z z{d`x&2H1qUk4`~|(+xl2_gfdpS_vL;OFz1A_IFvaE8C$tztM^%Z>qw#tLwJiTB=Ys zU7>c*>VQ|!sii9Q4@X-z#O{tMO>Y8)wE3sH%X-Z#dm%o0(R;vG=*YgSPqTK59XU1m zg7rs%b9(Y7TcP=4HCK(A;v2rzc~?KN&E-lu*R}Oe<^~&ZBuVrg;1xd7_qNJ9mM7_{ zzI5Lkt2w`*adeKW#zOJUy}4`i<{q*V2f6p&^zXmFG6wWQ{Ohos<=?!lbyF3-efA68 z>SGwon-uP`*Z%B{E&Lr>&>onT@`p<;8=jXfn-$9SGDSdou4uL6z3*?imsmj~>l&+{ zCu_K`fc4_9UdMD6oOXP3Xz}KxaGA~Gv!Sjp<+ia<d~?7~u*3|MyQaQAa_VamZ2F>c zDodXq$LqVoRaUY`+!D|D#{K1&1N#g#qU*<*<i2)W;Ptxu?F!p!FYLQ+Y5`lEFjw%0 zgHwe5`)wC~f-0nM@AlZQFm8`lgnBKU<<wiPb<-5S&0Z&B;wf9pne?<wOg$~f%(HkK zw31-c|8S^fL+$TdsrsNOiP))rqWd@3T4*u9ps+E%|6JSLt3S?g&)VScc;>B+*q4PH zc))IZ(RqNm$ZXB^^6(eFpfK5;eUJa`$#!SxvZ4cjSor)oc7Oe|EdI=yy<AC)4Zc0x z^M0#@+-hi%A}gX1?;2<A_$FO;P41#eza)<6P3NnhQrOvP1)I4s5NS+TZ`oVJarTQI zDA;V3-sj66V!Qy&n+6jPeBb<)SNO=exf$#G^6s2gFyl&&KmYrz)vHxHkTPjOWuxiL zqT?+a7SEo)Yp&#PnIr3DHzgaJ<+h)Lw(JiyvEG{?u<d-)^*OJL_VR*?o%1Judq2}k zDS{fo&9vV~@VbwH^=9s)CZW#vn{T)^YAjdZp34Pmk2t8a=1mv)_R}xS%sFr`AIJ>r zXMb-??tP!y_BbOPY>q)nBfnb9-SQ4zKBYZtA~!$lwY2D$f5dnRyh}u2Ma+ZqFY9Ns zY_#XOn5f~H^I2w2QT|44-j50|A)WdVoevXQHk9*j{qM-Kv8bRZEa&^4+O!qyUeMKN zPK}N>$1;{aHk$zo1^F|-?}^q0Y=ul!wW%4*I4*Hj<jASye!mkt&RnqT{RL@eP35#v zjQ8A^`NEd}RSzgnzWwy?=0bUkzu<J+$jDt|r?}?N{m%#Yvxy&ZOU&87$3F9eyMHq{ zg(Xxl?f3V-?kiwjTCsNR{fhz3H`Fq}T1(!(S|IQhGCIVjvLV{(hB(`m^IdCsj6iWX zH9b&na^b`%zGZgc+~aVb^`ElhnpMA>_{=(b58X)q{7>HYe}ERGqQ9aL@bAVuHqNB_ z^$TxqwdJ$w=sgs%b9=<j<1-+u(-kiGHWsb!k`+F*@BZ0O&%#4_9p7Af_}j59I_k{( z;*>N<*mob8EOaQ&{xnPN-SQ8h>fwy8?yp~*q2{2J%oDp{R&=ONslsXwP%3TPW1sk9 zei}3c<Tyi0S9jfNo)I1O<wd>GRPfkpC<jPz6}Y-EtJL4VWk-ale7-NZUDf!GYmeFW zR@<$+pXx5#l(lbG%;}wJXJ=VIy+1#OXMHHNSW;!_J99p7qC#2RTdS+A8!yh>82;?< z%dPS?f5DxvMlqJU>89I#IjonqZnfT?vet3Um%mSYqD$X(Xmo&!OP=rtZ?<eJcDiBS ze*00%+)znS(WW=^`(xvE7Lqg9f`gW!QIl0}y1=(*n%`xg<XvUk7$|XD@xAKQ>HAlF zffmWn)Ia=d+3@>({;#@oF{J|1tsC8+*8Z=PvkQf|BaTC6x>o)ig)q6)CtLd*zB=ZJ z90L`gKU1K&xR?8nr7<Y+e?FEjcc7&yf-fmAv+&`b+TAq)Yz01BAp_XEls2ff-qBNh z!yT)+BD<6$X|eJogR-Z8HqWuTyD6L96S5X-!Ez>jFOF(Q|Lk~=n@u;Y&TuC0er9h! zd*ef=FS<_Ps;f;q;OpT%$8Fa%-C$iJbZp*a`MoJI4zTIZ*PL_a%%Af5(7!`zsf>;} zoby{Y{y*3M{^en4z2~D7aOk?P(4jh;kMl&|DRk({9yxXNcl@~>k*)JNbs;{^WIcDb zZ@VYQ?^j!duWXyIu<eZC`N)mlPr}_(V^(kDZ><9d?SUyw{C*tP1*d9P-|-cQez-xs zC)RYo-uA6KN~X@|^Mx4oku`3Tz_&dg&9|ot3LFXhDWlSJS7UaKZgQ}^Bsg6<BzQJ9 z3mtlQIIW1$F^6Y!%f{-I%|(p%>kaqhfc+cFDKjsx+*iPQ`Koo&Sz#L_gpCs4WZwJ| zio9gKGZR$6UCzoVle6VY5?-O!vsZbxeM(bo4mh#0v}t|#ZBn+lWkb<<gY}xMEE_o= z2pu^k`<?&vj=L<oZ-TbQvw$`@^_Y}&w`_RNyLO}NcjXRWjd=#!BFlcd9phEIbM+Y{ z!*eh_U)s4_rKPrt<Ls8Z%?f5m1wABo$CPPr-@4<H$nM*a#>tn+g!wHS%)jhx)Vr$J z;ah1UbnH}b-07Jcy?rfP?}BrH!+jP|sq25g>s`^iwomp94E#Z$a{=}?-QaOoPh3-D zTj_F4%-AOxQg~iqZ!A}B`Psa+t$&JwnR3RVh)TJq;>LPLk3-5J16{GAKRmd0hd14r zwNC8D^<69*+4^D*Mf}u0<)4~!=RnCaNOvn%=toZ1&S0mA$_3lQ4>L7II4@Yd`+dE| z<*Csz6_6rNk)y`e_l}w3oA=Hc%erkjl6d8&wrpfi-&JmEv2-QG@zG4jQyxaEwfx<> zmMJSDTp;_0hI)^!V(_oc_u688!9z*hq85s)@9HSN;pdLsdgv(2MoXD5EgPq&-bz24 zm=z2uDJr?=m~bWTpZVSC+5H4&#~i=;O)VS$pSkkiZuv`JZ*Y2lrubpEPu1l)oWEb% zsF^?i#nf~|#$J>&`ThAX-{(FSS_WB`?92H_Q+Vog_kRmka-QA1t3hGgu8Tg=Dm}83 zIKR!w6tadS$DdqNxIdM9a{NA5Gu`kvD=W)J%X&4TBW9<Bp1M^Wx-n<1FSxNB%sIt4 zakpAaZTYIbZ%rmQD3}S~udr6{5q<tW<xc$`+Z@P<hnP}9R@hBT#W(HTk!O`&b8;kc z{|Qi;u-EpqZAqhdR2R6E(oz4g`p=_loQdj6;Eg>SY7gCby=jU1b^RN6!CQkq_%o?L z-+$_CRQ<W7v5byuSpT<de4c(&eA|XCs*sH4@0Nb3u6I!_qvM*T$rB8|9ntywYudE! zI-rvKie^F1t$n@L&&r=a;7-z&>u%ZDp7OKk?u^G59u;mdVPs;_64cnfOhfU_7O!7# zU1u{noNm`l%vnFBAmCV=?)0QeP%e~McOd-oEm@&Me)4(Uf8Y2BygpFqEwMZM)Q|T) zzE%N!LZCQLh+vBMurBxFu+EOi<y|c8xJLQ7Vd9%@noolzXO}HeNd*;$4*yyCe7UPt zTjpN=AJ%rWQQ_Lc$FmH|E>HP<vS+PT$h07kNekvPu`hY!uG+HpW%|$35Z#W_Hx}wW zxsxZ^%`WUkY$bExjPv(qsLr)NwRX3c<C^B<_K9yMEjCUzf1Ob21uDE7-*L^EdFfR6 z#HY7K*UNEmB+1%(a3+iUWxhYVBi!9PL<|%_CEgFdYd-%bckk}n=1oziO*gWfbpP8m zzFDgI@TTtcM6mx~Y&*cInQz{&^Xi*p)G8~-HSEW8N*-S?y7<)1RwKL<l<_x2G%9bp zGgtV~zfCt%*IsLBP`K9ei0PS!#BI~lGIKT_Wtz5`1!Ub9=LgN2pBwZ1FZMS-?TM)G zzx;EmdQYr={``|Wg3d<=+JO|E(fcroWyABccD<6fL<-#2`2N+r<_9W7taXxqYnE*X zZ({ut|KQEV$PJ$=Y}U`?=18)&Y2Zv2_q_T3^bU9a)8XJ1Tt4~*US+!1n`^UwX}-Cs z%ILVp+dcVEl+cNJlVam$K2-Y0`8LO|fuT{3OJ?e<_p=1P-Ilwy?nx>O%f@;2CPK&Z zW{UBh+z|qEm5%<0_@7rF$4s%`)8C<B){s2QU|Z=e4gRvd7m;>c?tea?-;?1t19-<J zv*kL@<k?H6Zcn!<P|(c;jeBk7{$s>Y?!jTbudGAyyM71nn-^*mY>jmHYA&`>Itd<U z`lb0{>Xh2=EgS5=ZLSIJ*H-B0)xNs;t<bSDpPlnh>~QKo6$aj@@@M{mY@>M-1<K?m zJmls`VzxcTnLOPuTmI~g$_2VvAfudxe?&{|%4fQ9y#3mYx@qD9N7(+n^pMcrzE$J@ z{Hu1%dBNGBozzVS{4XDQ$C;?kw@}iy2ef}D|LSdB;S=9{KE6M*BPD-!fCVEHOPltG zd0W2CXxXrzZ@cSUU3G<y&`&o#BzD(C)z%-&)yj+njqbkKbs#?I!G6^S**jmIuA193 zI_A`En>*VwagEG-_4GYDhvP%b-f?JlFf?|t?3)+&eyYH?)m>HBUI~Hr7Rz_DY?5B` zmOnLS`Jr#1hH0Z2>$#JU^iNf++~1Y+*`Opn*Kv*Y@uY=Qd*o#P{nGihqE#=)kcoxk ziuQ-iTlR%B-PrzG^}<h3xpm53m@}oE>tMBU%!&A)>5jiyIL?GVIB@1)g!q&5S9eUG z%$>B?Cg-f!Tc>|%wrAZMKr4`ACcJ;VVNrv^Gv=aw4ctF#1wi}mcQkN+l2(_!*V1(3 zL*Gju*_{*W)$BmU<pPc=+@IoSd^8e&^4npJnnK4~wUCGJg^!u}-u|6tW19S!i*t)l z14CmbYu~v(ejf(wx?7xY!lySVgkAqQZ^dnvO}U$$cRv37P55m_GRO<+1yxaXj>qcG zHC-+Lkp414V7BY}rdr`+W<In1&r}p1dnUSNjVluihmY2WrEdb>O{o90#QN5}28CzF z2GbmvZia4p$SAqHe`|9uXy~h^G5GSM$-)Ott<~Ja;iIb1;d?afy&q@Fckk~{-8M{L z8SV(06}$1E*6@b9;+yX}9A}giI?gT%f4Pq{`RTLusy((Vf|zoJ6#~{f?6j`?DfQ{} zSD_bsJQ*F=c%D7=%uC_6s_uU6$E&7pT^Gy5@=DmkTz9|WV@uA&^efl*^*vWr=s4@W zZBnK1F}+z~r~ekso3k-cH5asleHTlg_wJ|DM2=s%x-Cy!QK3WEX=jtE(1~@^&F)Vs ze9d+1suCkpDaVxVkEeAtzxi`$rytqFVWOwdVd@w4y@fNS+U0?%<n?vYPTyHLzC=8D zbLHQ&o?77p|L#1tn{tnt(Qyqs`^tP(wVtWFKib<p{wX>AMfBfSstyaX8vB?3Uar#c zcS#oOS$!V|foO@+T5i<|xl`Aj?oE)N`taArUv^AZY8TWS-!H#$T%|$w-tt9PZ`Ct8 zuK9m_!)IBQ39;&~(=PwnUA8ZRRY)OV_5sbz9Wm_R;^llpZZCZAw!bODyw6!QRAs_l z&E9v@1Dj@o`X0ALEVR4#Yd&t}Ojy1(vSaIOF@Ynm?EZ1TuPga`BYD$@eUeX)Z2)!g zBeon^7`ee_){A=ay&JxA!~{49e4d%%s?fM5=1BZI+im{G#MX)=1~Rc^3I9lv(lbx7 z-L&o4*V~}#aQE?LU8mf{zu4=Zowk3|ojqO4Og%w+?fXtNo%dn*eQS~UHo3;DEG!$Z zw*0A6Wa3PjuJ^y&XmL$$<hyI{T^kr0BU$%N<eWF3;oHwh^-cDTm7E+&pC_5V4*@AX z+jst?#`ZloN>+KkacOXP%XD9kb%XzPzJ>qaadRZywRZ~*o8eH_YVz++PkVaI4lfp8 zVbD<`7jHgfwPgOb(X)JuZR0i;mW|t<thELwQn$u8ik151Z$Mki53sWKo#+2{_D6=( z4JjLzUn&Y6UteZ~#$+?yoO<csWFxtW57+Bx|I^8sd%%h*{_OtKn{(~;8h*xn33U*7 z{d(f+E$>)1bua%~f4(B=n5cH@1+&Iktmkyo_Zh{_`|x$|EX6N&JdBPx62~{5(i1u* zH{;m+iG_c)7)^W^=rtN&erIhQH<h6*D0c1ZvJ*^AHzxGwsqR&s@OEC<>Afe)Rxe4- z6<Xo>V0-2^o30nSoC)=7Ru=BPrl`<ywQ$br7e<XayDv&^+WYz4p?_L^yVTfqJ}mz7 z?N$%7@PSjsihDVDf*b^-pCqo`y^>{9(c6g1noG*YF*oABA9wuzSJ=Wvb-&f)$$AIg z-#-}q@d;DYjVEc}UUVL?68|>6`}g{LlQ&KEToBgyeaXk`I~n$0I~<>XzbRtx@qMe# z37;zSJpA;U`1cb#JVMWAPje_|J@t40y=focv23s}-R?70aK`)w1vC3-<MIH7#y3Km zuN@Z$Y|CZ$4iRcx$o)r`S8ht7!=dXFo%6%$S;B+`j)Vz+`hAc~Wy;+WkrStm{+-Rg zEwEScMVmwAzhukbU-z+W*k86-B~&0I-a#Pyzr>0Ksf{d~x|g>6?svM`8>M&r6HA-Q zhv!0jjK2B*u*&o3ec9>|%+wSSJn5Na%YheS68&<ln~TKj^_f`I#4VCazP)zlOi1_H zx7(KEin2n-)#5d!R*eo!H<#V~b58PU_UYXzIc5jnnW+XWK46&n%USZh?+>e;ZVa}< zGu#{mX1krW3*}UqGF2e#Py}ac`Kb@#(?e^SOm;UN`2Kl!(Zj#Lh4=ky7hz<Y%*~NB zdG^i4NsTR=iUR-7TO3gKd(U*^^f;C*A&v4q@zu{>tDBmx3upQ)AaLZ_!mM*zEN<dI zr~jTb)i`zg=^IPBj+sU-KG3=NL+HAnTJermf(jQVG$>pXSd#fl%tPb05!3fGJIar( zlblx?`Q1H<<L>+|em{Pl6Og*Z+^EOJkrZpAmGx@t0gWkBjZ?}cde>Ipo$x4IP=o*4 zzpP{FMtsG)JEQn^+uaruIC9I5>6-i=ho+lfFF%oWUzqcJPkhA(-|P+gOi!79A9j1( z%^AP^`_h6^A&IUA1+yv2EBoU(dj2teHd`DJcIc*QRp1V#cBO!(Ytyf_t!G(Z^me*9 zBa<!{N0RQN=vfX;k(^1{`w!_bo?SexMrW3o#`YNz)z@BsXj%VBbcr}4ldPb?5vwAF zDUJ#Y*ZjHqluvT|i5)**{N+mF@KN~iJ?Hn`p7p6UwvRhl)(5NIxW9~rLnp#PAlhKZ zQw|@c2?b?axmh;9{d8a2&!|0@UH8N8zz13jSNG(rS4=f{=Gx%k4{AZlXru~hFfFd0 zez#<9LD;{yGiQ|6*j!t3_LJ%3TNl2XUaz=X_@LA>htV<T#_{lSQ4W<kvD&%Q_Mg#- z&%T#nvTfypuZr7$TsQf?x972O-&u=wf41+>lKG@~J$fxuQ^Z>Lxckjw5`Rn6IMZ&Y z-6{AI_wRR7bKai$Xa81+Z1Z|xwX0=4%eu+GZg#EW6qpg>ATT@R%r}-Q9fMuZ*37ZJ zT_<wkl;oDzUv@0Dn_BnkmT|Od&eVGKg4)&oyep<MG(KZx+4#)&tjB_ICeHMyg+AdY zcf2xseCp@U*%#K;g`AF8|Ch6K;)SoruP)!f%E+{plOt)XY~f#_8BPj`Yi*XTY}vZH z_fS-&{{Ps#^@THg7TO<M*|Or3c-Q{3KaN@@zFz+G`+4C_br!6vV>tvAHZ&?cb9QKO zP-f!Hj!s#0y00mcGyQen(z?2fZesIlCVk%I{d3laIR~S%rX2X{Z|{FW>o=$yx}cEJ zaZO>6u#kd5rvp<=<t&GvRa@>{*tTcA^|W7+KWleRzhx;dk-q-hW|mdPYAerf1MRKZ m-k@NXp9tShGfnVEy@=Kdm2>m2axgG3FnGH9xvX<aXaWF8arvhJ literal 1958 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 -- GitLab