From a2fddc0fc1e0ba1b9040fbe9fec9a4b00767eb17 Mon Sep 17 00:00:00 2001 From: NicholasDV Date: Thu, 13 Jun 2013 18:22:05 -0400 Subject: [PATCH 1/2] Adds in the Kida Adds in the Kida Race to all parts. --- code/datums/datacore.dm | 3 ++- code/datums/datumvars.dm | 2 +- code/modules/admin/admin_verbs.dm | 2 +- code/modules/client/preferences.dm | 8 ++++++-- code/modules/mob/living/carbon/human/human.dm | 8 +++++++- .../modules/mob/living/carbon/human/update_icons.dm | 4 +++- code/modules/mob/living/say.dm | 13 +++++++++++-- code/modules/mob/mob_defines.dm | 13 +++++++------ code/modules/mob/new_player/new_player.dm | 4 ++++ code/modules/mob/new_player/preferences_setup.dm | 3 ++- code/modules/mob/new_player/sprite_accessories.dm | 5 ++--- code/modules/mob/say.dm | 4 +++- code/modules/organs/organ_external.dm | 3 ++- code/modules/projectiles/projectile/change.dm | 2 +- code/stylesheet.dm | 1 + 15 files changed, 53 insertions(+), 22 deletions(-) diff --git a/code/datums/datacore.dm b/code/datums/datacore.dm index e3f69881daa..9afd8543295 100644 --- a/code/datums/datacore.dm +++ b/code/datums/datacore.dm @@ -122,9 +122,10 @@ proc/get_id_photo(var/mob/living/carbon/human/H) icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' - if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' + if("Kidan") + icobase = 'icons/mob/human_races/r_kidan.dmi' else icobase = 'icons/mob/human_races/r_human.dmi' diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index 81abf92546a..df3a72391f7 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -730,7 +730,7 @@ client usr << "This can only be done to instances of type /mob/living/carbon/human" return - var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell","vox") + var/new_mutantrace = input("Please choose a new mutantrace","Mutantrace",null) as null|anything in list("NONE","golem","lizard","slime","plant","shadow","tajaran","skrell","vox","kidan") switch(new_mutantrace) if(null) return diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index c36a0ab99d2..acb7e3b2283 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -647,7 +647,7 @@ var/list/admin_verbs_mod = list( if(!istype(M, /mob/living/carbon/human)) usr << "\red You can only do this to humans!" return - switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox and Tajaran can result in unintended consequences.",,"Yes","No")) + switch(alert("Are you sure you wish to edit this mob's appearance? Skrell, Unathi, Vox, Kida, and Tajara can result in unintended consequences.",,"Yes","No")) if("No") return var/new_facial = input("Please select facial hair color.", "Character Generation") as color diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 8d5376c3131..75ead11e4c5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -792,18 +792,22 @@ datum/preferences if(is_alien_whitelisted(user, "Skrell")) //Check for Skrell and admins new_species += "Skrell" whitelisted = 1 - if(is_alien_whitelisted(user, "Vox")) //Check for Skrell and admins + if(is_alien_whitelisted(user, "Vox")) //Check for Vox and admins new_species += "Vox" whitelisted = 1 - + if(is_alien_whitelisted(user, "Kidan")) // Check for Kidan and admins + new_species += "Kidan" + whitelisted = 1 if(!whitelisted) alert(user, "You cannot change your species as you need to be whitelisted. If you wish to be whitelisted contact an admin in-game, on the forums, or on IRC.") + else //Not using the whitelist? Aliens for everyone! new_species += "Tajaran" new_species += "Unathi" new_species += "Skrell" new_species += "Vox" + new_species += "Kidan" species = input("Please select a species", "Character Generation", null) in new_species if(prev_species != species) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 63d685bfbdd..77811f9c81f 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -817,6 +817,8 @@ return "Mobile vegetation" if("golem") return "Animated Construct" + if("kidan") + return "Kidan" else return "Human" @@ -829,7 +831,9 @@ else if(src.dna.mutantrace == "tajaran") return "Tajaran" else if(src.dna.mutantrace == "vox") - return "vox" + return "Vox" + else if(src.dna.mutantrace == "kidan") + return "Kidan" /mob/living/carbon/proc/update_mutantrace_languages() if(src.dna) @@ -841,6 +845,8 @@ src.tajaran_talk_understand = 1 else if(src.dna.mutantrace == "vox") src.vox_talk_understand = 1 + else if(src.dna.mutantrace == "kidan") + src.kidan_talk_understand = 1 /mob/living/carbon/human/proc/play_xylophone() if(!src.xylophone) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index 9d29d317c80..f10120d66c6 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -444,10 +444,12 @@ proc/get_damage_icon_part(damage_state, body_part) if("skrell") race_icon = 'icons/mob/human_races/r_skrell.dmi' deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' - if("vox") race_icon = 'icons/mob/human_races/r_vox.dmi' deform_icon = 'icons/mob/human_races/r_def_vox.dmi' + if("kidan") + race_icon = 'icons/mob/human_races/r_kidan.dmi' + deform_icon = 'icons/mob/human_races/r_def_kidan.dmi' else race_icon = 'icons/mob/human_races/r_human.dmi' diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 420e20a1b92..838187f62ed 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -19,6 +19,7 @@ var/list/department_radio_keys = list( ":j" = "tajaran", "#j" = "tajaran", ".j" = "tajaran", ":o" = "soghun", "#o" = "soghun", ".o" = "soghun", ":v" = "vox", "#v" = "vox", ".v" = "vox", + ":q" = "kidan", "#q" = "kidan", ".q" = "kidan", ":R" = "right hand", "#R" = "right hand", ".R" = "right hand", ":L" = "left hand", "#L" = "left hand", ".L" = "left hand", @@ -39,6 +40,7 @@ var/list/department_radio_keys = list( ":J" = "tajaran", "#J" = "tajaran", ".J" = "tajaran", ":O" = "soghun", "#O" = "soghun", ".O" = "soghun", ":V" = "vox", "#V" = "vox", ".V" = "vox", + ":Q" = "kidan", "#Q" = "kidan", ".Q" = "kidan", //kinda localization -- rastaf0 //same keys as above, but on russian keyboard layout. This file uses cp1251 as encoding. @@ -188,6 +190,7 @@ var/list/department_radio_keys = list( var/is_speaking_soghun = 0 var/is_speaking_taj = 0 var/is_speaking_vox = 0 + var/is_speaking_kidan = 0 var/is_speaking_radio = 0 switch (message_mode) @@ -290,6 +293,10 @@ var/list/department_radio_keys = list( if(vox_talk_understand || universal_speak) is_speaking_vox = 1 + if ("kidan") + if(kidan_talk_understand || universal_speak) + is_speaking_kidan = 1 + if("changeling") if(mind && mind.changeling) for(var/mob/Changeling in mob_list) @@ -388,6 +395,8 @@ var/list/department_radio_keys = list( heard_a += M else if(is_speaking_vox && (M:vox_talk_understand || M:universal_speak)) heard_a += M + else if(is_speaking_kidan && (M:kidan_talk_understand || M:universal_speak)) + heard_a += M else heard_b += M else @@ -403,7 +412,7 @@ var/list/department_radio_keys = list( var/rendered = null if (length(heard_a)) - var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox) + var/message_a = say_quote(message,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox,is_speaking_kidan) if (italics) message_a = "[message_a]" @@ -428,7 +437,7 @@ var/list/department_radio_keys = list( message_b = voice_message else message_b = stars(message) - message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox) + message_b = say_quote(message_b,is_speaking_soghun,is_speaking_skrell,is_speaking_taj,is_speaking_vox,is_speaking_kidan) if (italics) message_b = "[message_b]" diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index 9715e6ed20c..8f1868b7168 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -206,12 +206,13 @@ //Whether or not mobs can understand other mobtypes. These stay in /mob so that ghosts can hear everything. var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE - var/robot_talk_understand = 0 - var/alien_talk_understand = 0 - var/tajaran_talk_understand = 0 - var/soghun_talk_understand = 0 - var/skrell_talk_understand = 0 - var/vox_talk_understand = 0 + var/robot_talk_understand = 0 + var/alien_talk_understand = 0 + var/tajaran_talk_understand = 0 + var/soghun_talk_understand = 0 + var/skrell_talk_understand = 0 + var/vox_talk_understand = 0 + var/kidan_talk_understand = 0 var/has_limbs = 1 //Whether this mob have any limbs he can move with var/can_stand = 1 //Whether this mob have ability to stand diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 686007c7173..f2859af519d 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -353,6 +353,10 @@ if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist)) new_character.dna.mutantrace = "vox" new_character.vox_talk_understand = 1 + if(client.prefs.species == "Kidan") + if(is_alien_whitelisted(src, "Vox"|| !config.usealienwhitelist)) + new_character.dna.mutantrace = "kidan" + new_character.kidan_talk_understand = 1 if(ticker.random_players) new_character.gender = pick(MALE, FEMALE) diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index f7c965d2fdf..821a95e4b61 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -144,9 +144,10 @@ datum/preferences icobase = 'icons/mob/human_races/r_lizard.dmi' if("Skrell") icobase = 'icons/mob/human_races/r_skrell.dmi' - if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' + if("Kidan") + icobase = 'icons/mob/human_races/r_vox.dmi' else icobase = 'icons/mob/human_races/r_human.dmi' diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index 4d4baf0ba18..9a321f20382 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -285,7 +285,6 @@ icon_state = "hair_e" gender = MALE // turnoff! - bald name = "Bald" icon_state = "bald" @@ -306,7 +305,7 @@ name = "Shaved" icon_state = "bald" gender = NEUTER - species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox") + species_allowed = list("Human","Unathi","Tajaran","Skrell","Vox","Kidan") watson name = "Watson Mustache" @@ -484,7 +483,7 @@ species_allowed = list("Tajaran") taj_ears_spiky - name = "Tajara Spiky" + name = "Tajara Spiky" icon_state = "hair_tajspiky" species_allowed = list("Tajaran") diff --git a/code/modules/mob/say.dm b/code/modules/mob/say.dm index 9f3660eb7c5..a0b765d8d43 100644 --- a/code/modules/mob/say.dm +++ b/code/modules/mob/say.dm @@ -69,7 +69,7 @@ return 1 return 0 -/mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell,var/is_speaking_tajaran,var/is_speaking_vox) +/mob/proc/say_quote(var/text,var/is_speaking_soghun,var/is_speaking_skrell,var/is_speaking_tajaran,var/is_speaking_vox,var/is_speaking_kidan) if(!text) return "says, \"...\""; //not the best solution, but it will stop a large number of runtimes. The cause is somewhere in the Tcomms code //tcomms code is still runtiming somewhere here @@ -82,6 +82,8 @@ return "mrowls, \"[text]\""; if (is_speaking_vox) return "chirps, \"[text]\""; + if (is_speaking_kidan) + return "chitters, \"[text]\""; //Needs Virus2 // if (src.disease_symptoms & DISEASE_HOARSE) // return "rasps, \"[text]\""; diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index d166dccd38c..5e1fba994c7 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -740,9 +740,10 @@ obj/item/weapon/organ/New(loc, mob/living/carbon/human/H) base = new('icons/mob/human_races/r_lizard.dmi') if("skrell") base = new('icons/mob/human_races/r_skrell.dmi') - if("vox") base = new('icons/mob/human_races/r_vox.dmi') + if("kidan") + base = new('icons/mob/human_races/r_kidan.dmi') else base = new('icons/mob/human_races/r_human.dmi') diff --git a/code/modules/projectiles/projectile/change.dm b/code/modules/projectiles/projectile/change.dm index 2b4b4c457d8..604cf5428b9 100644 --- a/code/modules/projectiles/projectile/change.dm +++ b/code/modules/projectiles/projectile/change.dm @@ -74,7 +74,7 @@ var/mob/living/carbon/human/H = new_mob if(H.dna) - H.dna.mutantrace = pick("lizard","tajaran","skrell","golem","slime","plant","vox",4;"") + H.dna.mutantrace = pick("lizard","tajaran","skrell","golem","slime","plant","vox","kidan",4;"") else return diff --git a/code/stylesheet.dm b/code/stylesheet.dm index 902160e9ef9..5eb0ec9991a 100644 --- a/code/stylesheet.dm +++ b/code/stylesheet.dm @@ -56,6 +56,7 @@ h1.alert, h2.alert {color: #000000;} .skrell {color: #00CED1;} .soghun {color: #228B22;} .vox {color: #AA00AA;} +.kidan {color: #cc9900;} .say_quote {font-family: Georgia, Verdana, sans-serif;} .interface {color: #330033;} From 9139a70d8cbe4fc3fbe568162628b7fdf07cb265 Mon Sep 17 00:00:00 2001 From: NicholasDV Date: Fri, 14 Jun 2013 00:06:45 -0400 Subject: [PATCH 2/2] Adds in the icon files for Kidan and fixes issue SkyMarshal caught a small issue, and I realized that I never did include the kidan icon files. This is the fix! --- code/modules/mob/new_player/preferences_setup.dm | 2 +- icons/mob/human_races/r_def_kidan.dmi | Bin 0 -> 2587 bytes icons/mob/human_races/r_kidan.dmi | Bin 0 -> 2550 bytes 3 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 icons/mob/human_races/r_def_kidan.dmi create mode 100644 icons/mob/human_races/r_kidan.dmi diff --git a/code/modules/mob/new_player/preferences_setup.dm b/code/modules/mob/new_player/preferences_setup.dm index 821a95e4b61..36cf966566d 100644 --- a/code/modules/mob/new_player/preferences_setup.dm +++ b/code/modules/mob/new_player/preferences_setup.dm @@ -147,7 +147,7 @@ datum/preferences if("Vox") icobase = 'icons/mob/human_races/r_vox.dmi' if("Kidan") - icobase = 'icons/mob/human_races/r_vox.dmi' + icobase = 'icons/mob/human_races/r_kidan.dmi' else icobase = 'icons/mob/human_races/r_human.dmi' diff --git a/icons/mob/human_races/r_def_kidan.dmi b/icons/mob/human_races/r_def_kidan.dmi new file mode 100644 index 0000000000000000000000000000000000000000..0d7b050b7ce2d1ef88132c060b44c53f70cce170 GIT binary patch literal 2587 zcmZWo2{hDe8~;nqFtSu`!j+M-WSwLwF-(NQD5^<|zDAZTV;N*?uH_nT7$xpS8d;)* z%8d-y)P%S(%06Su+H96#%w(CFZ#wtuoO{mqp7XxX@A;kcEbse1zYGs|CwYh(1ONbe z7iWia03ZeZzGb8V0MNdA?UlqF^KkWYeEaq-LJN3-0%A@8er7=CDZuh);F1v#YXe+1 z2ByM+aSU+J84#0Ch#L=x+nm>{0P#yjNmMcVWT_;H6!x6ECtx=};wN!fab75_!_7!^ zL|_;;5EBXjw;yH=OhPEoeLI$e5+RoapUI=4rRnK>$N|O^-#xZ9jD^U^7uED8&uCNXTzUpw2QQ; zYUdRD>xOezat;KZuS_ycf318)_iN?eVW4vL$qog)-hDS2S(y|RL|Hnle|jEsE2~eh zh^Q7((X!#ZnJKuG5ak_pB$=M&mLbm<5(T- z=k@Sc=cxFPR%b8 z6m5oVUvf}cTUQ_Qswdym{ohG5qHV8h{nOyT&$@&7y{Tydtm=!V!J@{C;l?-4Ae~0f z?>D*pH1a?XI#|7wpp%TM4!?1%#uuvQT;LmFm?i|4jV`y2^HLCilUu+TfC_p98>J^MRA?x%cxsHy>52r@AI;N0B#Z zmL!)ZY8s?A^(sg$H8_!aDIkvDPG3lK_KEwy{(jkmJ^qa$Ho8$>dqoDLd|?VtVr^SV ziZRxre7vz)TRmaND$bK}ST4EE-L^XQ8JhNa7!HzMQqER#tH&UkQG9503&h{~xzA{& z_}(dmb(>?5dlDyZ+*H1=9&z>J$y0yEr01IPFPba;Q~H-AkU+b(OopeRdK%&;17ycW)!6)H)-F^4k1NpyS`3k_*gfk+Tq7dZ)vBaisU*Y_i0h@ zBr2Sl6u1fbQYEhQRu$6fHP{R^Nw<(0O^Pu);w^ky;^$HR%{1}PVAOhp!@65cZ0}Ko zFhez6SvFT+4Rk+d4sKiSDId?_a^F>ghlz!~$Vf08PUB@fxN!6(v%Gsv4)g-Fr9?d> znUi=vd$!axxM0h@Mwry+Ejz{mMzk^y-qZyc2h%;N7d>ENQbWqgivnY?F zGsN!`^fP#+xM^wI_%)nNWT$&a$YO)bj3x#Sf&9KaJ z=EKc7w}C$7mL@$+tNC;@n`rfGS^?gtfuP#&5lIlAWV<_1gZ2vdz>Ix&Vv`z=1lL>j ztUT~({xp45zzb1%1tL{Rt15a&Th9x#UxT0Gu^lNSIYs;0i$+}ByomotD;8FXn|^ZF zde&wTK@Smhb8!K}P&u{yg_78l3>CFbR(_@wopx+!|7_o&Rpu?T#ID&v_@G>mjdO2e zzzmGcGc_KcodP=;*>- zgL)6R7<`*FF4}cg2OT&`Luw}I)KEr8jIPDuh6g4FFVRCcCO9hERExvLk(<;zg$fD@ z>~C-fx<)K}{mLlh&}D;fL|eJoyKQ5wtD5k6``|6j3a6Xo;JLO=-SF0K7sso* zYz8(}@FV@Pd9Cn#PVbP~e;)a*H{wqS@i%9&mYY!J_}BZol{@FF-mX0L;^y zMEQ{BoHQbi2(yt_?>i-yUS1!g{yt%)@$R|F@d8l_lK9{xnHOXe@HPBqAUfyyz09h| zW7R8$9Q}DuT8HP-e)6pMQ+=++wE@EG~0?;a{y?YH(6ajq9kpSQ}(@G N7e{x8TEz9_{{oDG3jhEB literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_kidan.dmi b/icons/mob/human_races/r_kidan.dmi new file mode 100644 index 0000000000000000000000000000000000000000..c8be5e21ed18e3a9e05d60c18a58cb2c34c48a50 GIT binary patch literal 2550 zcmZWp2{hE(AOAgCra{w7kDkPsUbaYtiFpj+S!c)+ro?N6iA;<&>*NVVLkfw8p^nySPBdPfS9?N zu`K}n1pVGY!T`mUidv{(A_}d8x{vGf*3ncylz@-6aRUlLkxO5sA z_X9@oK#Cc_r~S@<4dXYNZ9fP2FCl`cY^)JQkmRQTTeKZuFw^fLSg>!|I|UeDBVhe; zHv@2ZUjPWnO8PVgZh#)$yX+kScK*ho4f#^y<2S*uS*p9Ze#z_tf$(?H;9I+`g>c=j zSBK(yw{7oDE;P8_p@?Mn-y8979vEV|uX)sre~{`MwAWTIbYCrp70zDpqaJVO$#qHD zLVC;kQdg5Aj&;d}46ZnYm&EAO_{PmsawMdkn!EF>-rQ)!$Q5)?|%;$sdo5n#v2#amj>hcaGv4%oDMnhOHjaC$4G2SX#Ik!*!t=+F)&vxAp1`Njp{TjcLqyLC_@pr|? zL|d&@{QD#+H=@ru5>k1EuZ7FiOgb=l$Azet`-W4S50^CVG0LDF_4iB~< zP*X(>X4s|b`pG`YZKqm(77eI!WW>}GDR*2c>G4J61`&KXySUD&lYPwyQsXm^WxAJV zf33sl{zuRc_y~%>(4=LA=Au{}hpWeq7SRev4cxD29#73p59d7T=TsP}$*k~1&+*p&NQsbQEMK0U&{hGDrkMHE=-X4nfvXc~7(afrjyCI4lLZsK7{6A^$7?;dLD-s;B znMg|#68*qxox12Ym=5WOe=%^WC8BeX>b1lPJw>w&3_O`?m^isd=tyTKQIWXcgk<=D z$5dKYmhNLZjQaHQ&00Okf5uM^gh-!FP)7AeO3pwB`-7Vjji3&xKh8xN_;M8TcN_~7 z<(O5Rdstm>pH?-CW6WYg14RqBL>a&K2p)Yg%C8vzr{@-_e)vd6w5y$5?=e3U{|t@4 zC3@Iu_c!2lr*;Ez9}fLV(VMSScRE|`U<#i6CVx)P%!0P*FDs%~Ok0)Zo!Ur`Ym$Q{ zQqWRH5t6CtqK$Vc^yW{T&OFt-?W|9(k5E4&K`vqKO%6NVt66$a7sc|6x8n@W&e%*_ zZ|hXY`9N2ED6`AD7;Z@_f_GufUN-8v=0>aRcT-$H8Ovkt5!_r*x|Fk^fG-EHJ{7N? zb>7mM(n+lMsL+qwKOqgQs<$cy`c(Fuyw6JWqRz3{SKZ4w1Vg#DJimF|Xr+o1&XTfA zsj2nI%;9}Fw@Lv0sbSKUQmf48onE;9*A3FQV12!6-f(#M7Gi7VJ(c9XD~)yUZQmMG zI|@Cz?9!heUxI{BZjCP`^U0{-FBmfMRCL3uKBmH0vp%x1MKWE+CCbi;PIg5Q#rtb|H8=juE+XZb4Ed|}d$tXzJlB??pe9p?82uF+u?eUg||pG=AY>F{v>*rN7Y>6$fB-@7txeZ#XQsWK4UiCLc9cN zJEirK^Q7lDhOGH&rV|&1o7gbDTPu%=vdawNrl^!9^o>1~$M8>d2(lbohnwV{yxIn@s86>s7JdHkHI=%^)I1Vs8`CY=hC5w9ofL>n0g7AIbt+VmRUuL%TA}1iv^u zXlJBZo+}P_8HO(5B+7gJyQTSYr%z$&<T6|bAYUH-+(b&Bme&k6mM zAT}j?MUuOFc2V!d*D-(zql>RF`Vt0JmPmn?SkkWsu02|kEP!mW^Q@|;d9f4TAL{Pb!X`1$2g+ov7V zs?CKzz;vO@sBIQ|S~d1N*vq`w)qG~i8Ed94_1w;!ds|Wz?TDA@(qD#l7m<}lxe33if^tk0WW zlP_TmTJ1dDAN!$9Qmv@&9% z=)aBv02{4AFm~mawjTRyIWMI0mO77*y+*Wkcd_5E^Uq>JWt}X^jG!PgZ4I&T(KNsN zas9VV2$fI1z}WYYez3nN99y;ij-)%~#(`&6=O=QSf>!IZ(;^=S?5U`qb>l!X^$Y)s zWOd)7w=8rFwm_XvJhm}<>oDy+U}t4FK(!n9-E8cbF|0+0UE+9jhzP+#T2S5t`c