From d31b2992516ca034f7d79246ffb17c8985354ead Mon Sep 17 00:00:00 2001 From: Victor Turgeon Date: Tue, 11 Oct 2022 21:21:27 -0400 Subject: [PATCH] monke --- Player.gd | 7 +- Player.tscn | 7 +- Scenes/Enemy.gd | 32 +++++++- Scenes/Enemy.tscn | 76 +++++++++++++++++- Scripts/HitBox.gd | 1 + Scripts/HurtBox.gd | 4 +- Test_Scene.gd | 6 ++ Test_Scene.tscn | 36 ++++++--- .../MetalCorrodedHeavy001_Flat.jpg | Bin 0 -> 42565 bytes .../MetalCorrodedHeavy001_Flat.jpg.import | 37 +++++++++ ...orrodedHeavy001_METALNESS_1K_METALNESS.jpg | Bin 0 -> 227500 bytes ...Heavy001_METALNESS_1K_METALNESS.jpg.import | 37 +++++++++ ...MetalCorrodedHeavy001_NRM_1K_METALNESS.jpg | Bin 0 -> 1420465 bytes ...rrodedHeavy001_NRM_1K_METALNESS.jpg.import | 37 +++++++++ project.godot | 5 ++ 15 files changed, 261 insertions(+), 24 deletions(-) create mode 100644 Test_Scene.gd create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_Flat.jpg create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_Flat.jpg.import create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_METALNESS_1K_METALNESS.jpg create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_METALNESS_1K_METALNESS.jpg.import create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_NRM_1K_METALNESS.jpg create mode 100644 Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_NRM_1K_METALNESS.jpg.import diff --git a/Player.gd b/Player.gd index faa16d3..67b4a81 100644 --- a/Player.gd +++ b/Player.gd @@ -83,9 +83,10 @@ func _physics_process(delta): if Input.is_action_just_pressed("crouch"): head.translate(Vector3.DOWN) + speed = 20 if Input.is_action_just_released("crouch"): head.translate(Vector3.UP) - isStep = false + speed = 40 if Input.is_action_pressed("move_forward"): direction -= transform.basis.z @@ -113,14 +114,16 @@ func _physics_process(delta): else: isSlap = false; + if isSlap: if slap >= slapkill: AudioMegaSlap.play() else: - isSlap = false; AudioSlap.play() + isSlap = false; hitbox.monitorable = true hitbox.slap_level = slap + hitbox.slap_kill = slapkill hitbox.slap_vector = point_to.get_global_transform().origin - camera.get_global_transform().origin if (chargeSlap): diff --git a/Player.tscn b/Player.tscn index ce3da4e..63b5a29 100644 --- a/Player.tscn +++ b/Player.tscn @@ -21,7 +21,7 @@ height = 3.0 [sub_resource type="CylinderShape" id=3] [sub_resource type="BoxShape" id=7] -extents = Vector3( 0.797679, 1, 1 ) +extents = Vector3( 0.983522, 2, 1.55035 ) [sub_resource type="SpatialMaterial" id=4] albedo_texture = ExtResource( 3 ) @@ -109,16 +109,17 @@ transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.84218, 0 ) [node name="Camera" type="Camera" parent="Head"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0154071, 0.355, -0.246618 ) -fov = 80.0 +fov = 90.0 [node name="HitBox" type="Area" parent="Head/Camera"] transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0154071, -0.355, 0.246618 ) +monitoring = false monitorable = false script = ExtResource( 7 ) hitbox_type = 1 [node name="CollisionShape" type="CollisionShape" parent="Head/Camera/HitBox"] -transform = Transform( 1, 0, 0, 0, 0.3, 0, 0, 0, 0.8, 0, 0.414722, -1.5988 ) +transform = Transform( 1, 0, 0, 0, 0.3, 0, 0, 0, 0.8, 0, 0.414722, -2.0674 ) shape = SubResource( 7 ) [node name="PointTo" type="Spatial" parent="Head/Camera"] diff --git a/Scenes/Enemy.gd b/Scenes/Enemy.gd index 4929c13..a9ba041 100644 --- a/Scenes/Enemy.gd +++ b/Scenes/Enemy.gd @@ -9,6 +9,17 @@ var movement = Vector3() var direction = Vector3() var gravity_vec = Vector3() +onready var hurtbox = $Hurtbox/HeadCollision +onready var hitbox = $HitBox/CollisionShape +onready var animation_player = $AnimationPlayer + +func _ready(): + animation_player.play("floating") + var rng = RandomNumberGenerator.new() + rng.randomize() + animation_player.seek(rng.randf_range(0.0,3.0)) + animation_player.stop() + func _physics_process(delta): velocity = velocity.linear_interpolate(direction * hit_speed, hit_acceleration * delta) @@ -18,9 +29,22 @@ func _physics_process(delta): movement.z = velocity.z move_and_slide(movement, Vector3.UP) - -func get_slapped(slap_level, slap_vector): - direction = slap_vector -func get_shot(): + if get_slide_count() > 0: + var collision = get_slide_collision(0) + if collision != null: + direction = direction.bounce(collision.normal) + +func get_slapped(slap_level, slap_kill, slap_vector): + if slap_level >= slap_kill: + animation_player.stop() + direction = slap_vector * slap_level + hurtbox.disabled = true + hitbox.disabled = false + +func get_shot(hitboxOwner): + hitboxOwner.die() + die() + +func die(): queue_free() diff --git a/Scenes/Enemy.tscn b/Scenes/Enemy.tscn index c717e8d..5a01c1c 100644 --- a/Scenes/Enemy.tscn +++ b/Scenes/Enemy.tscn @@ -1,27 +1,91 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=14 format=2] [ext_resource path="res://Scripts/HitBox.gd" type="Script" id=1] [ext_resource path="res://Scenes/Enemy.gd" type="Script" id=2] [ext_resource path="res://Scripts/HurtBox.gd" type="Script" id=3] +[ext_resource path="res://Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_METALNESS_1K_METALNESS.jpg" type="Texture" id=4] +[ext_resource path="res://Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_Flat.jpg" type="Texture" id=5] +[ext_resource path="res://Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_NRM_1K_METALNESS.jpg" type="Texture" id=6] [sub_resource type="SphereMesh" id=6] +[sub_resource type="SpatialMaterial" id=12] +albedo_color = Color( 0.74902, 0.992157, 0.776471, 0.341176 ) +albedo_texture = ExtResource( 5 ) +metallic_texture = ExtResource( 4 ) +emission_enabled = true +emission = Color( 0, 0, 0, 1 ) +emission_energy = 1.0 +emission_operator = 0 +emission_on_uv2 = false +normal_enabled = true +normal_scale = 1.0 +normal_texture = ExtResource( 6 ) + [sub_resource type="SphereShape" id=7] [sub_resource type="SphereShape" id=8] +radius = 1.53964 [sub_resource type="SphereShape" id=9] +[sub_resource type="Animation" id=10] +length = 0.001 +tracks/0/type = "value" +tracks/0/path = NodePath("MeshInstance:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 0, -0.5, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("MeshInstance:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector3( 1, 1, 1 ) ] +} + +[sub_resource type="Animation" id=11] +resource_name = "floating" +length = 3.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("MeshInstance:translation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 1.5, 3 ), +"transitions": PoolRealArray( 0.5, 0.5, 0.5 ), +"update": 0, +"values": [ Vector3( 0, -0.5, 0 ), Vector3( 0, 0.5, 0 ), Vector3( 0, -0.5, 0 ) ] +} + [node name="Enemy" type="KinematicBody"] script = ExtResource( 2 ) [node name="MeshInstance" type="MeshInstance" parent="."] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0 ) mesh = SubResource( 6 ) +material/0 = SubResource( 12 ) -[node name="Head" type="Area" parent="."] +[node name="Hurtbox" type="Area" parent="."] +transform = Transform( 2.03634, 0, 0, 0, 2.03634, 0, 0, 0, 2.03634, 0, 0, 0 ) script = ExtResource( 3 ) -[node name="HeadCollision" type="CollisionShape" parent="Head"] +[node name="HeadCollision" type="CollisionShape" parent="Hurtbox"] shape = SubResource( 7 ) [node name="EnemyCollision" type="CollisionShape" parent="."] @@ -29,8 +93,14 @@ transform = Transform( 1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.0 shape = SubResource( 8 ) [node name="HitBox" type="Area" parent="."] +transform = Transform( 1.5, 0, 0, 0, 1.5, 0, 0, 0, 1.5, 0, 0, 0 ) script = ExtResource( 1 ) hitbox_type = 2 [node name="CollisionShape" type="CollisionShape" parent="HitBox"] shape = SubResource( 9 ) +disabled = true + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/RESET = SubResource( 10 ) +anims/floating = SubResource( 11 ) diff --git a/Scripts/HitBox.gd b/Scripts/HitBox.gd index 944a619..112d653 100644 --- a/Scripts/HitBox.gd +++ b/Scripts/HitBox.gd @@ -10,6 +10,7 @@ enum HitboxType{ export var hitbox_type = HitboxType.Unassigned var slap_level = 0 var slap_vector = Vector3() +var slap_kill = 0 func _init(): collision_layer = 2 diff --git a/Scripts/HurtBox.gd b/Scripts/HurtBox.gd index 863afdd..ca13869 100644 --- a/Scripts/HurtBox.gd +++ b/Scripts/HurtBox.gd @@ -15,6 +15,6 @@ func _on_area_entered(hitbox: HitBox): return if hitbox.hitbox_type == hitbox.HitboxType.Slap and owner.has_method("get_slapped"): - owner.get_slapped(hitbox.slap_level, hitbox.slap_vector) + owner.get_slapped(hitbox.slap_level,hitbox.slap_kill, hitbox.slap_vector) elif hitbox.hitbox_type == hitbox.HitboxType.Projectile and owner.has_method("get_shot"): - owner.get_shot() + owner.get_shot(hitbox.owner) diff --git a/Test_Scene.gd b/Test_Scene.gd new file mode 100644 index 0000000..d3f5331 --- /dev/null +++ b/Test_Scene.gd @@ -0,0 +1,6 @@ +extends Spatial + + +func _physics_process(delta): + if Input.is_action_just_pressed("reset_map"): + get_tree().reload_current_scene() diff --git a/Test_Scene.tscn b/Test_Scene.tscn index cfe1aa7..ef480c1 100644 --- a/Test_Scene.tscn +++ b/Test_Scene.tscn @@ -1,10 +1,15 @@ -[gd_scene load_steps=8 format=2] +[gd_scene load_steps=10 format=2] [ext_resource path="res://Materials/Dark_ProtoMat.tres" type="Material" id=1] [ext_resource path="res://Player.tscn" type="PackedScene" id=2] [ext_resource path="res://Materials/Orange_ProtoMat.tres" type="Material" id=3] [ext_resource path="res://AllSkyFree_Skyboxes/Epic_BlueSunset_EquiRect_flat.png" type="Texture" id=4] [ext_resource path="res://Scenes/Enemy.tscn" type="PackedScene" id=5] +[ext_resource path="res://Test_Scene.gd" type="Script" id=6] + +[sub_resource type="SpatialMaterial" id=3] +flags_transparent = true +albedo_color = Color( 0.894118, 0.894118, 0.894118, 0.211765 ) [sub_resource type="PanoramaSky" id=1] panorama = ExtResource( 4 ) @@ -40,6 +45,7 @@ glow_hdr_threshold = 0.44 glow_bicubic_upscale = true [node name="Spatial" type="Spatial"] +script = ExtResource( 6 ) [node name="CSGCombiner" type="CSGCombiner" parent="."] use_collision = true @@ -55,8 +61,18 @@ transform = Transform( 3.51681, 0, 0, 0, 4.16599, 0, 0, 0, 14.5504, 22.4026, 0, polygon = PoolVector2Array( 0, 0, -3, 0, 1, 1, 1, 0 ) material = ExtResource( 3 ) +[node name="CSGBox2" type="CSGBox" parent="CSGCombiner"] +transform = Transform( 21.115, 0, 0, 0, 13.92, 0, 0, 0, 1, -14.4011, 14, 36.3173 ) +material = ExtResource( 3 ) + +[node name="CSGBox3" type="CSGBox" parent="CSGCombiner"] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -18, 7.54811, 16 ) +height = 14.0 +depth = 14.0 +material = SubResource( 3 ) + [node name="Player" parent="." instance=ExtResource( 2 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 0 ) +transform = Transform( -0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, -0.965926, 0, 2.85127, 0 ) [node name="WorldEnvironment_EpicBlueSky" type="WorldEnvironment" parent="."] environment = SubResource( 2 ) @@ -67,14 +83,14 @@ light_color = Color( 1, 0.924276, 0.869018, 1 ) light_specular = 1.0 shadow_enabled = true -[node name="Enemy" parent="." instance=ExtResource( 5 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.367474, 2.61222, -26.0531 ) +[node name="Enemy1" parent="." instance=ExtResource( 5 )] +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -28, 5, 14.7642 ) [node name="Enemy2" parent="." instance=ExtResource( 5 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -7.44657, 2.62177, -26.1041 ) +transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 5, 14.7812 ) -[node name="Enemy3" parent="." instance=ExtResource( 5 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -16.3837, 2.53916, -26.4067 ) - -[node name="Enemy4" parent="." instance=ExtResource( 5 )] -transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 5.17381, 2.57569, -26.2299 ) +[node name="DirectionalLight" type="DirectionalLight" parent="."] +transform = Transform( 0.72831, 0.357922, 0.584342, 0.224814, -0.930353, 0.289658, 0.647319, -0.0795927, -0.758052, -51.5559, 23.8185, -5.9078 ) +light_energy = 1.734 +light_indirect_energy = 3.789 +light_specular = 0.499 diff --git a/Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_Flat.jpg b/Textures/MetalCorrodedHeavy001/MetalCorrodedHeavy001_Flat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06454151b848f4908d90cd77b052e257071cb0b3 GIT binary patch literal 42565 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

^@sV5Z3+bAFiFqEIYI zsOD7^Iu;|Zwp|yaWS@ElL?BTd_w+epCNB@f4J!e+@)*diUA8TzRV31M2d_Dt?+>s# z$QQMw))|3c)XgLGVQ4=B%reZJi@GHdhpKrqA3zV!zf@uu1O;c%F~hxBzJh- zTr5fhZ?7>Xzf2_-Y0k1dZT6BxYr+xS{{TOHZP7UAbvN0i(#zvgGa&)2^gMU(*Aa&_ zO(l?R2R3_tS-lb*z6!*^uIXG0EVcUPR;Ey^dxa&NBzt3O3LfE&EgNx4m~p_ z9~`dEz{U!#cccFRGBeRh9_~~z4RjBo%LJg39}XAWN=TqP_pGXk<8|v@KZZFI=Y8ap@C8oazc-tkl>DQ56??su}+!BOkS(LA9%Yq(A+QIk8IvEqw!HeD2u!L zTCC=RS0-EB`9l1y5n$=^CghVqq&VMFEZ1^Pk%ZIyUyFPFqh9jl+0EecwFU z_r`VL_to&rBMszkjaUT*xCgmE^S)P!l&yPsl9ds7gK0Zci}b(c;fmcZ4MeY|Rd~WU zJgMO3w^_XkWQ}yep>+qV5_!Irhw%RZS(2$SRAT$JlVJWh9dZCz8**ekDvsF)(0o1y z5!<(&$2NQ3Y7544UjSkBpxzz%L9Djdodb>EFl3@_w!xhBUXkTI~`lf9IxHb z3(#|pDS8PmlE?@WD~jQH{C%?VNw87;9zY6$YP;C4rdYOOz0pG%T|n4EkfMz+8JjFJ z!9gaTR3~e2Yo+$gS57u#H%w*HzUZl>+ehBdu6B{fRJ7nr_IXOVrWCAs{{VS!*w%cZ zon!FQ!)}a%6DjH;vy|u`h@}c=B2@55o)5D{ZTvZAp!CMT${XQxr)iVuIV)GH;C(3 zTmoqFf1j2zGk=9UQ`7BWZtJEvG+!!(8%2t;Ijp7|ze^%Eh50@u@O?1R;54&1LZ{56 znjrD?$f{5l%BrvfjycP8lR{> zqKTM&*4XS5$>d{$S|D#nAwcv{JwL}8tmzbkY|31ng-HO8F0&}uH3}pP8QS4UU_s}b zzd@9^v2k7M=4M^YZ_9jtoYq0L9P$a6w2W;53J0y`Y|k2<`h#BEKFzg2+6LZvJn~QF znflgr^bj+B>szZel)vY`EX5H<%OH`IAmfqA1Eyzi=Bj;LC9G;!%mUwhuPW5zJ<@*A zW^ugiQh4W*a<=>vj~(p2Mxmeq6j7728zUGj`(2MtH4F;b}B92|S z+-%i_eUX! zcLTZg%NB!t5=H{KSwNzrx7R6b==DliAxVtBV&=mG>)R_28$O$bZtL+kkA;KlLy zjPglTswj)?(#BFMp<^;Piah9)QrFsvKDf>%@&ZE=H!>e#)4p!bnU}G&Ta~=#K;O|= zek$El93nU(FKTxSufqc)(?*{tVhJ7p0KPdjTWkt~ls6SpF8TxQ`(~I-NLh-lvk*ua z7o@)wHG{XY9rHVe)0a=WHZB8KB!YYToS;l2eLnKYYW$#e<0}lfKM~89syuB2zGvg4 zz3M%AP!**rcX8$EmoC)n)fzv9>1GkP3~GR5v>#k}#(7xQl081r;R2)%0Bg1#Kelax zbigdT%tvh=gx{t}=`;sZ5`z}h9$?G;CjIj#q_D*nnipQOZYSome&Z=V)I?gDKGgf! zj-5bM0QGFWt1=rR#!Ir00X&h{HJT?ywu5v9mO#J@8;3)fv$pqR&;V6Ju~NNM3~`xa zxgdKoMn^q2bjtud86AA!ym9=)u<3_d*K!itSl%xeaaLBf9Y^Jv&(XJiOt1%^bd7D; z=JOf0)zUC}ZHO2O8+pV$gM5Jx2D$ga8w_znazB+v3M$JJ+Z3ZytB6LrXuw7`2<`e| zV^aKM>a@N${vG9q^nrY4FQ#}MMxGUL8bi1!x;4&A#Qr$lx`7SD06F01q_@GiD7KUg zwndOZ?cR=P85D>VkQB1m2dTeokuGF-)cmmB8sz4A7@4$^%?M~>A>%x_J$n_iBij_OP?66u@KMO%)e~4)Wu-JjcO>y<$>OoWzY=RVcw|O*s?oE6 zNdPM|3a;Go&p8rjNxt2}HqzW#>IXt_EhuDo511)pEr70%_O~PX z^uW_MZEea84tc`*XNSV9^!t$<^uC#`XAD@h!bBR0YKbJF@0Uq5#XM&4&h)#oeBH8A znfI_b3d*SUyNhA?=5HR_+af(v!m@zOH*FR{C!BW~&2cp8xGLCdvCkQJ*QEpo9~5l> zk_&bo#}V*r5;_+`Hm%(;!h5Y>G8XLo1S+5{QD4`tR%iZK?S#NG*R2m_A4&(9dB zH4_yo0*XA{WRz(2am0*#%+@&WzTdVJ!+kb+OyDp;tf~iIxtpFf##!5%Qy7q$09zJE zq4dp98RfgRL=E9e<~9KzfyZvY+cg+Db+YMq#~gt}(P=jG$2I-3(}d~+OQb9hl#pw` z{L0lP^pSuCf`eCe>+6Q17`lRjJ=;LC1_l`v4vFGODS03c+~Yh{(@ce!Qn0RjWEuNo zLg7?&?~Wv2Yk6ewB3=`cdU5HQy|p$+pqRoK$wr%SqshTV2T*ltA$4a8JfS!s^}Nk! z%?_QGM~nXe8Q_Jw=bNv5v|~?A7Qq(5>f9|?r{mK%CVDwt@cCFz4)bZv?Q%gjI{F-0 zL#L4%W)rbNbT`#09-T0@oQfI(tjl46BmmfVTAg0f$E5JyNo2Nt)<LEq3h#!j zIz7%&RE_753F7|%wrhVw{W@(Vh_UZYt^HgN(+&NP@Cm04sG~u)nrq;kEbXaq!y3S? z5d^U3aBe^DYjK}Kghvzp%d=uWCuLfA$6&2qk9YmxsG&Ye$S5uG^MI@02TO9B*lOeZmqtt1p3*xg? zc|i91et9HMEwQMHP&qv-@xt;lT0~Ipk!DxfV6Pnr$vgIR-1oVftxn(t{{Sm9$*wVM zaczfsT9pQm z_3xCO>sOaq5^5u6la?w7AW^Hw)(_G=nrOT=B-pFT7pIK)%*IDhoY>1ul!@J?lF2*^ z{@Iv$PoymD%Iu*+j)$fe_GcZP0M5?#O*K~>k&d&NVmm7siL=lWI8lX~XDn*PLIcS? zJMwdEyun70%&reh{{Uak*(6hmmOmj^a%k@8J7rcJH3UG48^sAqKs`M_VU)vm1kbdc z#98Noc>e&4ucD0?*2z6{GdE4#!u61(gpkd+C;^n$H^rK)5bvDM0gKBJkSx;4+HYJtagUJ{q^M2l$zZpk6yEtZ1 zx9QU|igyx79=yB{#<5s>N~ma#2kDS#gS@MSP$(^JyY4UZ%EPFHN(6$*+SO;jIDcB- zi*zfel^Qn(dFW3yn%!pss$Cp9R*(iV1GE#B3`J?CUl5=pb*^NuhhFiu_&^K!N#t?w znhrbfQW^fIz6qBqFnKI(iH{UI<}B9u^25?ES{6Mo6@Ox%NF`L;K@=V;xx&q-jmYdU zsU|szAag|HI$XP^LmIq|8Qr($-?xv?@W@F#3+fVQP^3Ic3V=DIm&`fz<#k;IiD0q< zc<0yoSz@)D3GuwHR)_}6Rc5xcVxtt0AT23m=)-qRKO;E0Cfh7PZYdZXkALhj)rIP% zX&GM41|*x{{uoc{v-FtDC8+_3Cb4Bg7iFS&ANt=pVbKj4kQOIsQCI3PogLWE2Hc2% z+MHKx&YY*|H0X5{!TjRuwreJ{s;1GZdDNReql|D6l9VPFVZ3!0d|;ON@ktklTTc`~ z#1k_%;^4^x=sF1m5E7b81Hs`fS# zOOOFMpScX*$7l|oNAoi=DmW)KoiX_&k`fUkeWZ><0Y@zTi_7$pnkh8`DhbHlAznv6 zrd3GO)kFw|<1|ByV0u@m${Me5kqIP|)|4JId)pFqs$|oF5Oj0~L1ZcS%7keQT7$7= zG3`=GVSJ9m`P(Q_nOHa_Y>OawAbRC$i_xZ%A}A^=S)=Lu{V>+Q7bo!~jpL2grQ(!| zzB?SRa89nJ_>i1cB+; zs*Z2D%G40$mG+As=bVy_-F3h7FvYPR+XZ{}Bz}11AC!10S4mbye$BIkUrcQ2nR^`btn8`b1vSpzjqWn_ zBkhax70iy=(!)`nf z1@`yNGT;JA2j;%qV5DpOJ{>d=%QW^R>?_ynWAw@!F*CCw10pbutOHyd@0KP!nnHX@ zp#*L;P4&Y&JJM&=eV=0z%BZ^W1-YK^oQZ8^qwU_X4s-!7EPw z6&>Tv*1sGKhlr+Ot|6eBg;>7u6dl73*=oXLkWL*GC_=%v6VKBr`#bRTjFsB$M4JE(zs{Jh zl$hdp4(0ILFgF9-{{XzAL^SOj>nhN5@{Yps@H>74rAY{Hn-&M-h8<_iJ4oafA;{p7 z$LK#ykt}Vkil`tJ1M?)Dv1*kkkctbMzVTZvx0cv(C zR@HJj>v;GSM>~>?$OZoZO8nVbDwT3-*-$FP6-NLq9y2)(@<%SA#F0fPEgIP5+1>B- z%=*@1s3xfV-nD<<7{$b_jMT*5<7d|t>c-=C-#2c#VpkT6P(p@QHn+F|)3#_j>oVzN zb?7)YFs63mYNLOK80w`xz!^^w-wf3c31E?em2kkfek=Lwf`;pUAqdr6YrRT^Bz8Gf zD=JjqE3(I6ur@dge!q?>!KIK>bz*o5dB+x;2`cDh0M%JGf3{Fny1C#grB35sxKzrM zQ%pbvD-KQG1)1WcdV&VzHOU^h9>ltNB%OnW=cAubOmS)O!?Iw7cPbsde^Hk&7avx+ zn2^xMPVhib1p%1eo6gh5<`wW+PtDDY)V*rFa^t0xoy#+LfY#6r{yBUZ+RZaNpjJ{E zsfiSL`sE_F8mSA*y?nCr8qdwoKG~}nl@_^M#%-!w&1S}0f5iH-yN`wxCt$pPZa$es zON&kS20~9gjykc)Wg8Symf9l#R5Y1HT)Tk*6?vWf(XZmStIhl zza4W@WEPmQM>t}j*f(8#pk>(TMmU6MLN?+50KXJ*&)U$%8Z2d9M~EAP>CRTE8ZmEp zNZ-LeVOx6M1&Jiaz&Zy+0hSGHR`SF-Z{8>0=Dv zF(}qHc$gVlS<8$HKG}D(> z068{EzOs4?1o?) zbM8O>vGUbnbj&7Atv1(H#cNg|o0oF*^cHad)W+^pVs277^42J= zI(Y$5ShHHC@iq>S(2dSH>l%$_0ys9&d-zZsp*+mh#QY1&C6Fo?uO82rQn!?CZX zYF+eRj+C7;#!xEIBZ?$?=CP45mQbtr+e*@?Jc15ZLoF^KrC9H|K_iYjd**&0YtT)o z2wjO6!9L$g>5oIT16wHRXV!*ER4~V@(;^9iuX}!5%UcGn{j$`4o^up(M9z5rk;pkE`Z>(gJ1Ge%7D&H1`hPp*j+4hy zsZtdt{NC9m4C$vNEQkYhB8KAd)0tTF%lGdjVI$i_fz;uv3?CLL9U}P&9wRpZ{{Sl) zlA<*_G