From 0b9ab7aeb837c47f903b03253bd21e643ed584d6 Mon Sep 17 00:00:00 2001 From: Iajret Creature <122297233+Steals-The-PRs@users.noreply.github.com> Date: Sat, 2 Dec 2023 18:19:30 +0300 Subject: [PATCH] [MIRROR] xenobio shield gens can be rebuilt + some code cleanup and changes [MDB IGNORE] (#25353) (#904) * xenobio shield gens can be rebuilt + some code cleanup and changes (#79887) ## About The Pull Request shield gens now have a board, cant be printed ![2023-11-22 06_49_55-Window](https://github.com/tgstation/tgstation/assets/70376633/0041d965-98ae-40a1-b36a-fd6ce15f4720) you may now screw open an unlocked shield generator to access its sole wire, the wire that toggles it on and off you may also after that crowbar it if it isnt active to deconstruct converted things to balloon alerts and some cleaning ## Why It's Good For The Game these things just vanishing if destroyed is dumb and wiring allows for shenanigans ## Changelog :cl: fix: shield wall gens actually use power now qol: shield wall gens may now be rebuilt and use some balloon alerts, and have wiring /:cl: --------- * xenobio shield gens can be rebuilt + some code cleanup and changes --------- Co-authored-by: SkyratBot <59378654+SkyratBot@users.noreply.github.com> Co-authored-by: jimmyl <70376633+mc-oofert@users.noreply.github.com> Co-authored-by: MrMelbert <51863163+MrMelbert@ users.noreply.github.com> --- code/datums/wires/shieldwallgen.dm | 14 ++++ code/game/machinery/shieldgen.dm | 65 ++++++++++++++---- .../machines/machine_circuitboards.dm | 9 +++ icons/obj/machines/shield_generator.dmi | Bin 12442 -> 12961 bytes tgstation.dme | 1 + 5 files changed, 75 insertions(+), 14 deletions(-) create mode 100644 code/datums/wires/shieldwallgen.dm diff --git a/code/datums/wires/shieldwallgen.dm b/code/datums/wires/shieldwallgen.dm new file mode 100644 index 00000000000..dfbf2be2a97 --- /dev/null +++ b/code/datums/wires/shieldwallgen.dm @@ -0,0 +1,14 @@ +/datum/wires/shieldwallgen + proper_name = "Shield Wall Generator" + randomize = TRUE + holder_type = /obj/machinery/power/shieldwallgen + +/datum/wires/shieldwallgen/New(atom/holder) + wires = list(WIRE_ACTIVATE) + ..() + +/datum/wires/shieldwallgen/on_pulse(wire) + var/obj/machinery/power/shieldwallgen/generator = holder + if(generator.anchored && generator.powernet) + generator.active = generator.active ? FALSE : TRUE //shield gens use some silly defines here but its usually just a true or false + ..() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 458faba35f4..5af4e45f8de 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -286,16 +286,23 @@ desc = "A shield generator." icon ='icons/obj/machines/shield_generator.dmi' //SKYRAT EDIT CHANGE - ICON OVERRIDEN IN SKYRAT AESTHETICS - SEE MODULE icon_state = "shield_wall_gen" + base_icon_state = "shield_wall_gen" anchored = FALSE density = TRUE req_access = list(ACCESS_TELEPORTER) flags_1 = CONDUCT_1 use_power = NO_POWER_USE + active_power_usage = 150 + circuit = /obj/item/circuitboard/machine/shieldwallgen max_integrity = 300 + /// whether the shield generator is active, ACTIVE_SETUPFIELDS will make it search for generators on process, and if that is successful, is set to ACTIVE_HASFIELDS var/active = FALSE + /// are we locked? var/locked = TRUE + /// how far do we seek another generator in our cardinal directions var/shield_range = 8 - var/obj/structure/cable/attached // the attached cable + /// the attached cable under us + var/obj/structure/cable/attached /obj/machinery/power/shieldwallgen/xenobiologyaccess //use in xenobiology containment name = "xenobiology shield wall generator" @@ -317,6 +324,17 @@ if(anchored) connect_to_network() RegisterSignal(src, COMSIG_ATOM_SINGULARITY_TRY_MOVE, PROC_REF(block_singularity_if_active)) + set_wires(new /datum/wires/shieldwallgen(src)) + +/obj/machinery/power/shieldwallgen/update_icon_state() + icon_state = "[base_icon_state][active ? "_on" : ""]" + return ..() + +/obj/machinery/power/shieldwallgen/update_overlays() + . = ..() + if(!panel_open) + return + . += "shieldgen_wires" /obj/machinery/power/shieldwallgen/Destroy() for(var/d in GLOB.cardinals) @@ -333,7 +351,6 @@ /obj/machinery/power/shieldwallgen/process() if(active) - icon_state = "shield_wall_gen_on" if(active == ACTIVE_SETUPFIELDS) var/fields = 0 for(var/d in GLOB.cardinals) @@ -341,19 +358,20 @@ fields++ if(fields) active = ACTIVE_HASFIELDS + update_appearance() if(!active_power_usage || surplus() >= active_power_usage) add_load(active_power_usage) else - visible_message(span_danger("The [src.name] shuts down due to lack of power!"), \ + visible_message(span_danger("[src] shuts down due to lack of power!"), \ "If this message is ever seen, something is wrong.", span_hear("You hear heavy droning fade out.")) - icon_state = "shield_wall_gen" active = FALSE log_game("[src] deactivated due to lack of power at [AREACOORD(src)]") for(var/d in GLOB.cardinals) cleanup_field(d) + update_appearance() else - icon_state = "shield_wall_gen" + update_appearance() for(var/d in GLOB.cardinals) cleanup_field(d) @@ -425,33 +443,52 @@ if(. == SUCCESSFUL_UNFASTEN && anchored) connect_to_network() +/obj/machinery/power/shieldwallgen/screwdriver_act(mob/user, obj/item/tool) + if(!panel_open && locked) + balloon_alert(user, "unlock first!") + return + update_appearance(UPDATE_OVERLAYS) + return default_deconstruction_screwdriver(user, icon_state, icon_state, tool) + +/obj/machinery/power/shieldwallgen/crowbar_act(mob/user, obj/item/tool) + if(active) + return + return default_deconstruction_crowbar(tool) /obj/machinery/power/shieldwallgen/attackby(obj/item/W, mob/user, params) + . = ..() if(W.GetID()) if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked - to_chat(user, span_notice("You [src.locked ? "lock" : "unlock"] the controls.")) + balloon_alert(user, "[locked ? "locked!" : "unlocked"]") else if(obj_flags & EMAGGED) - to_chat(user, span_danger("Error, access controller damaged!")) + balloon_alert(user, "malfunctioning!") else - to_chat(user, span_danger("Access denied.")) + balloon_alert(user, "no access!") + + return + + add_fingerprint(user) + if(is_wire_tool(W) && panel_open) + wires.interact(user) + return - else - add_fingerprint(user) - return ..() /obj/machinery/power/shieldwallgen/interact(mob/user) . = ..() if(.) return if(!anchored) - to_chat(user, span_warning("\The [src] needs to be firmly secured to the floor first!")) + balloon_alert(user, "not secured!") return if(locked && !issilicon(user)) - to_chat(user, span_warning("The controls are locked!")) + balloon_alert(user, "locked!") return if(!powernet) - to_chat(user, span_warning("\The [src] needs to be powered by a wire!")) + balloon_alert(user, "needs to be powered by wire!") + return + if(panel_open) + balloon_alert(user, "panel open!") return if(active) diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 3795d43bb76..0645ad04165 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1564,3 +1564,12 @@ /obj/item/stack/sheet/plasteel = 2, ) +/obj/item/circuitboard/machine/shieldwallgen + name = "Shield Wall Generator" + greyscale_colors = CIRCUIT_COLOR_SCIENCE + build_path = /obj/machinery/power/shieldwallgen + req_components = list( + /datum/stock_part/capacitor/tier2 = 2, + /datum/stock_part/micro_laser/tier2 = 2, + /obj/item/stack/sheet/plasteel = 2, + ) diff --git a/icons/obj/machines/shield_generator.dmi b/icons/obj/machines/shield_generator.dmi index 51ef5676c6b9ef886ca75e1ced2aefe792db1054..3a68da9b5825982020dfda37d907bca6f71bcac7 100644 GIT binary patch literal 12961 zcmaib1z1#Fv?$#v4Z=`@AR*E@poDaHi!_2t!@$rfARy8XN`rJM9ZIJlNDhtU(9FQZ zoBzM>-S6G|-uvEs-#KTWz1H4mt-V*DGl>Rz8kA(LWH>lDl$y^~jj-2s?9od?ggvuI z`Yim@5n^KDr|RtM^w#~gpSzDY4o*-(R{9uO|6>}ph1@!3KkFY#G`25!81|onKbt&p z#}|t%u|S40F&y$ljtXT&%I~dde*6Z!UoHNzoXmT>vyn)av0AcTC9(TiYB14Pp5Fne zKk)8-QdtpD`Sauux8_>wC*%%KWz+5(JN%L~XNB3{e$-KXs1aU<{#p0x#|v_u_uePN zV!BEP`3yYtKmvzUB4^cy=~-`G0z5@TgjRJ^EuWa3DS++%Xt4~uq~p^+cc1n+yBUn! zU`g(l{rS{83PX3DEM{b}xnc7nxN05OM(#&KKZ}I{4h|=drmBibP{DCwFvw)53j=j+ z{mRQl%1eMp8hVcekBeYat3}MJnYo1|DkOzm$EvTir3J+RdlkA|&Cq#|X1pcARHf9r zhQ>?fYYr!86z@YkQeND~48_dxx8dON0>{QFUe_lt-zwEHi9X3335K{LCYwI(@qD%K z`PBW8pI_q$Zs+1sHeH@f$&G5zt;6F6q1)FxRZfSZSQ%VEKV7U~t8^_V@y#&^T9P@Y zqw(6ng)qNt4C($YC+BmK@Tcu|gl;$t4#6;aA@JQtTJ~9(2KfL0weY8-%t(o!jNC!s zPwuOI(Vk-TpE9P1UdOtrI_b}9^aKQks?q6j&h`YjDf)+v@;fQ-K$c_nuO)Fxqx5w( zPcA!92z$IWri4~4MIw^h*{Y6D$t0O%WlTAu+ zOO@Th_CF}lS6DC~~ zCCZ7zt@I^wa|$}BA#rN33m&$@tXQH&2p#nFQvWgs*=Ktm1ML|cn=ze0jCLJae~e!k zGL(_5WWl+E%C~hSJ0p`dk8=K2^1)0$lETwKq9!yc!gLC^{`pUZqI#f8&imT5DdF~U z0QxFfV%~l;8OA2YOo1bm!;yNnB#C3veM8T~Xo+xd2-{2RumqfE<*su7P^EcoXp>y+WwQwQu6by zxwjz{PP!lR*^E~;hSX5d8`0xjd3UcHl_Qr7Ac8#R_y*>i{gmUOivj;I47M8hdCn(t z6atAgE`HqW8|&iYbliPyEh{U#>0}wQM8Hnemz|N^9V29~H{G}cUuh}8-Z2x{VXR7XDpr`xD4n_VUe4g#%Q|yYG;4Z3aTj$frpSUFhT}yY_ z2R^MvVP>wdD7c2CQ$@ALs#S_|gkNQdHPesM69^BmEn%hEV)yuwY^LiIyJyzbk;xBS zr%e@fwG&D0t(p8hV$ugEKVY%vc1~Qeii0B*0ijw_H6&0){#2K!@kct3(S|aaX!X?A zZ~%1KK^l9;0aeLMaO{Z_A+9&%TFvii5>toQ1if7`J~JRI=*QcaM2o!y--E)dILrynZ^wgdr8NJ7)$mvaQs+|rnEqGtSII% zv*Fu_9My*J5mpfgP4%~8rR71%;o-;#?pJqu+8}TZM`lq=9lpCNkFnEGz!CcSLh#VF z@ZY1HuN<6h39sB63K8pmXl-ooJel0s!hPwBD8h^{CJ8m`#WQZSCRH4>0O|1i=tvcK znFx2lHoZ#)f-%=hS<{HMtrIT9XmahZ%)rPul$u2@?yv*<#XDY5!pqIAzT{J~1&l~Y zNWZR~<}};qW+25{^F^12sP(tEgsOZ)>U01)&8OqfH=Ve1@3W;u{1HQyCY!7{-^mU$ zgj)%bx;J34#g@uH%775p9coBPrsosva@r< z6!QEbAB>0yd+ZH0{gr)*-5F!At%zVk`KAlSzP1$n!rf&)2V~FVGmVtq;3C5aFoCj8t3sS~> z-V;k;B7`)D8&fNm+p9XP-g=cx$=dJ?pRt~7KHEdW9`!i5wqkvR^!UQ*Slz@5XOwp>0=P<^cLunt`eX890T<|-(zxi&f>!W+aop%!YGtWHp*JMH*X!_DhSjVqco z0s_V<{xT%K8)$vk%*MxM3*>7X9tB=+IxER!WA1^^pIP5^{?iZ3_t}-s9@Pf>!>9BO ze6Q&l4Ue9nT>9dt|GZpEx+yaAq#?is*aI28)&{Ov)p7i>YjM|Xwqt=&B|r{Bm1lFO z3>=Aiqga!R_#V1&2&+L_@0Ppgdm;tFMzJt=Ud>+8k9>#Q^nil%~} zOx{LAR{D@1WD9>m;F*%D-XjAtd%*-LWXX#<=U-WnUOUA`r)o24>zTa2fwT-?DhVAo zS1G{gM`gk`YU?oS7kO|%h3?h$<(L76s03L^)r+--&4(A)CFkc!BCh*HnO-brBsBF0 zve)6k_nStUYQQ8ZRR&fjJSv28_TU$Oj|E(0wg&Y%1w#~C{8Kt_Z>@io-Zrx=r2}82 zXZaW+*7pF@C%#H@?3%@#d{Q6ZZ1Il`wrQF?Gu`?QTST7ojgCDM`}`_9d``~K>Kl(Z zt%}p?C05i`u6OV6vreEWmA=_vgrZoB*W(RI>dy%!E0k4Z)eM#qs2VW7DOxWDx71~2 z5#?W=ltlb$p($GHmAK>gU%N{)J;5JbS^&Z>lnK)=5;Fw6Lb(Jwc#T-WBGRu}rhWGc z2MXwZ#V29DWTRLWBCAd=vCMa4y}Tr2OHRl57nfvc$vG=glx$i`NGes{Zn4R08D-uh zLL#WDl0xWti#r#QR!5X#7SCBBV`?(K#IE5N!T2}uRCXR{IL*b)X;nNKkiGtmPnR71$4MBVAG0=&>7|x;fu{_AEa!Ssm{83^&E63%A$!Fo2gH z8{mrm$z83}NayW-rTN0nO2|DEu#}Vr+X+sYpO>0k7`Or7u@8bVmS##0j728+fZxdq z4M)GHT&ql~0v_3NbCMXCzj83?myocc#Cn*geUn~J*u&BasA)Qu_UFJe{^0jUsm+xS z=V;FYV||BNU8Nh)WBtdc1p|FcHRG9Zm2vqOw-y5?JM^h64w@PzKQ=OsUi9np=BB%lIl8qY`{pJOhW<*%1oN?8&>`%nHE9O0=0O&N~ptqGX+A-okhVa^@C&N zFb=b;t90I>c6vQ3brs@-=1*(53R)YJUZ6c;HUE=WCh1~@Xrk>2@b@ujC8Gf=j=U0i zh20y1h;M{9EuoZufQN*1V!b<;Q#u9ex~30=iesxHF=lD- z9xb!I)m47rk=ljeb7@MP`|z?>vv9}>2+mutc;j$fdM%I2K7=UG0e~t7Dxmh3L-x}{ z8xuiK|BoH$?@h=;vVRn<9vhk8(ZO(bQ^awxcUzvl=*2!IS{_X;3=@L*2o~1$QjC#~ zz7qq)DX?jHH{U9C2qWt*_FiOF$`9t>D(BTYR6*^^=VR=dK=Ih9{5}~r+N3S3hOkW5ZO2H#qd}8GTI}RHh7y2iHXjC@IMeio(S%7=fz8IToM+4Y8g1 z(jLOwIaJKaA!I6sV*M>Sv&@b+L7&y{?XUj^&HRr4gmcDfKXD{Hc^*hM=f=KH(F~lczhPiZd36UPjx&mkr%xuNh0X>wUYNW^A9B@a@|vU95Oxn48$Sj zOzZ09`jXPP9&&}7>>gmb4>9Udbc4)>x0Vas4lLj~Lh>rQ_c7OoHbz=)`}T^-r_<_*~7ZDIFi!!(ZB}Nf)P8?3`l}?^ZEXLR!KAcnT8EVf74pc%kxn z0Lq885&?*Pzo8}vFY*IKY9`+5NPt}47W6s`fUHckia3;1E%Yh6rKT=v4#+}F^<~#P zdPwl$w{@*-)LVd2S}A%G5tR(dTJbEB-K_P^ zl4E8VY^ZN*756?$KM&`9yW%g*ue-Ik9PfCSz2lIsj8k73>L2fHX`?bp=4JuS3+LF&BgVnCCLVjyOG{^S?z8CyFrTqi6u^5!F7 zUC!rSp0Dx_FGKGOfDUz%BZd=zpg1du4e0<5Jnn(P2{mDhX;cW%MWS)xpKNee_@6wN zxour(lA*9sMCGf@FYk5HE~*4wXRjkwy`$h)(`_-S9UJDZ<6o1lUjz83?7n=3KkT1c zflY9Zqimv9?9p`eV7ae^v1X#}i0$2-pwKl1X04 zrKgem+uXqQ zDBMie!m|-5K^l#DH(fg`s%X8`UCzTz^F?y>-?`ScdX!HiPIt6>#ty}4X?YUsSD%~r zTm%Hmp~#>e@Gv{htC#i8?oCT!SNE4FH0Oz1EPZT%oHaG&Jzn(Pfv1I52~Y^;0X8!# zQ1X0s`&GUj5)$@t*pUW6bceACuUT*%k;C8JzkCFO?RH3zli31drw!NqBw~5>%k4Kp z`Ry$e0u4Xu_4MC}gxBHznE_BeW;hye_3NZnF*xh*h-XjxqH!E;1 za>X2x0bJ?P9%)XXpj-b11uF&CG}P2|0gE_`X8y|5acG$K^?XC;rU7!Kq5_|V?VQD5 zd;r>+pT__Ti@V{QQ8>F4l+^&jlk>Q?--H!p`rn*lwWU9&5qR{n-%cv5*@! zZLJWac|n^?!~R3K4khFd{n`$8kYbtf@Q1IW?|rnkYrdT=?fS8>m-qRWezR{vC{Hno zk#35;=5G(Mpd5K7H)@Rb%diVQZqbW{NO&@8Ho2S)9@f!ua7_Mk987$zxOYl}}H>ZXkX?q@cn%mUETSre#>_=^&t z-3_Y@SWcrwCx<{eC`bn9W;GCk3e?UPe%7q`Fkit{DlRe8d5@TgNNxfk<(1PPXtdg@ z7XX%_1r}PJ$2X0-c?}@@^bKtdHatVgWX1XujxAJ$7|H!hV{?9XBL-|q(LuKEMacd3 z46Zjs`5=6js}UfJw9?1vX@g(CW)l;bRSah=qww%)=2$t9yYl0S;xG5i-=%Csuh^)o zr5>bXe#K>1GPCi>1J--{qV>*J9|WF;l2IM^CG+mjWurFaZfA9=eK5qop6+O~NvAhl zj{ziE?~bSgAHcU-W^wLj{WGSg6W)KE^r7Z(xU5}OPzb)aH8^ySnRz&toC%KjT=y`U zHN|5M6cY%IEJ8!nwkqZYjB`Jv_mve)sKOCvTd{2|TR=?Qm1@1CcJ@q2XHjq12FBpaV^XBo)>{Ekz2j1=q(@`lOD@v0 zgew~w(g9_qv~=RB6ZukYTcXyDIk#nuT2tBI{U%PVlqbx0Ivp4_S;Z+Dey^+nsM@c~ z^CgrRdwLz3Nt2n`9>FzyQfT?rEBi=!)(dWwfHAZxDUYmD!TLdmkyCTbQt8M%uM zMk6?V?Ii31@u3=NeQ!^MvVNPIn3()QFfcHHzz6g-f|TV$gVRBUUbTM$e!I1p5K#}= zn5k=8y7QwyJ3$@Pi}++>SZglyyjE8$AFM!9nDTRaIuf4opuW2vyh_VdD9gpS=P2sz z{Gu(cr$WOli3%Y}{QNMGP^ew)Jbo5Wor%g_xP@?>*_!DI>sMQy5ymQcaf1=Q(SRtk z%2#}s?6*N8NyYaOneCMh?C?gd=-8RxrUb-PTlw1A50wH_ZDgG|$5dgp%>SmH0UjZ)|U^vAjR4BkxNFd`7-ey60wmb4cGWQmSaJvw<|B zU=?=sZ<%9FxxQRrO(|ff)%1T&;;OFp8HM!CS%VpB$V(#EU9RmU^FQ?aB-9F(fBxJz z>Eq_6Ofahcju#j%7st4l*1Io)qnpShV=~)M%*wFGmcpyk<$WeBs#%+Ig^kKzl z^3J=2cSW@gxDh<@)LVO7#17Qm*v_|3$4|`7#8gWAOJ)pK{qANq9dwPvMeVg8+j}|5UhvOU z{dSyjI|3!E4^&pT>7}q}*gDXl{aa|(S7z_o5*2Mz2cj&(gHQ3KEqeI{>s`Szy(iRx z17Km1`(=j^U;#hstbJDbcGllST|KVeX^2W}ZKLbkH<_o;o-MX`W-FeOk&}-M55Hyu zs?aFY8~U#=WET>v6crWqh9Py?e*Cz!p0*I82MqIw$mU`#m|(y$H(v+^Uslp)8b)Qe zFmQAdEaXvA?})N$KyGB25a|y2Xx)E<8y*uEcW$T25_~q>K!VqIxX}1^UMKiEim&7_ z4ESh6I$KZ+?C*6*XCo*d`_QWWvYd_}GUAU(-qdc(MZ7j@g5%c<+ne}~d&o21;C@JL zajW;L;NXuR29}njy&t~G%ta}`e*Ji6W~LK$y^Q0v)SM{kIX~R}KzqX)F%(Z2?Y3cM z4+%hKQ*q#_{JiT48hsG%Q*4TBfQV5&?^O(Zk3ra7@3Gf^lE0Uqge|S>puO44x6EiS z7sdbPX}d|}=SsUuUF=Tm!T;VpPd;t}+H^^Tvq=UhXrFYZbasmVfnc2F(U+T)9|r4G zk#J2DN>}%OIr5N!sC*gv5LYnj?8qvsB_leX>I{Y)$VTmRgeA?~wZ7$ZmX)-YDweX) z*VEJ0bkQ@)_{twGod!wJD}J#(oNgh+D8xtS;a=}Ui&%83ZonxQv02X{+#OSIB!oGZtHxRN!xqegLLwBd^O3A3ocp7#-Aq>E|c0VB<@P{V}Jg9~>Mc z+*gdNH0FB(8Z|Kk`{G5jF>YGlD>F8-TN4I`kE-6=EI%KIp_R4!{T2~8&d$zV=isJY z;A%gk&=+fXS4+ef&S^$whM|5a%(8W>vf4g772_R9iz}goJ~@rQXa;hu8-nFJV&c?A zR)U#8r_!k=zw6!B6f!b0m=!}Lh|@TncdUJ=ho2(NW%C6D1UB;KOyn_tXNr*_6HO+q z&5!rX(+qdZV&M<8KQ@NlNsVf0JwNWnfIUBzwzuc~)9IcW8ZhuJ8fuMWh1xIynJkRb zjm?KCZT-&D)Q}H<{vhIWZPa^G-{}H{{;;uZazeA&cj4@scJ<;NN?f)OAM1>Iy$Xe9 z$(uRPw5P>a;u*kC&Qq`imW}x9JpLoJ*KjkTuF>yvo~reQJu9M7$fV)Gb$I``ebNG( zAbFRR)U?(f6~9>j!8gY7vGAr)U}PvPD+~6G2Kc=t3+w~VbX)!??#|UcF%<9QZIvJ$ z8*7a9RA1yzI9~>l0J<@eh0r%#YxIn37e8++8k6_FZ>7qUoW$7&R({0Z*|xjX;lkVa zchRrlIRdIv9r+hub}E)y2erOWKm^~D)8fXLYjFrH}oA+gu>>gM;(_cCnI-Rk# zsS@0aJFI>1I7mjkOm}PQaQ=#6`2l7Y-+mT58HE(M-P|1K55VkWDEFY3n~Pt|mHP)C zD)JeBb)GFj5xi-SzhjdQ;-<)lNOr-Q6A5kf>8Fpq-jZnSk~q2ffCZlxQ2@*UOfnYeYMunu(`gavtrrm z?)061U*LFH2vdB-nep}e_qEgqQ>r@h-40>bf3dXzv6JumN5T%jeP&Ntoc#CF1Nw%$ z*vh(FQ)$!Z%R3}mV_)yPYEt?)Li!!e&B@P{%VUGGDKrW`Oa=0v!d`H#eVGaJ5P=+XUXB+ z9`&9(SOJ?9Xtra}cd`BbPX$FkE;FreZEfXBPqjlkt2(2qlC;h*E>_P~;iwy^C_O#B zfw7@x*kZ5=6^OyWKHw9p^tm{!)7ULsHvdOgM{dIn9Uj#-EdVful=VGT42fY01#-QC zdFRm#VMA9FI~DcrsJgQtal{avk~ zCtyP9TER*9s1~(v$NlxSqLVSKH!z4^d>8nVhCswlybOkZO@$8no|tyL-V5+KiR|GB zaK1k!h z&;G#gThAZ^ag;njARuBSlmB8P9*~67wi=KxbhADzDiglq1k!cl@s|gB4>3j1)O_3w zgyM3prGPMbtU)`@G{Wx`%qh<1iMWs;fvh?&0u{9as|jL27%$nEzw|wAg^&BbbETsM zaByf}|MM+?ni*JTIV$A$!Mog7wsy~H3_Shex3_1}t~cHkb7xZ}!)V06Azm@j5`^k& zEO<7BoW_I|8}d#bw?WrVl#8&AadUH%goK1sN$Ha-BVI=_u2R!lbLp5@Y`gKmX z*Vh&OI|UjA;&jDek#A~M$1o$DBuC`zvZ|y>Gfr zXmPOZ`agqwMxU`yn4X(c1(%+#js-69teriKTjRZ%p?H?t^JYu^%~G@K`@wvwRn{ym zXW&Ci8iEp@%m++`TSKW0Z+Em}!GssYDZq7uU7wX4VJ*6OBSIQg8ba$nYoTmtUB-&D(@(&>$=Vhn$i#dH3HE6g-yqCg0`*}R$pXP zV5gHlFZ9M$Jf13pZwY{WwmT$k=+pToGW$x)`U@^kbLA9fqS5xeuZ0)Mjnyh3d zdBE8G+^=_wUMC9|=3Sa+Ll;V51@oPe+dZmoZQQ@^U^)E@2CxDGb!L-ZJ_cn6m1lE3 zdGbV#J(-D#Y3OT-Wx(s5pKsf4XM^*gXBJ9{upl9bJn9T2^~x5e@Uh@m_5=y)X8HAT~CZo{=%*LxC5R6ullzy#$3eyJv=Vq!zRr!3l@b zj13H?6YUKQl>5%My!RH4kvRt|wuSKD-#aRn5n?_*Ye!P(=0PH)eJ~5uT zmGKVti0ur#^G>1 zx;v08wq(jGG!<19z0-4lcAnOElwvoq9DZ`{>KDwl#%o1GD<`a~^)?$=*l!O1wA(QN zX@HWSvG3@C)n?l4TKy01&qHnFP6PgZ z9+pxMuC;vBB6hWIc6Bz@w93uZ)nm4Ctbb&|-S9axCy6 ze631li@M@8UJ7b0>4t@2$Es7ZVqsVY45J4D2G}+B`7m}EVVad?@*#UUE%uS1VB=kJ zp@_(r%I}NpHJJ?>Ls0mYZCLyg+&D z=QD>tkw;!!j~;2?udubv&m^E)yw2CWdCyC78CwU(7euNIWH-OwczWK{MA(bQV2gdL zlgCM-s{`29-5j1EI)V&raLUfW&VD=>8XXC{e2Sc}vHqEp!z}pd5pK>srg$qF5-KV_ zIk~(xXgFJhZoX85%LMCU8?ONJ^F;RLWHzB;@M7iuGA8eQo6=Bx!CpvfuF=9-)7Vo@?gFrEgXdqpMEzcLk|~?{Qd=9aR5Wdw+utuxE95%E9!T>Cp)GQLqSCh}7`rYAVt5CN8>N!J#>bETDY?w_Oi15W6Z+Y#Z zAI|N6Ef675$7rwrUL2y4pI_9LFC9GeUcdV*W-(b<+Sp#D4gO}96*ueT(Y+N3FfjQcw}Nj}4EAoYS5aW*T~%2T`n0Y(HX^<8yzc@X^l4MusaD;VW()!@U4`8ra{OsZDPfky16wZ- z4cCy07~T=95P!RGP{uAFkU%mfAXJlPGrvFH`2b#C2l z+W(k8b0P4<3VU?K+WM4K4g%|HIz3@_C#*Q#($)WaFKB22`I+-4*7Dgm{2z@OkWco1 zom2suUy8L{M%yX^=!hixU;{0je{XOro~IL+5?})njt}?#ZvZ9%XB^@7T9aToYMY%K z0h|ZJV#GPcu6Z2~%7M!cCLgaG0e0AvhFy3->uVu3(e@6Z=8&$O4g@0LU8D%ciG9?% zdLcQW`iV4DI|==kLmpkQV?Z=%SFMkm!%K31_VA}_zO+@6ov61S>o;2stg$t^|3m?6 zqya3wdy|cgjdISf&0*hl(@2=H*0#n@v{u@Me8>xd^F9Y6{H;TXgO=bIN4U}ZZi3X( zzdwI~4pAk4ufB9#yztFX{_;!>`0)!<%Hm?w>XY$_ef@g`_b!?U1=jCf)cC*dN`Yyi zZ`>bQd3)F9eEi6FdHt!QoC2$s5QFHd}@%NHut>4?Q}xnnrUb9qo&~y zD`lT^*9%4^WmD6v$Q7~rEr*-)%QBXG41zuoXprUr&Lek=*`kiFQmh?ds ziC1-Y3N(G0&Hk6e81@Ux`eI<-cFOKwBK&N2N1}d6%_H!)$j$iQCWh>+dKS7_D3h0g zXICLLL9i}}VHMSjsIsi{YNn-Gs^*LG%uG>26@6r+Af~fZVJ2PlcTeigV*`*zb{YB< z`);oL6Pb{vH@NllAm*UD?#FG&;TxEWib{bLf`X;nu8si!I>lKl2ruvClDjRI4ZrjI zP>psA+X&pFU07{vkcS%`@>hPVip)86JVs|ngO|1kVv33aZZ?PgKR9WVoR>f?!-qP3 zss#D#YrsmhSQa;$M>LL7p$$~u1_1TtmrNi}|CqO(#BFeVJ0v%xw>4w|x%e`mVt*7; z(-F%2FkB6U=Y(P!tktax8{ka%>Z;>K<%c9a4q2p+RA%#7EvM zi`KXDYtcvOi1Z8Nqxnv9I;Rlik;YI`A>NJY zts{N{zYP&yoX2GlFxplUnEDSZ@c&i(|85avQ4%rSHxC~@8k=n^8jd!yQdUb+c=!N^ zLEyaT1C9wciZjA9Nav>3BK(lNddB?ccmlwn_efv{V%-HNoLj*>cHThiV@9x(h9sL7$q55R@ zGw;)9asOliS#6YZE#H=;3;tDxHw7p8Btcxk;39ZZr*T&*ZhRwfRrxeaY<=3SPS_z3 zyMc%cO*>Mf>U9xtYwAfw1`zjg5jtpfC$a$Tm(*#k=daRnp>a5xurGdlGPO$vObc^&{@(D-2OxwS z_Q4qU@87gtQm~ACH5>S;{%Pq=$yr$kmKozDU{O3`ROs*Y$4zP(5-g?WdTF?dwx8qV r?9&6af;s*l3;+Mzk^cZ3VDK$ZV+baD=l=Q6367?ko@(t=hp7Jn)OqBY literal 12442 zcma)jby$?q_a}`YC5;k-goucglrTt02?$6@3J6GwbPkB5(wzfHh{VuH4&B{7gmeru z)C>$WJAQw=&+b0E&p!LdytnUrZk*5koO9oadaI>ENq(Ok4-b!0O;t%37p~)e9d}4@ zPqq-(d0a5(_s+;e>7%>#mrtKPKDoN!;rV2zBxsU{KBozr&(Nc2PSFKEKIY0Qpl9+U zR#Vd@EDce5(iX_X=;TO{YRpY|)_%ns1vfQ2U>q(EkEqhhz~^Udk&Rb_SF1$(k`yu> z%*DBHy?#Mn$lPR3Hrf*PX?3-S27hBnx-gv}A$7GkfO^!M_n{QQhC(f$?wcg=^~bO~ zz0r6*(Q1?{X#=WF!YwS7a{#~hthF|kn}L<)BdRQ2Hg|co5z6*rSbys{pY8$zfWKC~G(r$08ZK;!N5=Xd27oV5I&Q9YOYwhIx+Z-Xa^GlA$7byl6@0Bgy zy?y)8d#%A{khWCYVkacmd3+YH8XqeGOV%Opi)N%`B-mzLI$2|fAXMsJlinj2OLZD_ zJ)d>+FvQFpt$cpCVuGGIGNsHT6brssg;ilLOh~++0ck2I{E(nWE;;hE=RW1Z^)?#q z^$_%!UxTb6fkL-=)~x;OxTk8WH9x56c9{b2QHkA7#Y1^snE$1=zx9p!=kKZEkI>MQU{1MA-vMBM3Kura>l?QSQ#^q6qsLC9a>Z zy41_tqpGIn)gsAlPQeD%@`{Xa@!y>{a%H2&1;_cN4Gnu|>Sm~Jm1x1Q|9UC)EHInm=-m2i6wQzE`(2gcD><>kqHkpRs+IXA$O z;!>D3V|0;W(sOYciET3ho}t5`3V*3J)`7up>GwYx5HZ@dA_D!X^rHeGZX1+4-qVTa zbdQg;!+WnZnPXn#?Px}Ko`;s;|MI<3BN3{C*Ct+%arm0K z{55237>s8HZ-oD>p9LAXz8`(I>XdmdoDIIy<&==Xt(yJ#Z0kW^!Mvjs`uc96px@@; z8#c$_)I`CxCN2hg`hjWNvF+q%_kPm%42p)tUeRv;AR4OZ$r@fXIghfK!A5fIygrfc zeNp!2i-M#?fQ8O&DS8lAWi(YJn6!8!v{d`sjqZ)Jvf%A>gLD*5gT*n56mIj9AO^$fs#e(^oKW%J$}fKO)L z1CVzz1Xq6{@odRhPx91?%2;jXz0sURkb_s{J0Uv$?mZvMc`U485mX#>bB}WF;Sc=D z6>k_lubf<`0S2g1yz?toRDU#k?VA0JugCh^uDalx?zw=2MsjlUzbc3?pVBCpi{!O( z$+*A3t-6>5dDrK9vtQCh>W~+jiJYpMpYT{*o4aU(28URXJl zJ(1FJ3x_qZk>nLI{CItbDrCuz4jZtA$M;0b+R1riX3!e1Xlpv$*Ym7buAgs%fJL^qX-n4 z37l8oAfOZldLoPx7H4ATj8r}q zlqq5|+#Vhdx@P|A(b?Jrq2hm%Y{|`S^R+^AMOZ33VaKgJV4pY)gs4m@Ail5b-{-k4 z5GYqf-H2=2k_=QJqM5Wt>5&gV9#Ti7Q|CclInAgKgD-KfmP`Tskhqedp>gb7FF*@b z_(sVia_J`lGB{}2?AE(yqCbFMtnrM3m+Jw}%29?(!jW!Ja zdCPdb%Y=C(aQ7NSKMf~TzlGG<3Q7sIqur89uaGS{!9$ekDP;zP4MFC1{IJonkvyDg zpQ!MBBYZmXne?*7h#YvKA!M0IvC@VHN|vzwU}2LUp{OxhX#K+C*Rbic}LjE~wBt5yRb;!8wZ+c;f@iA2)JK zkJ=Gg^$kef0kEoIyIlnnYQR6^#w4QZvN0@2eO**!#sl^4%l2l2>|?1UbE8t~zDL@^4P;WO}mG{tU;8cj;};fouwq=|KzFxMYi zT#aUtP}r^3!tw%8e|3AA&h}3m*#b#qW@gD3Ji7j3*tk8f`uwT&v&;phcI>fkx_=w- zM3L?80lwZ~Dmut>CTAGXkY#h0bluoTRJ-#=w6-Co+D`Skx7HuHut>N?B&6&*jXNqo zX-C0^>tmS4hgUH8l@IGg6Q!xX{;`iXzobtQ^&Ls+typ88zzy7T+b#*X+2Xpk5=UNg zdu6#o@M+Lt8FrquCBeL8u};m7*D8QOWTy*?WxC`iCHeNvCvTc3aQWuc3;6*)+k@SM z$ft{m&~-JG%;A?(AP)wVy>6Vdqkx76uEZco!@oSgr0Sx0`P?yG5EJ%s#*U{c7NTM( zU-XDv_9~>6Ip8C@xLTt9N6(NxiVdm7u!p3wfag1+Zia*w6NPZ%-M8CEUV#No1r_DX zd)9U(j_2euMSC}+g&tLJ76p9$s`%$*+&ekED{bLGV&Pcfic5P7%28^JRY&i}u0y>+ zI}QRwJrS3zz>a&^GN8Z8r}WM?WQ!;9(aT@=6UDN2YI4jj-Rs-HDG8Z5GH5daKK$61 zsXu=lK790nIYn7xk*cnSjLbfbB3+m!CHd8IH4u-6p0#V@n+^qbHC%2qTy=De&D_X# zi^B&_0BQN+wN`oBFI$yAUi(3})}8RXAbQ7CzZZOo*>@Xb2Yl5}HA{tZ5&!GTALUi| zo-L949u0F(tLJh?nf3FDiFw{%?zh9LL@~{oJJz85POrOb(Trt@(W~r{7Ptdn z7%RB&PFZ!zsZQf6;U$b67u>@Q-cpajvgPjH0aKTv__K-60v!|ge)?=qZjX$ObUfYv z)NtRP{f7C`+Vb$ZGQ|1_%P{HH>z;m0D2!u}J^`pNJV@hn=O?=VG%;uwVUci)CmaWR zB#nw-8^R(H+v_#Al2obB4Vu${ zRGdG9#<#@nMJ;~Qpk&*0)oy3sf_V{Cn$|ZfW;OEZ>+83)YW$5l!WSUEV~k;yX@421 zOcyC9naHb2Uy;d~hp%Y)Jc@)lOENOy=W9C9^XThvUh}|X&F!*lF_!rZfKNz_>nss& zxu-rr@Iph*^W)Q#dj@p2TKgI`<`kT#qhQ8Yi1)vLJ3RjhdmB_oLgDwvSM7e{*o*yw z-@h}_p2S1mb>|YOb%k3K9zkCIJ4y6bTN>{tf`5>d6?&cuU0mb3QJ;AMLgjiM&grg> zqQLVC@5ku&JQ~<@_~71U)W5_Yt>i$x3(HqblH3Fs?Fank)$>J~ycS&9iF@kdeV68sWsGhb_^SYmV96-V6{XN<0-3NgCIOX8k%2$sIm$fM#MdqXu8dvxk4Q z;a5oBA2Mot6&a^ICWr?()8PAYV_~;dmY!Fd%Y#~H%OXF4CizQuFNr)rl2WZ|$m_}@?%6;Z3g53hTD#r^p z$^eMf(@Ex3^Zt|6;>5XBThJ+Cs3IAg*teY;SLtNz9#hsQ4wTa)*sT3?mg`jnq8}sqeUB5LXmlX&h%M$3Ceh~bL+k07xuyk&+Ly{9djgSRGgZ(g-{fVRjjjYWx%4COyEDgo>i|Lkbw;{^oHvyCjZ zCeYppt#1^4SG~^|M-*U&U`v{F+7`8(K^_;{?uK9OhL~y(V?77GN08eFmp&mvYNtD6 zx7oK|9Jba1jE-;95GtmiUK8rI{(*eOgkUrO%MW)bxR905cn?jPg@dMXy(#HF=;hI5 zsfGFQz^4i#e8Ft zkds$3rNvKBWRYpyMYhONRO37+`>MuLc!JkPKjuAIJ0#2-qZtFAuD7*VUS?2a;4Cqg zvo2e$`56Kc##QDi%;6JmO0k>@PBDr^_N?e=pGX z_QjFXOzFHUgh0T}H2v+yVaT5L$c)(y1f&~O^VMY-yZ6qDcZ6%d?2+}^4939v!OiTH&B+w%;@zhbuK2kCMiYU z`vObb{Eg!ENK;&uG4*rQ#>H#30`%_<*?!3QcaaNj*HvP7^Sd@7;pL2UEkQwcwt=_J%IrWs^EsDY8BCJTy8bfp>-V|wpGzAwEVesk6F~`mY(wXl$uH+tkHwX4( zpko2RCY|U7p1WrcNLqW9<7C*$T_5AcAHVlpP`WnZ&|)Z*6|j7{Ivx#ZO*?2_T1(?=`Uo0@MZcEP3d*{WR&+%gRzjiW`6 z68k>e-&kDVYV5syfSJtZryM*x**Jx}ze|OwTrc`7Rc0#(uS7ElY66xOZx5DPke)O|5yD=?wcAh3lGITOZv9$|w=K!LCZVSY;$g=o**^)#Ej1e@v`0SmO zkb;We3Rm%U_EoTJSDtboi&r?Tu3)x#bpPpqYB~?$lFr>o2SB9xi|ZfMY2K&`dns4d z!XhV`_lsY@F~nEpaejWs_~E#J!s>Dv5$b&inI}4GWwh7V7pE*fQ4!)gx3#j4kTk!N zxKoK5qK#xTkrts%@SDavRYsXyJ+>*7k(+zs^A{q)f8+O)@)`0gY&;uzu!{%P(7e|&=B+S)AWq<%35zvf=+k@jx6P&-nAL^AN&BjQ*wf{NI3uH0BooSz{8 zyNToS?}q=q08ye>7j)}~s+2i-C?J!Sp3cl3c&>wIP;T_f*;z2mq~Wx$FJ{Fb)+Q%K zMg+wo+j#S)>F~qcN3iQ1owQ?S@H=>_3*K&N4S2~iX7=jc-fK6+8=8dgOx7v+qj#KLT_18*rflq3k7P-w;+zZq;$&Dv z8f3tGEyzD&y+k|bzz4Wdpp4gwS#tc31OSvQmEy1cxcRnc$;0y)k1+=}S;pXW<}98u z*{hW;A6H!M0o&!!Oq}8MfmL+u5Ir&Rwh{H=!-ucHs8h2`d?6CxOT+t*fzpN|#hSLx zmX8$y7}7^7JogwFlnuOIR9A=c3&?2s*xyMs=)Z*qMDRG*%%f%>(fUHF;`7}U{r^Jh zu0Q@(;r7d+u5!F`X+*Xs0uU`NWbVSqEzb$On`zGkk9IPCfh_Dw+xHJ9jqvq9)jwEM zl?e(Kp10cm-@6VowTSN@6O$OK;NUi16>Hgq7T7@ zG!38cIg@Jmp&HuvGaW0p+o%C}d#S)t@p(kw1Mtl^fUNs#FuDw!+h45tK!_#Co9x$b zK&}8~6~K&%QV5ehpjOJ7n>x17QtRV6efacly|}pfbwT=cqmYuTi`|NM(F_xiN=j-? zfiSP4Y)k&_9mTXA;o^#zt2H#>^9+1-6s!LwglB_R&bM*jE4cZgx88Dbx2*y zz`$bzCUr{5$UXL2>5Bmvc6;~c*HY&Fub~7jr^5nTZk74$wTrd8pqB5+OBkPL;=ve? zXGPsZRn70Y6uOZ+D^f$+*?HCNAv^B7>7Uy}=5X{)ltI~{{*7c+Tzai%9SMos(Vor_ zDP;k!(&bN;44{jgM}pUWQvNHE5-?DV^mZ3U6}-K_=g^r zXNu}m#C|Wz-+zgBb9ut^xTE1sUSfc_-S5^I&jDS%Vfz@8S}he{y`)g^CkLypC=m}^ zQ9DP6z^+&sw4k${miy-spE`rP&93ckr!h$-r>JC)r}qWjRH&yBtDIoIyoUVT@QKgr ziG5SW5|*?3tN~?O{Rv2-SPBj`MSICk$_tv!+Y+7t9qeiY!_0aAp%&r3_Pnu_l+@JD zXx27;iSyv#ppvq3wdbLM%DRSz1}+I_0q7^nr%rloN*Lr4s1+0z_IRV~%eL!|4kwK( zl3`D{q#lL-`t|sCqYIDl2T9wQa6}wtEYZXTE{#n2%=%02*FOB$Ugk!17p%Q*WHGd zHm>|Shla;8_nI}XsOn5I9X-WNHJm6&`_w)bnt1L8OFt~%aj}ALq%B!FtcNs=GBvOpy;Nh{d4fU zOcIEB$(s}v9!|0uPHESL6sEWj2vLDZeVZgDgjbX%NgC_V3IaZ&nRWGePiJ5ldB+28 z@EQIS0RjJQ?9M(GL1t1j6f_7s4ywkfSnzL*2bJ1xmSo^?#VN*O(a=AYSkx{tH+QV+ zL-#@(5HP$J;3!YB33+1FKbXYVKiv2ZjBecVmmHUtyK7a{<*Qr)))O524UBhwR- zbfsQmd7nxXa=7^Ad~;Z4>#xrt*^GlBnNQl6%K~;okZ#V-XvgUX+zTby{Dkmhe0YO>2O5m6ULPQ(S%Sg)Oy<$8+wcozO%;+u3^y6mFgXpfWA?ZK!>|uyvvo^rh6f8 zJ?-lPIn(NkVe4K>oA(QY9!8c9VSIkyO!H5rkGfFzfX+WZpJVf6iKM1#FDKd5)X`}O zK{iYOZrNBS*(CiC9gUFYa2g(;H!!qza``d{`@RyL{DqLn>5%n+pj#UGldbP0?rNg~ zXJ2j}NC6&-SLXkQ)Z;`MiTt+n5?7H)W6KDHBE zJO1fmbEl1!%>@hI(oxcMo1nAC_hmx3xS*ip;TLEhlRH!z03tA!ziNgijy?RfH*J51|>!rmP71vmQQ_jccJ-zE!_O z&+{SsThE8>wJ$5M=7;Lez?b#6`}C_g_M!Xf6F&}ySVJrM`T0k(KV`X^o9Jsgds6oH z_R9Hk-K_b;Qq`uJpqpfBVy3X;{{DJ#)bI}pe9 zP{Y;GfjU@ObNn1oxVFEIXiIJz)!rIMT!nAPJ$0&-8mqH*B1^9iEDzvaFDL%loy5e% zHQX%CS0(-x=*^ zOR@gElg5hkv|7y1D0QdCNuTmO)CHHIa~kng;hX^Ek+IMA$M^~gDIF^QhPw(QrQ{Cg z#)OICHWjH?0QB2bn?*kOmDlanAMP-m8s&&jU_31EV(RBd6sPtU>ORp)ta|805c?Js z6sUR#h&$ooQM>>97C=jjmz(=rax#6c?+#1xo7^8y)tr_aVzOMCOD+1jkeE^LvX;CC zKyE?EWr<0fUp*_1Fsa&0_74rmZ{M}>-<#m1Vw3I}%aK`Za_7TQo#JZ`o|>ob=RQ)L zoSdfaqvEYt%uS#iW9Jnx$d&BZOG=$`WNjGtsMkuc&Q758O%X26>$@h4c9=}z8M14u z=X#H5^}lofLQxBQW4e@v`MzU~tvLhqH`hh}E&+3Xo{39;4l@U5DzQJUr*v`@dm;K% z8T6VM@#)>e2r9NOPDvkG)WTiWsr>E=A({9AF8x%SUPpUOkogdw4!9V4qg#fIL^V^h zHc5(eU9}zO)~$~yOV3Ol`YENSUJ505%$pL>-%hwvVSK#m)hSq~M4?k{^tsx`zs@VyR5U$>AB;5okT zhIuk~Epj-ooIYL_^(lVx^;nUL&F1&PdfZM7_vhaEIu0JIg@H<$Mj*5kR0#<%POWnFw$bjps$!opHmSV+UdLe}vh>qSA5n9`z!#(-+#O#UJl@+;K1i=&EEE%68U zpk)8&^Sw#D0MvGvaNnOllC&y6dJb4U)TY5hOz7cIAvC^!!qZ_T6%{>0!}$*_y7%xV zCnt@L0||NdN=r+{BqXLS$l8HttCx}9=HvwuzW$%?h@%|m$`kms-Vhc+_Gii`?8S^K zm>NuuL6Zwtaz5*L!>NLF0i7^|E{+Mx3gaXp0f`?ep8SHO2q7`! zOqgH=g(ttq{{;%SY5fu((4!#DQ(_Cvb`|Z)atnyL7Dzg!B-bxG=7EHW$KKm;Dz>3M z+%z7PmZ;)NE)M5!Msf^JiJ?%Wi^Qwj+5g^n*-(BXjt}`2Add;Ir zVGe?GLb8Vs3=ZzsJT>|9MMQ79M7je9LIDSH^S;J%VX)SxAfa10!Cd7@)l*Ox^`d^^ zP)z_i@L}q93-bY#1LeZE9!~k-Z)Yf}-uw6JI0V~gVTsLHzk&iG);CM_j%?GOt^8pY zUrrzL@bH)+agSuymwWC(IGz6`u(A|pVfZH{T#y4k*X${`rR^lGeJUVCha9?JNly0V z^h`wbPQXXXPH^jpKLj17Jq-4`y?FpV=KTdmPZB{z+aai}CIR4uoyQIN9vI{F75M2C zH(!%Kv!1t~s^C`3TLp74zNbTQ-Nk`h0Vo@)4DeHhZ0{~mtdl9g`!5*tgI#;^v;mO0 zez&~^p#tm+qVDld#SNGUi`cpO3HZ5uV@`paPu#lhjPK3S!J`37xbJ*qUOJ^GCMqZ? z5h*Jx$J!43aohS;QSTYsc0A6DGkjgq=5!O#+eIRa)7igQ3q)Lkh%#yYm{U=|@ zGbqmcm5>+kMJE$lBL`|tU`~aTUkK@d@NXlyZUJQBB+5jalWyLw{@3~kfxBriC;$2f z^Fk{^e1MmBxB(g_2^|f7`}QtbVsoF%|lfx89lffW85qilOEEiLWJ z5-+lC_&5Yf`QXJsR8-W=%naUhIVqM3ZX9KOrJz9I+IGQ+=Qv-vyH|*6m;I1~>WffH4I7QsH z=G>`7+O2Orl)Fkpx7bi$s{o5Sh!onse zCOXc4ywUB8do^|7vzH(75~bc)gq+4HEJ6mmDG^w6+y%YFD&lK-n$oVBL`~2E=p}>J z1-O~|*B#rty!5@ak?cI{X5NA})5S5rQPZWP5Yt;(Me&P(OSK}lNH5EKS&B|gZ6S%VoYVX#r4yF zTCd!`k9+64LoWdh5WTm0db`M>?Hn}Cw~X}YzTbaX+3=J}%nq(=W97f_6N}D`wI16n z8h~53^~s$n3+Erl;H!t8W+LjpThqnIy3T> z(ZRv5lW^Bpn@&9s-{|O=?{;q=kC*Iqnj2id-`#Q>kZn7i4(y1_O4+yf8`IV}a)VM+ zC;OkTy4Xcye58tMZLMeaqg;NKteuR{y@krR4feo0-DZ@PzBt*xydDQcsFkv_sk;8} z*5jdk9mP8;b_KT~?jIGr;F=uIrt7nqH(5j3y&C?S&s{A7rO*5|o?Dy&Jlq((dR;3k zYA&e#6PC%CPggm=j%V+zr^D?l7(Ji?-R*7u)dwETeA*jl{QE{??>A%Fi?>@8&9&v7 z6=f;&H8M%HtG+if`{arutj(KAy&h$fmgZQ4=O7ZXz2b;Bc30wD3aB*=h zG&n!V$jEr8M$g26I{IK#k8Fzx^yG7;Bu0v26VFJUGF}qf2vmRUXGQ0);;-X0(QKa1l3lfWIg z>fCw%;$)Ax3k#G8$jM3{C;U5y|MzS^oeVUca9H9RRZ%x?LIbzz6Ou#QvlTG2!KlIuBK2345|2Zx63Nf@&XHfQ%8Y5R@< zP^K1f)IZha;-?Fu{cP5(RIJw_>h8WBL2}wu+uGXtjM$@o)Xq<}D;XrTkIUCD4%iQt zrNaBvi<)Zofc9;2s&O55@^NpgtjpV0W*a!kKYo`IOYptj}Wy0Im)1BH<>E^&By#s$!3u`o~7^`58`t^;0sqczJsG< zpgAfBH8xm60+m9|tjiqg{`C(aK9>MCe9r-8m8G4XX~x2iVxcy7`0Cmw9noVeYshG{ zAf|l>M@LSsyZK|Ew_nukGXms&+Pz}#Skit z$J$>3wFx>%Eg%QHY4PqIx6D}%+gFkT3@$XwoZ0LStGTMj;BH#mE6K|TmN8C*qu7Ho z@ZY}I%d}e?8yl?Rq^2*>E2eD$*xQyrro#Z5fW}r%Q&jE6&L~OynVoz4HUAT^thUt~ zqX=wUC%}Qq(!<9m!rE;|dKjgCXN@1yf*z~JX+2k68&K{Z3dOtsOG^GE7BVy9< zM^y>h>!EWK~X)`p-c=GH)rXTP`p<@jki zn*9N)>2Q3fQZ}i?@3XcL#zT&oFj~&!u*!O^yN>-zv(a#v5{@76{v@!ywZX3aJU#|6 z|8~4&t<(E2Y~R;{KS%D&jK_kheMJLRlv^%(!)uWWJtjJz0SOYdUfw+#feCg7oM`Wc z16HzoI+IgV6;3U|XGIYtxnLvrQR7y6{ycwMPT}ei@fn$hl+;wJJ5VW1`(J^;oCL4- zvUX78zfE-dx>)n$QliD5BY#v4dMv=TA6oI@&VLBZIBF>U=lcL}PyW-@OtR^;uRiXq zuTO=ZVdQx&EFg!v8{a>Yh2iLp5BpnHRplrmdRko_F8qHvs`8vTo#>*U~Q!28@)s=H3lq=p(=hX(}Ss{R5T=n)ia(Bf1q$i5f# z0@P4W3i`7?xnm8+O%RM^=3gBSL?$4wKm*72N50+D)iXaM{iZPu(p3G&tC-#yKdLUw zs;700iQ0z=o6Q7pa=H#36M4*YXsXdzT-Rpk*-AH1(_5$xFdfuW@4+xm1=NoVi~ZUN znh`38N3p-lOQ}-9 H^6P&Cws}cf diff --git a/tgstation.dme b/tgstation.dme index 18addce01f5..c85ff42ab1f 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1902,6 +1902,7 @@ #include "code\datums\wires\robot.dm" #include "code\datums\wires\roulette.dm" #include "code\datums\wires\scanner_gate.dm" +#include "code\datums\wires\shieldwallgen.dm" #include "code\datums\wires\suit_storage_unit.dm" #include "code\datums\wires\syndicatebomb.dm" #include "code\datums\wires\tesla_coil.dm"