From 36025fe065453f691952f751f24f62b1efce044e Mon Sep 17 00:00:00 2001 From: Dorragon <101672978+Dorragon@users.noreply.github.com> Date: Thu, 4 Dec 2025 16:27:57 +0300 Subject: [PATCH] There's always bigger fish in the sea (#4826) * Oh my god there are sharks here * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * I don't even know man * Fix spaces * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * fixes fixes fixes * English language was invented to sell more dictionaries * eveny --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../Dragon/Components/DragonRiftComponent.cs | 22 ++++++ Content.Server/Dragon/DragonRiftSystem.cs | 11 ++- .../en-US/_DV/ghost/roles/sharkminnow.ftl | 2 + .../_DV/Entities/Mobs/NPCs/carp.yml | 47 ++++++++++++ .../Carps/uncoloredsharkminnow.rsi/alive.png | Bin 0 -> 7196 bytes .../Carps/uncoloredsharkminnow.rsi/dead.png | Bin 0 -> 1463 bytes .../uncoloredsharkminnow.rsi/dead_mouth.png | Bin 0 -> 129 bytes .../Carps/uncoloredsharkminnow.rsi/icon.png | Bin 0 -> 1168 bytes .../Carps/uncoloredsharkminnow.rsi/meta.json | 72 ++++++++++++++++++ .../Carps/uncoloredsharkminnow.rsi/mouth.png | Bin 0 -> 437 bytes 10 files changed, 153 insertions(+), 1 deletion(-) create mode 100644 Resources/Locale/en-US/_DV/ghost/roles/sharkminnow.ftl create mode 100644 Resources/Prototypes/_DV/Entities/Mobs/NPCs/carp.yml create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/alive.png create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/dead.png create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/dead_mouth.png create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/icon.png create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/meta.json create mode 100644 Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/mouth.png diff --git a/Content.Server/Dragon/Components/DragonRiftComponent.cs b/Content.Server/Dragon/Components/DragonRiftComponent.cs index fa49b1f1f1..09685a8517 100644 --- a/Content.Server/Dragon/Components/DragonRiftComponent.cs +++ b/Content.Server/Dragon/Components/DragonRiftComponent.cs @@ -37,4 +37,26 @@ public sealed partial class DragonRiftComponent : SharedDragonRiftComponent [ViewVariables(VVAccess.ReadWrite), DataField("spawn", customTypeSerializer: typeof(PrototypeIdSerializer))] public string SpawnPrototype = "MobCarpDragon"; + + //Begin DeltaV - Elite spawns on dragon rifts + + [DataField] + public bool SpawnElites = true; + + [DataField("spawnElite")] + public EntProtoId? SpawnElitePrototype = "MobSharkminnowDragon"; + + /// + /// Every N-th spawn is the elite where N is Elite frequency + /// + [DataField] + public int SpawnEliteFrequency = 5; + + /// + /// Accumulation of elite spawns + /// Starts at the same value as Frequency to guarantee the first spawn to be elite + /// + [DataField] + public int SpawnEliteAccumulator = 5; + //End DeltaV - Elite spawns on dragon rifts } diff --git a/Content.Server/Dragon/DragonRiftSystem.cs b/Content.Server/Dragon/DragonRiftSystem.cs index 9cab018fd7..85f665dcae 100644 --- a/Content.Server/Dragon/DragonRiftSystem.cs +++ b/Content.Server/Dragon/DragonRiftSystem.cs @@ -90,7 +90,16 @@ public sealed class DragonRiftSystem : EntitySystem if (comp.SpawnAccumulator > comp.SpawnCooldown) { comp.SpawnAccumulator -= comp.SpawnCooldown; - var ent = Spawn(comp.SpawnPrototype, xform.Coordinates); + //Begin DeltaV - Elite spawns on dragon rifts + comp.SpawnEliteAccumulator += 1; + var entSpawnPrototype = comp.SpawnPrototype; + if (comp.SpawnElites && comp.SpawnEliteAccumulator >= comp.SpawnEliteFrequency) + { + comp.SpawnEliteAccumulator -= comp.SpawnEliteFrequency; + entSpawnPrototype = comp.SpawnElitePrototype; + } + //End DeltaV - Elite spawns on dragon rifts + var ent = Spawn(entSpawnPrototype, xform.Coordinates); //Delta-v change: comp.SpawnPrototype -> entSpawnPrototype // Update their look to match the leader. if (TryComp(comp.Dragon, out var randomSprite)) diff --git a/Resources/Locale/en-US/_DV/ghost/roles/sharkminnow.ftl b/Resources/Locale/en-US/_DV/ghost/roles/sharkminnow.ftl new file mode 100644 index 0000000000..0c8e07ddd4 --- /dev/null +++ b/Resources/Locale/en-US/_DV/ghost/roles/sharkminnow.ftl @@ -0,0 +1,2 @@ +ghost-role-information-sentient-shark-name = Sentient Sharkminnow +ghost-role-information-sentient-shark-description = Help the dragon flood the station with sharks! diff --git a/Resources/Prototypes/_DV/Entities/Mobs/NPCs/carp.yml b/Resources/Prototypes/_DV/Entities/Mobs/NPCs/carp.yml new file mode 100644 index 0000000000..5646dd22d8 --- /dev/null +++ b/Resources/Prototypes/_DV/Entities/Mobs/NPCs/carp.yml @@ -0,0 +1,47 @@ +- type: entity + parent: MobShark + id: MobSharkColored + components: + - type: Sprite + drawdepth: Mobs + sprite: _DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi + layers: + - map: [ "enum.DamageStateVisualLayers.Base" ] + state: alive + - map: [ "enum.DamageStateVisualLayers.BaseUnshaded" ] + state: mouth + shader: unshaded + - type: RandomSprite + available: + - enum.DamageStateVisualLayers.Base: + alive: Rainbow + enum.DamageStateVisualLayers.BaseUnshaded: + mouth: "" + +- type: entity + name: Sharkminnow + id: MobSharkminnowDragon + suffix: DragonBrood + parent: MobSharkColored + components: + - type: GhostRole + makeSentient: true + name: ghost-role-information-sentient-shark-name + description: ghost-role-information-sentient-shark-description + rules: ghost-role-information-space-dragon-summoned-carp-rules + mindRoles: + - MindRoleGhostRoleTeamAntagonistFlock + - type: GhostTakeoverAvailable + - type: HTN + rootTask: + task: DragonCarpCompound + - type: Flammable + damage: + types: {} + - type: Temperature + heatDamageThreshold: 1200 + - type: MeleeWeapon + damage: + types: + Slash: 10 + Piercing: 10 diff --git a/Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/alive.png b/Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/alive.png new file mode 100644 index 0000000000000000000000000000000000000000..061738e7cd9fde836c6023849c247a9b04010c4b GIT binary patch literal 7196 zcma)hcUTio*zF=!Kmq9;0Ra&y5(EJWy-AlQVnCz>k&Z|Yy;l*C8mdT*{6vWKDj?E9 zlwtx%@0~zM?s~ub_kF&3p3H8No!Ob4cg}mx**GHut!vaA)Bpfn)6rHp0gtKRr-O@E4gj1#b<|Z%{qnY-J%bBaWD=NuQc>E!B2Rqy?bqGy+6Y^Q zn^aYuA+aj;V@t2DRW)jME1$lIer~jD?sIT@Zna0BDL(5(}*6vn_YG+ z>OHmgG)r|1J@;9DQFTr#iL9QRem%0eW%hc9Qh(5-VnboIAaKVpW0+F=e~M+8YEdBz zHTmmtE}_@+IhD~i$&rc`THaKHjleDkFNl3?(QT29gkwi$w`CDcqb`<3AxxVy=@yD zJpZM&bvs}WOA@L8^~9`8-|)cfn%jzz^f09K$$%G1OH02mDEM}C1mRH%lH0E?>AN`H z-EVBabRCC$0-sO7*r>FMRf72>6&z6v@?lEFM0Ri$SE^oKJ zy}fgSr2z1Tdl#4etA_wzI2HO(8aJ<-c#9Mlq%;Pc|CoS7M&S@6F%|~usJ-7#$eSz) z`ii!I>!_X=)e^TzhHk}IYlAZyI2|!blQd0R-JZX3HmR)amSujF7)_!5y^1T!Lg^$P zvb#mtICcKwQ>Fxs$(J$~HRj!a{uG$Kqqwp!k)aEOR#a5P9o$@#&(c+4ic^oY2~$9j zzG+bOKj=A1b{?S5)DxO|`9(CkY+~ZEo}r;Y)*uO-?&+k9h+j2UO6&+g%4koby<+v+98 zQcOl_rlQQ?S#@nKIIs9;rV1VZ`dC@O!~6LOnkU%|>H?Ih#Ufp}WiR#`bDCwZC#6F{ zN-5y(1_NVg_3`7!4Qm4it913!Ba@Sp4+$ zi!&9Cdif>ZyebL|7%-;5m>F8NkK`6AF<3!~#LH6?jirv%MborDzWW)+2b7xJ?y-|P z3sM@|zIvXkRDSy5!-rIZ@`cljzH{Ywf8DPW!`eG|ttw4LW7YY=FyrVtI$s{lI@?@D zE@2RO2AkmHj0Gtrq~YAp_ednA?ejR%3fZn3>@K<{l*l z91u?=kP9dzA~{RKhPvzAlm^Jn&5fRxV&uJnXexMuAK;BR*i{%mN;8yI4LcDRHcZOH zLkT$O-Wc(cm9UB+K0PACicgKd3>$VbGt9)-EMT(20uFpGRE(K28b-PoBoA;cezh^2 zodXv^N}gP<{rleEmOL{!?KA~~sPO*S(Umf0{CeIcg|W?>rQ_u32)7k(F0NQlTotOV zYmgVwB1_?Pj~xv1{fC#AoI80T=qE$G0D;**#Zx)k} z4}pqiP=j#}{st&}b0y72dO{-qy7LgzGWQ_`CX=MwG2M1`Y#Ybtt-B_ZhXXdPFxI7$ zPnz0<^d)F&k$M5oy=lWPb93`aBN4%GQ{ZAxZob}!vV)uaQ)A=mxZxENDz$1j*#IVp zKq|3xd*fs3w*x$6`T$Hv*#(^;Xak|VO&T31FM}(CFUN}1@u7z;sc8A`r`iUmE zcHUn6h-A+L-hMd()}+y4S#p%~d2fW(TZB_$M0@1_ru3j#@7%e=C;@%pWNB_cQ5z*f z88(3<{n;4dKw{r`(AwSQCQ}^~mfnxP_12H$J z4_(NWbvFh2m%UW`ykEQ^1rhGuayf^ruh`8+b%N#$_J@m@3k=$;wQ0;8AHOdL7~*Q18KVPt(5csfc(Iy1xi@4q{VujCaJ7**`Q z4Vgc_H~Q@x1*|>f8i>()LJ`V*p{4Vg!t2_ zz*@D49;`DnGwG?wAQ%Jz{{RGJCJo~n6ZCo(f{&iwMie!%j@duq`WBC9^L7t@>y74cLo6|QuQX;6%t6UJ_w8Gc{gM8Oza_U z^ws?+Ddj-?u>HO0sJfcS0_gFa%9%ygRNP*<%l^yC9%pA~onLBTzwH=0aQ1d}BBjXC z28rlri*$KmYYaM-Yfoy-$tz4M$dDtH?U)pk3c&!eG6cWA*_2vQs;0XOSGS5V;awQT zg5hpbE_9lD$=cV~7m^=_&eFYgb{PVK;5*%0iXnJ5x5lR)nuCAA+0Mc$J4gp1yg#lwFe`I2;5Q zy7*YL7A$}~8f-_=_5_N>`Rvgk^YQ?|z`#Jg-g~jUyu8a2IT8cHWoG}}P3w^UA2FR5 z3%qga6e~8U>AR~VBWg){*S7clAl9)0t9slK|B1Tafw7)rvA~?xrPnUIa!^Tpo=w%1 zwW2C#QnY4Igoy(mJ-ymfuzIUj>aNjB4%Z5*vz&x<@kJ+ohayMle%N4M46UH(@R}uI zc6G6^x!Y&X;Mz%ZkIcrSr(epjl8^CmmOT_6%NH%4sEjzOL<^C+c8#$;x}$7w-k#vvy|P5Q&$Z> z-pHr|v-+R5;5%|hjCfL6>f2qZ49bB@%4vhEH1!XhAcloY7sfO^4jEWe!hBnaMZroy zc~8pLQ)_FcMydY$58sG0%dCyOr!aRFT4hbpC<3-lFJy*KFD~u8)4stk1(Rq$PH*zJ zDg~bWkX#(1E&u~^T)mx_K*y_;$3`^36uFFAC!)P!JSkc~65tb~yQc|T>T^2F*_jtb zMsVBS^)^ztgM&ty_N~8%{{PrbnMvojZ_#UC>u1>$dLe<#Eewi0DY5tZ z8piW(jgHGIc$?OM<$H_7ZaOG-eWJVpYj}S&D7t{Ekd_QCW8|D7%90S*Oa}Di<8;fy zt!h>lH=sUkDj~!379)j>2V31`Y4E4`#YI)UKiV>=EEw|;D`4yI{{-?Wdk~wE!JHxS zw4!g_e^e@uI8ko6KO~FMdk6K9<-JOF#qL%al67qFRVlOPBfK&nfSRT$yqqM-YF^x~ zIyDrYQ?Lcu`Q>^!^3$hJp@)awK*#Uj>@2LT`{&0lLpqFckxgi{NL!$%C%E5XZe*?A zxYG39-uGiv@x>qK);ogx7~y_cJQ2SNU6MfH63%Af1-7>kZlw9sa1;H$*9vs`5m%_- zjdzjFHPzK05%?uuja*Xtx;^lYc7cIUz4eDgt3jfjm6c^_X-U63wh5A5kZOpDi&r{1 zIRQZMUeM|M8>%Q(J7xfAY;2TMRAg%H__z@AM76TWNc(e<6UEW^RDL)mT*1%X-LM-u zyuUUk(7C;dYUklZT&LbLxS#r-%VES;Qe@}x75Wj`haq@Nva!X*;`gWEO%}Jd^vLK8 z`I#uAR8^kY*sxBsNQn5!)z;Pm%6VjP${WvU(VPvT&C5I6+ck0p;pHY3M_Xy{G@WB+ z5_$A~huxb^ZARvoJ8A`;b3m|^fW61w6ckxEtHBFizu!os4CO{F{9uLG5i7c(_EGvH^% zZ)BTx*aAbXRNUv0Q?#Y3*R8vVSkp9O(zxvACGZglC$sL{PL!BjH4|n zJf>u`hPEK=ERq`i2w||95rGAj=06!XHa1pTkx16mYe%MGY&z2?ASNaji$jHsS8MeF zi=EwuK_MZvzoDrf_bnAFIXO9VnEjwC_Gcf);i@5F@qiCSzsw|=8EeL*k<_=8yy9L)jHylgCBdZ8IW%;wcuYi*XJpjDN{C!E z;$YCFZ@+Pdm`*qO})MBR#C!^n8j)!h;ZhIFP;-3SG;;zi@1E`{6Pl;B_-p;(j zJ^?&AUv#G=G9m!K)17?3`K0!b!z9X&lS)iQi+;cA+V(B^{ptk&jLk5Y>C!YYOu4pB@K0GH(c#DhvE$l3_i8AB&Me`f{&<^2&&`3 z!9mh}WIb_!Wd{*}Vnt*XD6#`{Q{=@ouSH$$-re`lkT5wfS)2xa1W?q2-p04yUUG8_ z3(ugSY8)>Bnhu_Rej+E&`%^8;_?cH92saS0uPX- z#LvI0Z@MqerVwS=V`&%KV^%fUj>#VS7YI%N{OJL9DD_jsGBI2@cZi?sdIGhR;Hvi8 zeL*H_@(gPJqeT=Qj{reY`M#_yxuMs6s3RM}`~rziBR<$Qz9ce?@_4Uf=H|E@ot!j0 zZ|0=?wZhQzJAn?iU=*YdIfCkF?A3jSBux_K*m?$V{4#kyFj7>Q?r46p~Y?!&R} zVwOda}4>j$3arYp&YJ=zpNsN+d{Q&YUx*J@mzMOb-&OpC9+;Em1%R*6qv zzC?M*C4zbptXU;seA#-%=2cfcpR@&xQjTnGy&Aa}d^8gab;$GFe^X4n5SP@@93>OW z8jNciXlVj{lf+*w{Ka{tBdgtDZ;;A+KD5m36ruU~+yMRGLtM*8Z}jKS0(mOe3XzZY zZUh56`@(Bg-um(Fk1sKYjvMFaO;sSyo7%@mY|u~WAt#gL*rr{v4?}%w&H{VwjJcY@ z*0GQOy1TkwExDIX+eRb=0-=M;O%}<~tg6^2afiagzSv!R;;C6tB1cRBkVRemef!I(^In&(V8JgMo^n^1dELeV}Acu5o2K#Oz7nYWf!Qcz#4QIKyN`48J050 zm93|#_qRaNe|!R`=+{pXyvN1EGm{C<5P|BuGV}0i&Z8Ct5%xJ!Pw)oEHf^ndN^4kR zQS8qX#-iay}daQ3OIzw0ib-&2r3Hhz%DB`L;j2myOMVHF_V(r+`f&Jog&~!~Hf&9Tq1i-z{+aD82KU zV46T;UUFX#KqsE99{P6|*%=X*usd*KAE?%gp=sK1{&q(8Kb-RO4oEW4fQ-%^lhSPU zpHqDBZ5uIB5?c)Ay1q1!F8pj{#Nuk5B`xTQyzuw=VzXDcF7xD8Mu%H`>{3U}Ut(=x zY`N65L3T{U>8M-Z*3Qn15X~`Z`57@n8Jh0KqqvkK@+c^DP577K|F($5Oj6~FeOpIN ze7U!{j|OF*r?)q$hVc)j)@42dXlE2tzfYHRBjyUpm5ao0?EBHvQg{XjCs~UN>kiA4 zZz%o?h&P?_u=yiD)C;T*h3viL;;#*&Mst`HlEuTGt-F z9IGB1)ci4+ILIP8i*P9>(;oC5MDOidV_fbwF;KYJRBPt3wQJ0#&g=0DP??gVIGXC} zZuShr%|;CkwFPg8Iy-!wcLNpPO=VSP%cSs+oJ4~en6*R|FTvcAUw|-w)Dk*yjxmyt zRnD;h^FS9{t70nbg65xYjAWw>OBre%U;pehV(LZfA#AKnv6i&fi-e$##`PyftQD$k z2=n3EBg8?8_N_a=0&o~@m@ewsPYJ|lyo5o=U?2#$AcqGt(m$6GIYKj52eY!#Jhuf+ zwRBiByGj~L*pPzWQ<+mSVo&ylj_t->fmB~h2#3b!-;tPIt^2v; zyRP&7=^-rZ&qtxHhZoBjID`ywp6KEX`n&Ob-yJ`5q@=X@%L6!tf!fJl# z8R^=03@x!46xcd9_S5ZeAkJ}4Nmevh-8|xWm7YtFR~1vQ2lT3%OiXN=jXluz%j$nK zC`VR>J1iQCg-&x#915>`ldA>`c{LF=q+X6&03L>L+R(E^3(4t0^0bw37&1ONPP4== zHy=`qUSZZJdw_#g)#x0Smq~{P;;&ja>p|b-LWstfyC!C4TM6i6@`*>>+fUKt%w~oQ# zkjnVpVo7mOZ`HMc+LH(Lyd|N~6vxk33tOM)98$Px%f8s^0$IwaWNd(I_)HYBkiZ)K zv9i*HW7#AwPtl@#X(ks^A)t!qn&dnaOf5ISwmGWvrx~@MEhYpumCxU&-~QGPLoIB3`X0w&f2QT1g2m6x?uT7==Rc=S<4Y z!rpf+TCe&3r8_!lPw3wymqi;ev40S@Kut&SW%C3nJfqvtDW&J4j*8B7U3^QHz6jNQ z?pc0;nOgt)JEXoue%)Yym(*3iTAlx9ty)iW0OPr3bdN|%=(@&QvBGy zY5fs9m@j?qUXDa5X(z*t1h%>mzjCX57yeyjPuAKw!NDN7hMC}WE`6jyd|JUPr9-%c zr~J-tuUIRiRB56<`kZC3eA(=5795Kosx;VDCnkK{(jwJG=}z2!y}PqhS!4c4Ogga4 zPx)aY;l$RA_qs+Gb3v^Y; z#)pdmcm4$p-3>MC!4h!O5UN2i2n833DYIzFA{GX$L2%xp@4L>l>C^VL$b+0sCwIQN z_ndpqchd<>Fu?>9{7z`UYvD?z66W)H0G>U2c3~cWTpFWuqF%3SzVGAvK89h07oF#~ zIRIc7M!3AZOe&RPYHI32PW(0pqR8cPj7FmiIdQ2DR4SDapjt8{ipMb3$I_l z2EekcUwTe(=@BvvBeX0FI2N+Hx_agsQSuTc*LB(3+xul+mmZ3i%)i#?H}hw_`%0V<+#)XI<9`f)dq3ki^T)a!N4FpSW)ZCuwqwMY~vNeek$*GZ*Pv2p2z zZnvwRi;9FFQT*2?c3oFBTNL$rT@wpsAtA5px~eOcN|>e@Bk#H{aD4W++igXDFc`#$ zinx zc%UsVE^4#0v$63)p}^GC6obJ4UDwra3VFwIa9vl45c00;Vwxtpt}CKZlCr~5lu9Lb zc6I>R+}u=S4<9}xlFW0+snjqk&~vRIAn4 zZs&426{R2ulsMBgRlMLh-?>~aMt*5&iE6dVqeqXFn5c*_48yTK@aom8Fd8BF5u@R7 zNHUpJzPDVR?C3 zkzZO`!f_lnH#d3z{ym9A0?+f}0;GY3v_QxYheJlAQS3BYUtbTmx3^Vu-??)K&+{mk z%WQ9N1CYsN$Y!$u^!t6X*({#topMM{8M%%+aCCIU_3PJh9EYb*p8~MDx~ly-j{MBb z4C!=Q#pW#X0Lf(XuVS&t+qZ8?r_;1rEdaiM|IWg~0$~{9`#xb9^5Me=3WWmwejm%S zXti1_EG&>nB>4LEE1ITZSr)f%-=@`SaqHGCZr;4fyLa!HpPwg@NO14oJw+biT9iD% z{QNv{+`unhya%cG4k+_1OJ7%K%5AIfO5G^zu#9U6CArJu9&7t5Cn`y zBT}gp`}_N((`h=L4)^chXKQOq&705X`SRt8Vd2l5!G|@Qq`+atIcVoRF=ly>nF1V6kC2F;rCP(O1l7}mNrCeKE3kQP%#bS|u zzkexl8HZ~>FS!`H-LBgCjg5^FVdQ&MBb@0AJ%Q=Kufz literal 0 HcmV?d00001 diff --git a/Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/icon.png b/Resources/Textures/_DV/Mobs/Aliens/Carps/uncoloredsharkminnow.rsi/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1c55c68acccec2302da5a634bef3a49d2ff10167 GIT binary patch literal 1168 zcmV;B1aJF^P)Px(N=ZaPRA_ZrVje%Db3Vm@&nLP_n6*MHhj|EXp}eVn5Vs3xoGYlbj^ieV&hV6xLen z|E*rH7xa3);I-=;p9wRouCA_v@p#Pk_BNSJhKGj-GMNkj=jZ1U=AXWV@C8+?)j-oU zc6WCX@Z<3qfJ`Pc1upcZ2CCJnOpRnR$z(ENb8}O|iwL|14_|1YTCE1jWKteyvsqH9 z6!-V{05ieECmAS}NEuxjJ17Uc029AIKsFqs9BJVX#L(?=_tcGEbNF)I8eILuRmiEr2MWE4W1f5O? zfOfkr+oWllIF5sD+qBzlMx)VEBd`<$0^T%D5{U$+X(G%BBZI*J(=<6aIKVVb^7;HS zUj1S#_zYc)M~XC$Ed0*w-t(_0L*1%t`rKx zYnlcyl^SvQ-+n#i``H=wdR+p?Qw^X{D7^Td_cXIp@le-w@jOp%#NcVS8BUEb{J+2a z!MA_@4eGCQz`u#q|Vi6!RPSlOiyhc9MMnyi0SqJF%`;^ONT-TktSIm02_+8hP zb+d?xxeN$+RaF6|ig15_KhSku=Cz_IxUMTdg$Z5PX|-A#@g@LBBeR;AyN!xj7Yf4< zhr^BVzYyV;E20$t1r|0TjLc(Vt~UA_e0=;{9VBda87AgRp-QD9!QN`CizseFw9~cL iT5GMf)>><=73x0&$;{KR{1|Wm0000--z5t9zzjf4;+BX3^Gf>ic)9{M}!^^+}TZ+O1_$N{g;MbAR#vnAknV zzH50i7ytU_?ow0v?bH4@_6VDaWPRBC*Wk%5-su)eK^|Adwu zPh0up!u_e2J}%tPeYO3<{l-_$PnK`BezxjP-KI`OuFe0k+c9^=KV6N#0cXYb-CVGr z`Lg0F+2y~i1OComQ180*vGe~`TF3Jr$}TFYfBA!V1KbD)eLIGiTgqO1{>=jpK~Gmd Jmvv4FO#q3;t9$?e literal 0 HcmV?d00001