From 4e87f699fa5cca3701ef04fec82a8befc3050275 Mon Sep 17 00:00:00 2001 From: xy <2795152558@qq.com> Date: Sun, 2 Jun 2024 15:42:23 +0800 Subject: [PATCH] update Super Mario --- pythonProject1/.idea/.name | 1 + pythonProject1/.idea/vcs.xml | 6 ++++ pythonProject1/data/components/bricks.py | 1 - pythonProject1/data/components/castle_flag.py | 9 +++-- pythonProject1/data/components/checkpoint.py | 3 +- pythonProject1/data/constants.py | 34 ------------------ pythonProject1/data/game_sound.py | 6 ---- pythonProject1/data/setup.py | 5 --- pythonProject1/data/tools.py | 3 -- pythonProject1/resources/fonts/__init__.py | 2 +- pythonProject1/resources/graphics/__init__.py | 2 +- pythonProject1/resources/graphics/level_1.png | Bin 15313 -> 19247 bytes 12 files changed, 14 insertions(+), 58 deletions(-) create mode 100644 pythonProject1/.idea/.name create mode 100644 pythonProject1/.idea/vcs.xml diff --git a/pythonProject1/.idea/.name b/pythonProject1/.idea/.name new file mode 100644 index 0000000..3eb02f8 --- /dev/null +++ b/pythonProject1/.idea/.name @@ -0,0 +1 @@ +mario_level_1.py \ No newline at end of file diff --git a/pythonProject1/.idea/vcs.xml b/pythonProject1/.idea/vcs.xml new file mode 100644 index 0000000..6c0b863 --- /dev/null +++ b/pythonProject1/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pythonProject1/data/components/bricks.py b/pythonProject1/data/components/bricks.py index c4e421a..b644ac3 100644 --- a/pythonProject1/data/components/bricks.py +++ b/pythonProject1/data/components/bricks.py @@ -133,7 +133,6 @@ class Brick(pg.sprite.Sprite): class BrickPiece(pg.sprite.Sprite): - """Pieces that appear when bricks are broken""" def __init__(self, x, y, xvel, yvel): super(BrickPiece, self).__init__() self.sprite_sheet = setup.GFX['item_objects'] diff --git a/pythonProject1/data/components/castle_flag.py b/pythonProject1/data/components/castle_flag.py index 4720e52..738f7f3 100644 --- a/pythonProject1/data/components/castle_flag.py +++ b/pythonProject1/data/components/castle_flag.py @@ -6,9 +6,8 @@ from .. import constants as c class Flag(pg.sprite.Sprite): - """Flag on the castle""" def __init__(self, x, y): - """Initialize object""" + super(Flag, self).__init__() self.sprite_sheet = setup.GFX['item_objects'] self.image = self.get_image(129, 2, 14, 14) @@ -21,7 +20,7 @@ class Flag(pg.sprite.Sprite): def get_image(self, x, y, width, height): - """Extracts image from sprite sheet""" + image = pg.Surface([width, height]) rect = image.get_rect() @@ -40,11 +39,11 @@ class Flag(pg.sprite.Sprite): self.resting() def rising(self): - """State when flag is rising to be on the castle""" + self.rect.y += self.y_vel if self.rect.bottom <= self.target_height: self.state = 'resting' def resting(self): - """State when the flag is stationary doing nothing""" + pass diff --git a/pythonProject1/data/components/checkpoint.py b/pythonProject1/data/components/checkpoint.py index 4d52086..ec63a39 100644 --- a/pythonProject1/data/components/checkpoint.py +++ b/pythonProject1/data/components/checkpoint.py @@ -5,8 +5,7 @@ from .. import constants as c class Checkpoint(pg.sprite.Sprite): - """Invisible sprite used to add enemies, special boxes - and trigger sliding down the flag pole""" + def __init__(self, x, name, y=0, width=10, height=600): super(Checkpoint, self).__init__() self.image = pg.Surface((width, height)) diff --git a/pythonProject1/data/constants.py b/pythonProject1/data/constants.py index beea4a3..183c70c 100644 --- a/pythonProject1/data/constants.py +++ b/pythonProject1/data/constants.py @@ -1,15 +1,8 @@ - - SCREEN_HEIGHT = 600 SCREEN_WIDTH = 800 - SCREEN_SIZE = (SCREEN_WIDTH,SCREEN_HEIGHT) - ORIGINAL_CAPTION = "Super Mario Bros 1-1" -## COLORS ## - -# R G B GRAY = (100, 100, 100) NAVYBLUE = ( 60, 60, 100) WHITE = (255, 255, 255) @@ -26,31 +19,22 @@ BLACK = ( 0, 0, 0) NEAR_BLACK = ( 19, 15, 48) COMBLUE = (233, 232, 255) GOLD = (255, 215, 0) - BGCOLOR = WHITE - SIZE_MULTIPLIER = 2.5 BRICK_SIZE_MULTIPLIER = 2.69 BACKGROUND_MULTIPLER = 2.679 GROUND_HEIGHT = SCREEN_HEIGHT - 62 - -#MARIO FORCES WALK_ACCEL = .15 RUN_ACCEL = 20 SMALL_TURNAROUND = .35 - GRAVITY = 1.01 JUMP_GRAVITY = .31 JUMP_VEL = -10 FAST_JUMP_VEL = -12.5 MAX_Y_VEL = 11 - MAX_RUN_SPEED = 800 MAX_WALK_SPEED = 6 - -#Mario States - STAND = 'standing' WALK = 'walk' JUMP = 'jump' @@ -61,21 +45,17 @@ BIG_TO_SMALL = 'big to small' FLAGPOLE = 'flag pole' WALKING_TO_CASTLE = 'walking to castle' END_OF_LEVEL_FALL = 'end of level fall' - - #GOOMBA Stuff LEFT = 'left' RIGHT = 'right' JUMPED_ON = 'jumped on' DEATH_JUMP = 'death jump' - #KOOPA STUFF SHELL_SLIDE = 'shell slide' #BRICK STATES - RESTING = 'resting' BUMPED = 'bumped' @@ -83,42 +63,28 @@ BUMPED = 'bumped' OPENED = 'opened' #MUSHROOM STATES - REVEAL = 'reveal' SLIDE = 'slide' - #COIN STATES - SPIN = 'spin' - #STAR STATES - BOUNCE = 'bounce' - #FIRE STATES - FLYING = 'flying' BOUNCING = 'bouncing' EXPLODING = 'exploding' - #Brick and coin box contents - MUSHROOM = 'mushroom' STAR = 'star' FIREFLOWER = 'fireflower' SIXCOINS = '6coins' COIN = 'coin' LIFE_MUSHROOM = '1up_mushroom' - FIREBALL = 'fireball' - #LIST of ENEMIES - GOOMBA = 'goomba' KOOPA = 'koopa' - #LEVEL STATES - FROZEN = 'frozen' NOT_FROZEN = 'not frozen' IN_CASTLE = 'in castle' diff --git a/pythonProject1/data/game_sound.py b/pythonProject1/data/game_sound.py index bba2e31..3aa12c8 100644 --- a/pythonProject1/data/game_sound.py +++ b/pythonProject1/data/game_sound.py @@ -2,9 +2,7 @@ import pygame as pg from . import setup from . import constants as c - class Sound(object): - """Handles all sound for the game""" def __init__(self, overhead_info): """Initialize the class""" self.sfx_dict = setup.SFX @@ -13,8 +11,6 @@ class Sound(object): self.game_info = overhead_info.game_info self.set_music_mixer() - - def set_music_mixer(self): """Sets music for level""" if self.overhead_info.state == c.LEVEL: @@ -25,8 +21,6 @@ class Sound(object): pg.mixer.music.load(self.music_dict['game_over']) pg.mixer.music.play() self.state = c.GAME_OVER - - def update(self, game_info, mario): """Updates sound object with game info""" self.game_info = game_info diff --git a/pythonProject1/data/setup.py b/pythonProject1/data/setup.py index 5267f26..a46338f 100644 --- a/pythonProject1/data/setup.py +++ b/pythonProject1/data/setup.py @@ -1,13 +1,8 @@ -""" -This module initializes the display and creates dictionaries of resources. -""" - import os import pygame as pg from . import tools from .import constants as c - ORIGINAL_CAPTION = c.ORIGINAL_CAPTION diff --git a/pythonProject1/data/tools.py b/pythonProject1/data/tools.py index 429a69c..5981628 100644 --- a/pythonProject1/data/tools.py +++ b/pythonProject1/data/tools.py @@ -97,7 +97,6 @@ class _State(object): def startup(self, current_time, persistant): self.persist = persistant self.start_time = current_time - def cleanup(self): self.done = False return self.persist @@ -105,8 +104,6 @@ class _State(object): def update(self, surface, keys, current_time): pass - - def load_all_gfx(directory, colorkey=(255,0,255), accept=('.png', 'jpg', 'bmp')): graphics = {} for pic in os.listdir(directory): diff --git a/pythonProject1/resources/fonts/__init__.py b/pythonProject1/resources/fonts/__init__.py index df77b7f..8b13789 100644 --- a/pythonProject1/resources/fonts/__init__.py +++ b/pythonProject1/resources/fonts/__init__.py @@ -1 +1 @@ -__author__ = 'justinarmstrong' + diff --git a/pythonProject1/resources/graphics/__init__.py b/pythonProject1/resources/graphics/__init__.py index df77b7f..8b13789 100644 --- a/pythonProject1/resources/graphics/__init__.py +++ b/pythonProject1/resources/graphics/__init__.py @@ -1 +1 @@ -__author__ = 'justinarmstrong' + diff --git a/pythonProject1/resources/graphics/level_1.png b/pythonProject1/resources/graphics/level_1.png index ea814d9e64c8c275baffe96f439b63ce752970e6..d261f9e4830fc51cf13210d6220c17b98e1a4ae5 100644 GIT binary patch literal 19247 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 literal 15313 zcmdse2{_dI|L+%-P^i;EC8Iiy78xpO!H`xe4izd!RElaucIK-nbyPa32pKK*Ju&ui zIFXPROA%9HMl+_#j2UMA-p_Zmp5Hn5fA90$`+x3pzmLZ(pY6T8-pl9x`OHQ8U0Y`= z&r^mVXy*29n;gK4C3ydK`ZVxA_}vOq@FM5$uyrF;@KpN)_%OxGYNr(h700QF4^D-k z4Po0iS?vyXWA)+Uw6}-qzh&SeXUr?vf)P4|yHawe)V(OA{5arVQ4$f4PErS)l| zAjURm;@ZZ0a=p{yWP+gGl-Bzj$z1ZqE0gudYx@`~Gv}aTf?M{_Q!`BERI@C$P$X z4NJN2zj*xsLgoAQd3WUh+LXkBi?-p7lxL^jcRH=5o4g00ik{e<>pvgubn6tQZN|b6v>fV2!Q| zaL}B$V}tL@d!{<)`+l0GY8JR4e08VdGRW$<#2$v+iGZ-ISHe3|s7{QI{BHTr6Bk3u zZ=rW@?_1cPQkNf_wIA1kff7l8jb&xTEF5Hn1MBSmkIB{og})k5gM*z|eLB${34qe7 zzq-_TiV)39JoWraL@|=1^*7->j-6^>mvc_xqOfk!bVcp9s4MLj8>GYQEmwS73FYW| z(}c>5!%{V9$oMnUE?~92xy-kVwSA-Wvm+Mh{#OG+uAD3=Y&RtkboO-1X{^vb-I1h- zu?9Mj(l{Sjp3zPD<7W=fDlDq~2=d+N0Uz z;*Pjpv$gU!59bJH*#iCdWz3^orWA!ccE&j~)S!_yof9X-=Z2DVWD~oSvl|HmSOe;A z-r}1;hcP9Pvhz8i?!g^AtF5~ft?MTIM(F4;FR9vRei6k<(Ip}ZsJ81?IzvUS$D zxyH>`wTT>h%(I>bWE{BaZyhZ|S`ir%-RA;P0fuL^23V@AZmDPIV9z{gbHRCJ;~-z3 zr=z_SDlIF$Bp1>FAoABWq2#rsOp-^YX`{>-_;<;edDAAp#J!jib*8B8@Kfs49r~MP zqlyCmRaypd|KJrgn4Awow2@3M{PXdN+wX!DhHUo8sL8waS;*I$#2A^)Jn{T2hZg_S z{t*$iAz|FCO4XvZJg3*w;E9H+HZRhGT7C&zvLO6A_F+OsE!&G>Hjq?8e3*^1+*;!*wy0*7{L zXM1(43$CXFllDs^_Cb)$bc>X$R6Y0$+-H~vpHg=yII3Leeu@MA z7FCP4cnu{^sL=Z7#O8}1bv7T2v>#;LeWgLnn0{^J+9lJM|G~`fGE-Md>h4vX&tjfn zH65ADs5E&?lAxHSU8h%#YUki&ulZ6U{jT4)_X~>M9(Wx&2`+7zijqPYf<^rb% zy0?olX}AH+>|4kx;M#0%>!%8EmN1a%_rQD3SVXo`;@WVwBjkk^03oj}Mq-%^(GH34Zt}cBZKV38r&4lBsGIpe(Y6*u zeo~oDqSca{0ncY7T-~S@*iyw(ecN+6B zJ4Gi|7$j5nPyB{yMw&piE2SRNc6-mRxQqz$R9<`XxRU6g0ty%h!L%h?x(zSvyrX{p z?5n+YZ*^}xJL$tJdsV&S+1`XZKAf&Sq{`@|pYON�W0rV;E}o*Itb}E?BJDNabD3 z$Da}4WWg%(+Fw^l46OEtf8Q%6Ho+AqZe znd`T#1VYiUG|nkFtF=1T!|9LRGtR7At@dkjY0jp$%DJft^OWm$H)`W9PRtMT~q`b&(qINymLZt+%qwEf-?T_kWFXwHzF*vKTG{)tNfBsrK!fp{imNRGOY8L z?D{@^>kJ*Rk`q49RI-OEf8`H_J++K zkHJ;v@>O4sOHcUIck0M#HM~JbY5|=8i)eRiSe_~hT$mDjcKTmOy9&@$;}+1@Rp6P;b?vVy2!wQB>>ls}W@_~7B&sn>Zv2gN zFJptqMO#X=%3=?c)B%SuolM=MzT&KWqdH@6zWJ?OpFK{Ob6B~1vbk1SH_n7A)g@+V z;}pP*KmY5Dv(OorM6=|9@wqxK33ny;?NL|AwK`MG$~kD2c!5=!U&glZr#BGY-%qdW z_^%An!v)%$XAk+XJiJVnT&=1+Z^CrS+Hi+N8Uf|gzo-*YsH+*&cBEI<17D=Cw<@He{%z8IqM1@N7bf=tvXtT^ht)z zpkp9y{5GNG+}a7hk`Ug5O26_F0;RU^Vw=L%=pSgfeviH=!%hSHh$feK`^T1{y3IQ_ zXv$hTzr*>r>7hd(Ci;`T3;miFWt1qY<<{(XYIoZmb|Y0F+bcmO>&z=Y&HO=1{~i0q z^x#vqiy64LrPK+Z2qjKkTWOG~S6#@Mdk^Q5*s`KtF81HxE|@XYa*&{0@ZP z_|F2|@qU8GZKK6vbA2Syk8FE4Z&Tu;bofB6G~fhGzu$}-#T88qceXH|yd#Qf8347{ zioV~QM+(LcM2|JUzXw{5{749Qz3;3SPakc~=0dHEVVY1F&gIj73s~?SlfRw{XYVX^ zs_>lk;&oIE*zM+eVRLGpwEjP-$?X8~|E|en|EkHv&V{jYXNxA57;N;my{+i(_CvA5 zDA`&Q)7cYy)qyUTNc}f`NrT37Yozsy?iXnt%QEJ$Es%`LX?4eU*%|&&2zjg9R7fJM z!H2uJGWEl`FZjvVm7n4*YVr!?jFMl*#}0UFekXmtN^Fc9Xwx<{(CJxbu4Xy=2g-cQ zQ)4e!xR~t@)roxlgPXC$DH<;7sR+&*GlNS01^2s}#`}R$ZqS%@+dSBr)mItHzuS{L z=O!gQ)P*IZMuqyl(}1A=hN@8hy<{en+t!=BwKL#5K@6WpVMuACA&{3{`f2Zg|Rz8pg_lL4oWYmJn;H)mUO{f3`3;GV=Nre7> zvz!8jZ%bQdil}{se4$G0g?f*>cl;hxMB-$|Jed#s!OqhJFp^hBB+M`^zlB@#oMU|w4JKHtpyplI*YlC!vRCS2S?kx zdboAIci5f13zNnPgqYzc;NAH{iI;wG#y&6nXFb!8g}YJ}-2;CBM_${R*vLRbsY{qn zq{|QBDB8kXloruz;nS{QH2(*u1^s6skok{(A@bb%+VPB@+-d-o(;LD*74=jF@J2S5 zI=Q$=IUf#}Dvkx9#WA<7_z_<|tGly5(_xT@ME~6yoRw74-g7i8>wJM#IE9gvBUp^) z0Y*=zU%4w{H~ha6D8Dc3e3PVe)<75m_^I54&Ryj1L(q*OEXi$em?eIkQiW&T*e+WI zBvs#rM&3AT7`a}=XL=LJx%zRqeN#FPSUzm5o~my2W|T?q>=#MLYw_o#rM6edC>Ffq zUjK(4^Zr^G3!in3or0?6M{kn%_)aVg;({eAeab(hU4!w(o1_(K9nI1kq((@02Fx5@ zo*^B4i;A~td=nq zN;O3y-<9!vVyrdvPm0*83*l~7P{r~>ME?*Pr&^aA=vD~(2)RDo^&*CsYTbpq6119J z=LZ61$?NLS*P>tQd^z~5LT=RygxIyBOyXu9b_bEKdvZS&muF6p$~Cw^kK9o-)>YTb zUxOz^l-z=dPoD_V${x|H0a#4;#`a@jo{ysYrsqVouIye>rf)yZe3yKlom9mECOQeJ z?Uj$ps4S)GGg1{O_m5C%5x-iXI0FQ*C>fZ!-f+~e8p}ge`D?;5Yt8s*QFq0We$!!f zTM?S*L=Fi@r#yKZ84o4vBU7_+l;sk(SD!~OJ5K-8G$9ts+sF_!^l)hyqXTP^tV2S0 z<0QE>XUo|SHRGmeT>UoD@RTRIDO1X~ijbs~Z#)xE%M;Q7)9=&2Fl|DSTQ-)@H#IC3 z?cdLpx(YIu>L7h|>h7@Ck6)myaknD)e*4{@9-rZ>e8HS$GHTLAMs1H4zng6{DQsEW zGf?@3AcGzLqua`(uN|d)8BnytOHD^wURv0V>&=Xy(s=x?0Fi6Y_zAZ{c*}YjBlW8_ zQ35%W06=JY}i7R)lUC@Vq6|WLsR6rV}?3P3HGxmA%w0Gxd!zL?gx`% zx7O=j-y{>LZ0$5q0fZpuMB4j5e3kSjRfjgX-+HQJ_NHRN-Q`Y%m^Z|Pf&(>w^#2ek zjqU(9N4YJ$%kDJXS0IA~l2Eeln;otf z==117>4+q6|8Y?b8mnFcK(F`;XyAPd`TgURamli=!i*z$=8J0BsrK0KP4KwDv{R>K z!{?k+Cg%u^+m@;i@hI)vm{;SGvsJrR+N6(BNCB}YC@4JaWblAmThLUi?oz$!@clu= z()x>?Ef-@3)yxHjOH-z3?V8s5ZvG(~>7vBG)oO#2yuvhpDW z{bDq}aWeKuwzANn+KSh4F(y(r&aM3UYvd`$?#+1_AaPH-a!W#;7V?ER| z>%m1GGMRFSN$m~W!;J+Uq=9^iAbu}{pNTLi(DlqQnK`KCxlBx}%m{+T+e^o@`4Jmx zfP=4QO;B%{-1Fm^k1!zQkjHHpYgP6hp{&u`?Ct!FeB z#iRD16df<>?KN~AUr<>b?n+HlNPi}C6}k@X@e>y7La=K{Jv}7cvGkL$uu!UE8Dc{M z&PT0o1O@dr-IO8N{DybBVdiGi*Fi6KiwE~KVMAp8K1-***gsP3HQm(k`E~QhL%Ri+?|3?pja4EI^M5|KiMxC)$hDvcfzNyRvOT~=r8$`Kow|Q zDBVf`C9hgJWyt+ZQtb4P`+Vyj1XGvZ`eyl-ny5KzWK~?yJ@7!MKgcFS=Fd?I5?u8$@6S3^7jR0z?1d&5GgB zexAnZ!&*=OC-Z@D3cp!X=tg{aJ3_?M$BBleoK0v(CZoJwkNGYl^U$P*WW>3ms&r1H zEjsJl9Qrq&5`GAszXpPIBRQ8UDXR>ua$fo>pdR)&wv3=wtp@twdf_F<{RLxwRd)L# zdaS5x-bQ$NPcAb^mu*xzjKifbSzy=a&F=ayb)xZfzQToCS@-;mTDOy%YIHe+3CQiXXCk3>K6XH>An7(UT|yi(bD4BUR;et z7Cpv*|2TDkbwn>^M|Y_lb6=a$1uF=_kP0wFF14XO4Y7c4O!jwxt?RqkI*`On-t^};s(?dso z+?MixzHJu}V9>z+r2xyX<` z0DC!F5VVAQktmKPes8x>388a*XS+QKXH+D2V{hxVBDMq^@G$!y*jqbrq*m+G$B|Oh zP2jl`@3?Roj}TK-?%PWVOl0s~W9Rjb@8pel*0Xwu(X#DaP@wUn!jQQ-i+R6Hk6d}~ zC$i&lqtejPI#-pM&KU;)6|m|Z;MWY$if^6eyTK|aZ0_UB!{}v_qGOu=*uB*w@roIa<4xA0LsaR0Dmmn}K74hO1{**_hH(Fl%CdC?cJ6I< z53T(6+7d&Q_4@9ICzP+)8)|y3)rT{`-wd$V;>+6t`a#8kWr9->KBe zl$6lcJYxNI>x5j#v-jP5ag7B{4pZbFZ|1&TccA{j!>WLmA&DvCHJzsdrR_kCrbvf| zSYAw_$T8CqYi%y9Ygz&nl{*0r@(ebsM{2KDOKs3=-CVVwtlbYFabBh)aQF#9%!BAD z07{b(H^WP6R{%1tJiait`C3e~rsZW4dt_4~Wqv0ZtUXc@wXzw!c54+8FP_=3rDvudo)hB^jF+mShgPhD8MY|7-L^pX&KN*${DHL<>4a^&=+xV1Ef9XkAoY$e?yHk|fjSxCdZMJdCyWaB zkHSnkKZ4i3D+pdHl?IVuN7nP+56zE`QlUK?M^);nTGGAl^X|X_CyKVTMbRx3 z`_yd#uqyfyqgtSZHN0H2wso+-0(4XF5}Sq;ooo{j!xY@ZV^YF3N7gt0ikbvI#i+J0 zM2Zg;Ev=D+NI1_^xTa)>bwFP}SEP91gdQdV>#7CP54F{FaodWm_reu+2m9&Gq5Qhs z>Y!PhJULe*+QRAO_+u-^85f-Hq|_M?JS4>)4 zE60dhNT!2GlTAZ@1H0q9nwB@5#ooW`{*|qQr_Qt2w3ftaw?^pZ_r09cL!F~C{Vacx zyvlTrBLj5|X~cX-a{_wu!ZSi*0)D?OQWRq9i~?rrEK1q&lfV2kEkTF=r(ntZya-e% z&*5%~@KFvP=^!CZ52F@plPxW5Scngrfl{JJsdQw9Nl>3#QU{AnL>$@?#fz?x$-{|r z`nbc-N4OKe>$>)wt02tZew);wCBY*tj!G=Tj&}m#G!=*EQVWg!uuU#ruNHYnScB+0 z?~~ZL!X8|It$PR)4q0|bBG>Zp{AkH(&r67-5u(4BA&d``%)7@1XU#~9-A9(%O?MG& zDSh9<*oS+EnCa}gyL=tkf47)wWIWCL~m|@iD zKOK&RaTvRi2^D{vPNdsH`nYMxwjkFw5s5QF(EC5vEer`HMD^gQcV#fksF78iAr*bB zG#?U?UW(zXvWQ0}C+btHwf9q-)Y|WuzxL{5G@tfozTDzKr>jd-jfE6x0%>*+ekmi0 zUZwi*pt4>W<(2RrF~X=*gmJUu!WlR35+8NNbqLl)Q<}u^Et{io-O5K@7@kk)JKk!< z>!Js9D?{8-PhHvdh9n;Bm%1C*H`^7u?R8Ss+(iUsQtHAo>DZGniK0>=eKrlrg^{01 zNza2N@mjeEohZKjo=S3Hnh@*H_PzehqDtv?0n8CJ+4QO%o}Y_keuSemEN4b=Ds0@Q zG;chra8N}t{6viQl#HkCdg2A1d{}~2OMghY)}h$`ZZ>VNgD5s1S1iy=dM{BcyeGi< zCzecdP!UaO5W^uh$KX27UtOeEW-&@=yX{Z=aWZL4^G6N?h5q?|%uI<9A5XGrck*Di zzpd`3Bz#(LcuYzWj>9zms`Z6PUgJk(9Yz_!aiH?Di!x(V-`6eUD@nlOU$@Pmyy zh@-6q;_M>2bKG+rxh^Rjm(NQ7nX-?wXq&^k8a2fbS4H@QE9;j4qT#zByXOdx@(@s! zo-K|lAVbVFQrbRz!d z(-N6L_^~>;gJ)DfB0d;+aDa2pnIXmr#GZPrOf&_*-K$M*VuZd4O&;J^?CeAwc@#I5 zwDT5%PXSIbM7=(BPje#Rs;mCbgGVvE!{BtUxSpNz0JRO)aj9H9rV(+yc{Benk zr(_-%s07?A@_&*|OfLXRa()+-gcLe4_=C`a$3yIaMiQkjVv*RxlRPrePU1NiE zytYoHq1`{H<=}|3NHD+AuFD2dBq0q+D*~kOGx@CI)bJCnGBW)sO80;6XA0{Kr^olv zqQ?uAe1SRAJ|aSDwI2c2%f(muD)}$JBUuq4-f`^GIQ(%Gw|8V986Nb!#1Bj8;OUPG zO@feagmxoLq;S*c!+_TZnhxUm$f8!zRC&Juw+_%Ks;xDpr1WBnj@#FuGSAsDA^fwZ-5ZV+o=t0!|p-ahqTgk?COVR&&3@i zr;o$0yz;p)$?E9KJ3ZP8{tu% z3jGrmcCg;zB_}}n|FsBrSahqQhv{Y1DbBs`8TpC4rs-M=B3WAcX(;H-Ft85BHf*Zs2QkCVv$XR7s^Nm{9^@5^@HN0xlv1)8c6sSt zg?HF+@PbyP4d*bwia4|n_PFdy@%sQYU7q2Mc#?7MAsIQi;*P?&bKQT6sbbG#e!#Cc z=HV;GA|eRkj-`lkF9!NBxKa`NxP~uYo**R&wcJNw*e3s^J`M3Dr}N;on+ykFZ;Pn= zQ#{+zxgEzTPp8^fmP4=8UTw0fVCD#y3sC@Gqhe2s=T}o z@tg6f*ciaWgbNRQZI@s^dPu2lURPhP4g2IvU(>`YuGAs-)5^__5X{G~M^WW>C;C|5 zY-M)G0a>-uWBFFBoZ{x=Se}!B%n#)9Dybzw4QB&qg2vVRDs3?F0zm*Vjl3 zN{Kg&q?t#gzv*z1s#_v#f&e!tyX(M?pa{Mm8CeL1UdMVDJ_~0U3s5_8p);v@?LH|8 zPMk~0=XVLDaj%IE_BdQV$(oMW!ze^kY6SZR$AEso4X@MLLWBXrx;MeuB2!onb_jS+ zc-q|kI2#N;PFCc`A>-}K%_y!J*1=$p?}B`dy1))dV9`7NJiy1njXy#z@EwXoUw3kA6U|Df#5|VOtM`Y6Vqf|cTy@*>SA7%Quw1=EevJ#qlnAq$dVd~ zeVIu+5?4D>f?J2g;H8D&>^W3R#Qc=FW!S(+L~+m-@`Cj2h+~w7`$v)V2uXm*L|L)M zs{0Iq8(CgUwO~aJzi^wMK_28gy`M-Hnj|qLYLxC6OhY0Ze$`*HtXTTj`Z1Gb6@ZhN z?a!rj9o!kS8*8Nn>BJjmGBi!&A}485rn^)vL^%SK&1dgkJJ&l)o0D8f>>r3A!Dw$o2TYNs-D7>89Zx!1=^tOhWrX z=^z(5*f=p`B}fiV;)*>|aqQl@Da=>HFiI;qQEAhN9 zg4rYi#T;@1_}d_xnVv8%poe|^_-&z(kPxsILOeCr zz^34+)j}d7pQWf~3N8|bPn^5qiX+4)pbz1i?1j1&OikQI%%Lub?sY)$s&VX^xngY( zyaJe~Je+}E&i^AJLDtR9t#&&~N$s2JcHGd=&^T!LGLzj+M1VECk{cnbKY#ugIr78h zDR2)Ww_85z(;f%o!6DDbElpPw;uc~t)@~N(tHWo62({ZaGa5a8C8{uz6*#nQ%oztrVBpD*8=VXTmh zVV_m-CG<8|>FO)&8kaGV=HnKu38@nOnZw{`nSNFgbu0MY(l<$e`PS=!*c3i>YQofV z>N`ynaxEBzKDijaE>`y7B}Iw?9?kQC)dt+4u|upx1e#wC*=mZ!vYy}d#gx@DQpBt- zr&U#r;oikCMMiIRIIlrxa@tkR8S7kRrHLQ*g4n*9rIY$*NGk2i<8G zIH)MC4i8{CqO5Z`uIO|@C}5}w)WZzw?I^u!n8T?uFb9GMtBMVO=-0l1lr(M!kg17k zAw+<-GTShCa|GABA$r5dur$|=du6Js#mahsK0pwTl8@S#Mup8SEt$;;hCHVJq(HFL zgwK2-;ojM#&rDW_<7I0eH3V z4a>!xj!$6!Lg^3Rv1a%Wsz5877p#gleTSRReNbBPlC5mT zQ6y_QHeMG?=@5gfW9i|NGSDUHD(deNkPF{=Zw?0&Li)epi)E+!FV@zMANk~eA!6oW z72N+Tma_auNAbmtV@=syJ75A4liVevFY!Z@fWmz5k##rxaMcNdUNcIeW#Kn=qwe>6 zA3N!nw=@en;4oDi5JNzFI^C8o`J2n09P<~=kt=Qf4}ZRnriO=jj3NFavu!o5<{{OR z*H(k%zdKV9CNU|bw?X5?OC9J+0@gXP4L6-DC15An85&ail~N;NWZ)UV!(I$VQ-8(6 zPO`YyR1Plgp=j$*-b_K!=I|A5L=5VE*2r88kS@1PBz6Q|>4$HBZGpL(n!tz9DUu-? zgDR~Sx@4A+kZ^yV7zyXZ21=?YBlu+W{5*Q0Ae$JZezHnTMG7l#Hja|S^tW_%(L6wA z(~x5~_}y6Cm%zc{?36i-AzFlVDHcls4XE{^HXNQK)}&035FsM>dWLh0fY6?Ss(bt9 LU7HFvx}W_YH1I;*