From a2f6f33a64fa8fcaca2b69043f8c3681ccd49d87 Mon Sep 17 00:00:00 2001 From: Casey Date: Tue, 26 Apr 2022 17:12:22 -0400 Subject: [PATCH] Merge pull request #12810 from ItsSelis/circuit-update Circuitry Update --- code/__defines/integrated_circuits.dm | 3 +- .../integrated_electronics/core/assemblies.dm | 2 +- .../integrated_electronics/core/printer.dm | 29 +++++ .../integrated_electronics/passive/power.dm | 2 +- .../subtypes/cryptography.dm | 89 +++++++++++++ .../subtypes/illegal.dm | 121 ++++++++++++++++++ .../integrated_electronics/subtypes/input.dm | 19 ++- .../electronic_components.dmi | Bin 20469 -> 20610 bytes .../electronic_tools.dmi | Bin 2390 -> 2555 bytes vorestation.dme | 2 + 10 files changed, 262 insertions(+), 5 deletions(-) create mode 100644 code/modules/integrated_electronics/subtypes/cryptography.dm create mode 100644 code/modules/integrated_electronics/subtypes/illegal.dm diff --git a/code/__defines/integrated_circuits.dm b/code/__defines/integrated_circuits.dm index b2859a232d..03cfa358e3 100644 --- a/code/__defines/integrated_circuits.dm +++ b/code/__defines/integrated_circuits.dm @@ -1,3 +1,4 @@ // Methods of obtaining a circuit. #define IC_SPAWN_DEFAULT 1 // If the circuit comes in the default circuit box and able to be printed in the IC printer. -#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it. \ No newline at end of file +#define IC_SPAWN_RESEARCH 2 // If the circuit design will be available in the IC printer after upgrading it. +#define IC_SPAWN_ILLEGAL 3 // If the circuit design will be available if upgrading the IC printer illegally. \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm index 69e8b69e18..11f4a53a0d 100644 --- a/code/modules/integrated_electronics/core/assemblies.dm +++ b/code/modules/integrated_electronics/core/assemblies.dm @@ -376,7 +376,7 @@ if(battery) var/lost = battery.use(amount * CELLRATE) net_power -= lost - return lost > 0 + return lost return FALSE // Ditto for giving. diff --git a/code/modules/integrated_electronics/core/printer.dm b/code/modules/integrated_electronics/core/printer.dm index 2089e87afb..f15f9544f6 100644 --- a/code/modules/integrated_electronics/core/printer.dm +++ b/code/modules/integrated_electronics/core/printer.dm @@ -11,11 +11,21 @@ var/debug = FALSE // If true, metal is infinite. var/upgraded = FALSE // When hit with an upgrade disk, will turn true, allowing it to print the higher tier circuits. + var/illegal_upgraded = FALSE // When hit with an illegal upgrade disk, will turn true, allowing it to print the illegal circuits. var/can_clone = FALSE // Same for above, but will allow the printer to duplicate a specific assembly. (Not implemented) // var/static/list/recipe_list = list() var/obj/item/device/electronic_assembly/assembly_to_clone = null // Not implemented x3 var/dirty_items = FALSE +/obj/item/device/integrated_circuit_printer/all_upgrades + upgraded = TRUE + illegal_upgraded = TRUE + can_clone = TRUE + +/obj/item/device/integrated_circuit_printer/illegal + illegal_upgraded = TRUE + can_clone = TRUE + /obj/item/device/integrated_circuit_printer/upgraded upgraded = TRUE can_clone = TRUE @@ -24,6 +34,7 @@ name = "fractal integrated circuit printer" desc = "A portable(ish) machine that makes modular circuitry seemingly out of thin air." upgraded = TRUE + illegal_upgraded = TRUE can_clone = TRUE debug = TRUE @@ -68,6 +79,16 @@ attack_self(user) return TRUE + if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/illegal)) + if(illegal_upgraded) + to_chat(user, span("warning", "\The [src] already has this upgrade.")) + return TRUE + to_chat(user, span("notice", "You install \the [O] into \the [src].")) + illegal_upgraded = TRUE + dirty_items = TRUE + attack_self(user) + return TRUE + if(istype(O,/obj/item/weapon/disk/integrated_circuit/upgrade/clone)) if(can_clone) to_chat(user, span("warning", "\The [src] already has this upgrade.")) @@ -110,6 +131,8 @@ "name" = category, "items" = null ) + if(cat_obj["name"] == "Illegal Parts" && !illegal_upgraded) + continue var/list/circuit_list = SScircuit.circuit_fabricator_recipe_list[category] var/list/items = list() for(var/path in circuit_list) @@ -212,6 +235,12 @@ name = "integrated circuit printer upgrade disk - advanced designs" desc = "Install this into your integrated circuit printer to enhance it. This one adds new, advanced designs to the printer." +/obj/item/weapon/disk/integrated_circuit/upgrade/illegal + name = "integrated circuit printer upgrade disk - illegal designs" + desc = "Install this into your integrated circuit printer to enhance it. This one adds new, but illegal designs to the printer." + icon_state = "upgrade_disk_illegal" + origin_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4, TECH_ILLEGAL = 1) + // To be implemented later. /obj/item/weapon/disk/integrated_circuit/upgrade/clone name = "integrated circuit printer upgrade disk - circuit cloner" diff --git a/code/modules/integrated_electronics/passive/power.dm b/code/modules/integrated_electronics/passive/power.dm index 631365c5e9..6c5842389e 100644 --- a/code/modules/integrated_electronics/passive/power.dm +++ b/code/modules/integrated_electronics/passive/power.dm @@ -215,7 +215,7 @@ assembly.give_power(amount) else var/amount = assembly.draw_power(throughput) - IO.add_avail(amount) + IO.add_avail(amount / CELLRATE) set_pin_data(IC_OUTPUT, 1, IO.avail()) set_pin_data(IC_OUTPUT, 2, IO.surplus()) diff --git a/code/modules/integrated_electronics/subtypes/cryptography.dm b/code/modules/integrated_electronics/subtypes/cryptography.dm new file mode 100644 index 0000000000..81bc3d150f --- /dev/null +++ b/code/modules/integrated_electronics/subtypes/cryptography.dm @@ -0,0 +1,89 @@ +/obj/item/integrated_circuit/cryptography + complexity = 3 + inputs = list("input" = IC_PINTYPE_STRING) + outputs = list("result" = IC_PINTYPE_STRING) + activators = list("compute" = IC_PINTYPE_PULSE_IN, "on computed" = IC_PINTYPE_PULSE_OUT) + category_text = "Cryptography" + power_draw_per_use = 10 + +// HASH FUNCTIONS + +/obj/item/integrated_circuit/cryptography/hash_md5 + name = "MD5 hash circuit" + desc = "Message-Digest Algorithm 5" + extended_desc = "This circuit will take a string input and generates the MD5 hash of it." + icon_state = "template" + spawn_flags = IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/cryptography/hash_md5/do_work() + var/result = "" + for(var/datum/integrated_io/I in inputs) + I.pull_data() + if(!isnull(I.data)) + result = md5(I.data) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) + +/obj/item/integrated_circuit/cryptography/hash_sha1 + name = "SHA1 hash circuit" + desc = "Secure Hash Algorithm 1" + extended_desc = "This circuit will take a string input and generates the SHA1 hash of it." + icon_state = "template" + spawn_flags = IC_SPAWN_RESEARCH + power_draw_per_use = 20 + +/obj/item/integrated_circuit/cryptography/hash_sha1/do_work() + var/result = "" + for(var/datum/integrated_io/I in inputs) + I.pull_data() + if(!isnull(I.data)) + result = sha1(I.data) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) + + +// ENCRYPTION/DECRYPTION + +/obj/item/integrated_circuit/cryptography/rot13 + name = "rot13 circuit" + desc = "A very simple encryption circuit." + extended_desc = "The 'rotation' field will default to 13 if no custom number is supplied. This circuit rotates every letter by X in the alphabet." + icon_state = "template" + inputs = list( + "input" = IC_PINTYPE_STRING, + "rotation" = IC_PINTYPE_NUMBER + ) + spawn_flags = IC_SPAWN_RESEARCH + +/obj/item/integrated_circuit/cryptography/rot13/do_work() + var/result = "" + + var/input = get_pin_data(IC_INPUT, 1) + var/rotation = get_pin_data(IC_INPUT, 2) + + var/string_len = length(input) + + if(!isnum(rotation)) + rotation = 13 + + for(var/i = 1, i <= string_len, i++) + var/ascii = text2ascii(input, i) + if(ascii >= 65 && ascii <= 90) + ascii += rotation + if(ascii > 90) + ascii -= 26 + + else if(ascii >= 97 && ascii <= 122) + ascii += rotation + if(ascii > 122) + ascii -= 26 + + result += ascii2text(ascii) + + set_pin_data(IC_OUTPUT, 1, result) + push_data() + activate_pin(2) \ No newline at end of file diff --git a/code/modules/integrated_electronics/subtypes/illegal.dm b/code/modules/integrated_electronics/subtypes/illegal.dm new file mode 100644 index 0000000000..88e3a277d6 --- /dev/null +++ b/code/modules/integrated_electronics/subtypes/illegal.dm @@ -0,0 +1,121 @@ +/obj/item/integrated_circuit/illegal + complexity = 3 + category_text = "Illegal Parts" + power_draw_per_use = 50 + +/* [WIP] +/obj/item/integrated_circuit/illegal/EPv2_Spoofer + name = "\improper EPv2 Spoofer circuit" + desc = "Enables the receiving of messages of other Exonet devices." + extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be received using the \ + second pin, with additonal data reserved for the third pin. When a message is received, the second activation pin \ + will pulse whatever's connected to it. Pulsing the first activation pin will set the given EPv2 address.\ + \ + Note: Receiving messages could cause the circuit to accidentally send malformed data to the target address." + icon_state = "signal_illegal" + complexity = 6 + inputs = list("target EPv2 address" = IC_PINTYPE_STRING) + outputs = list( + "address received" = IC_PINTYPE_STRING, + "data received" = IC_PINTYPE_STRING, + "secondary text received" = IC_PINTYPE_STRING + ) + activators = list("set spoof address" = IC_PINTYPE_PULSE_IN, "on data received" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_RESEARCH|IC_SPAWN_ILLEGAL + origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_ILLEGAL = 2) + power_draw_per_use = 200 + var/datum/exonet_protocol/exonet = null + var/address_spoofed = FALSE + +/obj/item/integrated_circuit/illegal/EPv2_Spoofer/New() + ..() + exonet = new(src) + exonet.make_address("EPv2_Spoofer_circuit-\ref[src]") + desc += "
This circuit's EPv2 address is: [exonet.address]" + +/obj/item/integrated_circuit/illegal/EPv2_Spoofer/Destroy() + if(exonet) + if(!address_spoofed) // We dont actually want to destroy the regular address + exonet.remove_address() + qdel(exonet) + exonet = null + return ..() + +/obj/item/integrated_circuit/illegal/EPv2_Spoofer/do_work() + var/target_address = get_pin_data(IC_INPUT, 1) + + exonet.address = target_address + address_spoofed = TRUE + +/obj/item/integrated_circuit/illegal/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text) + set_pin_data(IC_OUTPUT, 1, origin_address) + set_pin_data(IC_OUTPUT, 2, message) + set_pin_data(IC_OUTPUT, 3, text) + + push_data() + activate_pin(2) + + if(address_spoofed) + var/random = rand(1,100) + if(random > 70) + exonet.send_message(origin_address, message, "[random]") +*/ + +/obj/item/integrated_circuit/illegal/EPv2_Discoverer + name = "\improper EPv2 Discovery circuit" + desc = "Finds all Exonet devices currently connected to the node (even if not publicly listed)." + extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be received using the \ + second pin, with additonal data reserved for the third pin. When a message is received, the second activation pin \ + will pulse whatever's connected to it. Pulsing the first activation pin will set the given EPv2 address.\ + \ + Note: Discovering Exonet Devices sends off a ping to each device, making it a 'noisy' circuit." + icon_state = "signal_illegal" + complexity = 3 + outputs = list("addresses found" = IC_PINTYPE_LIST) + activators = list("start discovery" = IC_PINTYPE_PULSE_IN, "on addresses found" = IC_PINTYPE_PULSE_OUT) + spawn_flags = IC_SPAWN_ILLEGAL + origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2, TECH_ILLEGAL = 1) + power_draw_per_use = 300 + var/datum/exonet_protocol/exonet = null + var/obj/machinery/exonet_node/node = null + +/obj/item/integrated_circuit/illegal/EPv2_Discoverer/proc/get_connection_to_tcomms() + if(node && node.on) + return can_telecomm(src,node) + return 0 + +/obj/item/integrated_circuit/illegal/EPv2_Discoverer/New() + ..() + exonet = new(src) + exonet.make_address("EPv2_Discovery_circuit-\ref[src]") + desc += "
This circuit's EPv2 address is: [exonet.address]" + node = get_exonet_node() + message_admins("A EPv2 Discovery circuit has been created. \ref[src]") + +/obj/item/integrated_circuit/illegal/EPv2_Discoverer/Destroy() + if(exonet) + exonet.remove_address() + qdel(exonet) + exonet = null + return ..() + +/obj/item/integrated_circuit/illegal/EPv2_Discoverer/do_work() + if(!get_connection_to_tcomms()) + set_pin_data(IC_OUTPUT, 1, null) + + push_data() + activate_pin(2) + else + var/list/addresses = list() + + for(var/datum/exonet_protocol/target_exonet in all_exonet_connections) + if(target_exonet.address && istext(target_exonet.address)) + var/random = rand(200,350) + random = random / 10 + exonet.send_message(target_exonet.address, "text", "64 bytes received from [exonet.address] ecmp_seq=1 ttl=51 time=[random] ms") + addresses += target_exonet.address + + set_pin_data(IC_OUTPUT, 1, addresses) + + push_data() + activate_pin(2) \ No newline at end of file diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm index 855c01c539..e53b1397de 100644 --- a/code/modules/integrated_electronics/subtypes/input.dm +++ b/code/modules/integrated_electronics/subtypes/input.dm @@ -420,7 +420,7 @@ name = "\improper EPv2 circuit" desc = "Enables the sending and receiving of messages on the Exonet with the EPv2 protocol." extended_desc = "An EPv2 address is a string with the format of XXXX:XXXX:XXXX:XXXX. Data can be send or received using the \ - second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activaiton pin \ + second pin on each side, with additonal data reserved for the third pin. When a message is received, the second activation pin \ will pulse whatever's connected to it. Pulsing the first activation pin will send a message.\ \ When messaging Communicators, you must set data to send to the string `text` to avoid errors in reception." @@ -441,12 +441,19 @@ origin_tech = list(TECH_ENGINEERING = 2, TECH_DATA = 2, TECH_MAGNET = 2, TECH_BLUESPACE = 2) power_draw_per_use = 50 var/datum/exonet_protocol/exonet = null + var/obj/machinery/exonet_node/node = null + +/obj/item/integrated_circuit/input/EPv2/proc/get_connection_to_tcomms() + if(node && node.on) + return can_telecomm(src,node) + return 0 /obj/item/integrated_circuit/input/EPv2/New() ..() exonet = new(src) exonet.make_address("EPv2_circuit-\ref[src]") desc += "
This circuit's EPv2 address is: [exonet.address]" + node = get_exonet_node() /obj/item/integrated_circuit/input/EPv2/Destroy() if(exonet) @@ -461,7 +468,15 @@ var/text = get_pin_data(IC_INPUT, 3) if(target_address && istext(target_address)) - exonet.send_message(target_address, message, text) + if(!get_connection_to_tcomms()) + set_pin_data(IC_OUTPUT, 1, null) + set_pin_data(IC_OUTPUT, 2, "Error: Cannot connect to Exonet node.") + set_pin_data(IC_OUTPUT, 3, "error") + + push_data() + activate_pin(2) + else + exonet.send_message(target_address, message, text) /obj/item/integrated_circuit/input/receive_exonet_message(var/atom/origin_atom, var/origin_address, var/message, var/text) set_pin_data(IC_OUTPUT, 1, origin_address) diff --git a/icons/obj/integrated_electronics/electronic_components.dmi b/icons/obj/integrated_electronics/electronic_components.dmi index b9b82061caf62c9541efe750f172ee145db8508d..07b0cec1b70f6a26d3359a579805a2810d362b9c 100644 GIT binary patch literal 20610 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 literal 20469 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 diff --git a/icons/obj/integrated_electronics/electronic_tools.dmi b/icons/obj/integrated_electronics/electronic_tools.dmi index 975f2fc9a812829918c18a4602e109bfd00a69f0..821265acccc19f75b1b3fd42dc9d33bdfccbeeaf 100644 GIT binary patch delta 2375 zcmYM0dsxzE8^?cuW{Oi6rma-WX}WrsYr5AoJXI!c3v0S*)5OeD^AL*R0ptg^mR+sH zRc3}@S$S0+D$8&>!7{Z>@lXD@z_*6uy695z`2n6mabKpZ90t554+^)HWP8G}0G-y!vgR-`daU zj2q8A)3Le)zm>gq398GpVC5R*7HYdXsr|sY7ZanOQ8P;sQ{oEdKp1E?I(-Ct;MCTU zH9woZ8vB0ZC4=i^T1Xb+od3f9ud)Qc1hx?N?5p~*^P$(B;bXsB{BUZ*@8uP7W}Vy1 zFt3Q{)q~RaFy(rWTJPop(O5_AMPzW>gMp=qIi~!WYh`fN(@RxBGqZ&78!t$m^XqGs zvvH1nw%gC#O7Eq&2me$i%>$QuzP+}s@@C%Q5M4rRnIl&S>n~n-V3CmH0sv<3!*&Np z<}wu(sWGDMHhUCD!-`_M?;{@`5dt@lK;eS@)P~$xKiWrd%YO}Smn{7&{+F8k>Cwavx1bXzB)K^aIa}yotN8 zixZT%(s!^@=uSCGoS-w2%DeBla6yJhmvfh{(D-cPO-ND8T?d`s;g$G|Ww!B<6lK!F zEGT)}V@_z&n1E#4cqy7bN7PosYETZ9ww_5BZi6*(t+yI#SE(pg9P%C-NExc`979|j zBf+6Xlj@B3q8)EKOrA0|OXCf`!Q9iw|NKP@uk}lGXHlm4SkV`!$Dhm2g3r=MTx0A0 zA@DbdFs}h>TzR)VWe$R!u_lC@V!=G(sJO5 zH1k3@N+9VpAv-XN9zQAYbN&(J+Or;TB}l=4=_Y&o%6u=#STfJ|pSiH|js>>mC$S2q zhH>{cSpd1J+sMIn4-m-#g&gy&+|k1aFPbm85!ZvKC zjk$+*ZrrMrHHpij233o4K^wfx$5lOl@A^ctn{vfGqdcPdNoVLgtK5+Jg0-}vF($k$ zq7UYcH)>Gy8fdxhzIr(zlN$dT_Kqxus!&@Hu+S91=*pCGFP*bR5Hx+*j?cYc zOn?FWfLn809K_=`e~IsHX_Lavhg9&?$$F?L39X zda&F+ycO{)CuCiIo=GePc)*kkAQ^_s+JV;*U(^jy|Gdl&o&1%oht7iE{f=jvHP!aT zl*U|;8S#xY=QL-}e`!HQ#=`n;22*_0EcbZF(qE!jlI;&eo{`fkklT+(=NL6=o@9T&F$T1^wO07>A#z0rF% zz<`yO;T$E-z*4jO=Dp3;Xh9NJ(SsD8e31 z!-T()%+RY9GhBzUg;f7^MO;TEZ#lW{}kV5Aet4NK{(%Fw?m9m?8^M(MG zrd{9SZLfv~T5SFqVk5dl2a=C}5YM&7j`9zK;gibqczU~UMKhTMyP?M{s1ub=xuy&i z)F-(LPm`*>SCy!sBKv5?eHVp{+`6cSt+~5Ej|cPOu++Ik`X??2)VCx zVydAVz0x;a9EBA~)S8)3x@rRcY_+83>+^x|2^ALn$I;L!@|9yqbd(|uXiT0khaT%cD_q{0QP_gj7{kTA6?PpO#6)iOXg1yYYwxWG0xjmM!9)S7rVG(7Z^bL fU#r60UN&0{a7|$5X)hT+LqJ#vZg<_z_`?4Hn4snh delta 2210 zcmZ8je>Btk8~6f344H>h~(zo@_X}RZI}@o!;J5`=iK`}=llBO{k-1q=XuWayw7=_=R9iU*L4{i z5Wt`=3;=*W)}aussJ;8ITQEMKf49sQY^3vr+9yb?kC!iimvo=kUM3Td`^UPUqnsg! zMaPDbE&@OTvm~=czizi-gFx=PzV=TC93Bz$9*b6*{2F-1^m*RdJU5omYrlun^lm8D zGn3ehtFXF1omh@6mR}<>^gosOUvCWl7;v@eoU7R#hh`v7lJ7ZG2*bpKK7|$T*-X6> z*m(4l41I82OuPj(#R;wcX(P3y*@eVhdpxxBvHa>!f`^4E?x$l6DH0;n+kkSfL%gA` zB6J?6(#tyeP*yS)Q~qmHZb2|HTvO@H=IHA^BdWiP_m=J3IhlF9cg|ndW#S&L5qfsHsuO;w9wy<0f5d?Pxt-D6PWV62){lD<7@Ksp4W>S zUKnJ(jI7!@U=Ur9#G6`K39#A`mb+#Y#Y+2j7fEw{*T^2q*ZDhO#Bi?ltzR8Bs`Mf1_N_+Ku5 z;PIw+BXi{0F!Dae*f^TGxcXURL0nU?Q>u8WM3gc8I?bc6v>^Fi*(cyc zQFDu?x|4r?X)`i|JgY|++j)O)P-ml7qu6nTG8h~3e>06^(`8nQGfGYbc%Gk6klxAbK@XJ;qoQE2}@N{mF%37T=yml`TsDS_L|itSxo%5hK3iz%!`1w zMfIRF8N}qLW`TD`rXAl|;V@y0d4~H(y>wroM=t}i?c@551Tal+&cR~s#jEOA{PSh{ zdUQDtb5$z-2Zc-+*4ssgJ#FZipAc^UHt|9}ZM^rlveoe5gqb3PaNT%7BCv>0S(hI_ zKD#RU$fs$sZ`Z2_!SdQh$9!54O{aUo8VrxkbSsrh>*>6V4Ho3&mhq@9;ng0R5B6^9 z5#IQw#+{_D*HIeD*g_0pKybwIm%uJG8db@K`qOC%;*oKBP}2>eS6^l(k^~t=iM`M# z{nJm5FJq#^y;}4!sKtGQ*5WfJfGoxnGMY68eDZ_y6RS5d{1Q^qL^@KPlOSr4*MPz~ zUrS=lSr3kv7mF}|!2Xz1nO~}2YQxe^9h_Dt;l<1OBXiZv4>baNE_AoECdVxPXnQPI zkL#h)jEZsfMnqv_oEKEZ?qDQytb_Y9x5>`kL%r!9BJ}c`b5b#CBF3Aj3 zSM$b>Xw$MPyE%`FRms9AMS-1?^Hlk7Bs~65qJ;I(`=pR_Y1_+RVzvC=ZC< zd2Eg2%i?afYDU52+znb;8eTVZi?Yk!;A?u$qK?u%=DwNbFw1Efr&0(X$UXh$y7bt!Rcl{ZLO!f#M!(C zi;E~Pv{@Fj8FoKZ)c;vK!l$|(1<+PAT^I!}d;+7OCKU&^5G>+a>D(Z-@p1oj4M(Hy zw4PDg`bcfcVE1LFfXU&9eS@d)iK{K+gOt9Xz?TBLj(&lTR!G;`#^oa-84H;{W z!k3x<7HpipE!5G**mZwf1iZ>fcK|CgaAN$h`L3@VdggX5A^8}PUX5Iz-H)~ieDoPr z7Y7V7ah297e!;rwPK6 zj#FK7dmmJd$3006kvM=|HrU#l)ZIBbA$f9T$xyNRKI=673MZ6SLnIO4Z{c4gG#&TS z%KF5b2ITP9z7UsI9F|;b{dJ^=l`4o5J6Gh@-e#tDwf9;*AAr=~GrMeukcmhn(qjo| zht;T~#DqRU1SJ{AZkg58*zLMmH9M3x-JM`=;gMv!7A&k{?gq*M?= zxn#-4i_N8zK?EQQCs<6%sn!XARA`)KQ$@jc(@AL$Leb3cDO*$6rcy9Yy$aKN z1f^B20NYKYaCbPJn<62Tn5`oHn>Y}oq+LFd8wo+v6M(E+^9t2|foa-Th>!ioKi!`9 z8gg|EhgRJ3c14FYM`l7+Mn+Fh4h5qQ