From 78af24a4ed680fb35ba8861366e8462cfe036e47 Mon Sep 17 00:00:00 2001 From: jshipsey Date: Wed, 1 Sep 2021 03:58:19 -0400 Subject: [PATCH 1/2] more spots --- assets/common/entity/spot/gnome/spear.ron | 13 ++ assets/common/entity/spot/myrmidon/spear.ron | 2 +- assets/common/entity/spot/pirate.ron | 24 ++++ assets/common/items/armor/pirate/belt.ron | 19 +++ assets/common/items/armor/pirate/chest.ron | 19 +++ assets/common/items/armor/pirate/foot.ron | 19 +++ assets/common/items/armor/pirate/hand.ron | 19 +++ assets/common/items/armor/pirate/hat.ron | 19 +++ assets/common/items/armor/pirate/pants.ron | 19 +++ assets/common/items/armor/pirate/shoulder.ron | 19 +++ assets/common/items/armor/witch/back.ron | 2 +- assets/common/items/armor/witch/belt.ron | 2 +- assets/common/items/armor/witch/chest.ron | 2 +- assets/common/items/armor/witch/foot.ron | 2 +- assets/common/items/armor/witch/hand.ron | 2 +- assets/common/items/armor/witch/hat.ron | 2 +- assets/common/items/armor/witch/pants.ron | 2 +- assets/common/items/armor/witch/shoulder.ron | 2 +- .../biped_small/gnome/chest/gnome.ron | 17 +++ .../biped_small/gnome/foot/gnome.ron | 17 +++ .../biped_small/gnome/hand/gnome.ron | 17 +++ .../biped_small/gnome/head/gnome.ron | 17 +++ .../biped_small/gnome/pants/gnome.ron | 17 +++ .../biped_small/gnome/tail/gnarling.ron | 17 +++ assets/common/loadout/spots/gnome.ron | 7 ++ assets/common/loadout/spots/pirate.ron | 10 ++ assets/voxygen/voxel/armor/pirate/belt.vox | Bin 0 -> 1496 bytes assets/voxygen/voxel/armor/pirate/chest.vox | Bin 0 -> 2684 bytes assets/voxygen/voxel/armor/pirate/foot.vox | Bin 0 -> 1608 bytes assets/voxygen/voxel/armor/pirate/hand.vox | Bin 0 -> 1440 bytes assets/voxygen/voxel/armor/pirate/hat.vox | Bin 0 -> 4048 bytes assets/voxygen/voxel/armor/pirate/pants.vox | Bin 0 -> 2256 bytes .../voxygen/voxel/armor/pirate/shoulder.vox | Bin 0 -> 1436 bytes .../voxel/humanoid_armor_belt_manifest.ron | 12 +- .../voxel/humanoid_armor_chest_manifest.ron | 12 +- .../voxel/humanoid_armor_foot_manifest.ron | 12 +- .../voxel/humanoid_armor_hand_manifest.ron | 30 +++-- .../voxel/humanoid_armor_head_manifest.ron | 4 + .../voxel/humanoid_armor_pants_manifest.ron | 12 +- .../humanoid_armor_shoulder_manifest.ron | 30 +++-- .../npc/gnome/male/{shorts.vox => pants.vox} | Bin assets/world/manifests/spots/arch.ron | 12 ++ assets/world/manifests/spots/big-mushroom.ron | 8 ++ .../{trees/quirky_dry.ron => spots/bones.ron} | 0 .../world/manifests/spots/water/shipwreck.ron | 2 +- .../world/manifests/spots_general/igloo.ron | 8 ++ .../spots_general/pirate_hideout.ron | 16 +++ .../manifests/spots_savannah/wolf_burrow.ron | 8 ++ assets/world/structure/natural/arch-1.vox | Bin 0 -> 11464 bytes assets/world/structure/natural/arch.vox | Bin 0 -> 43428 bytes .../world/structure/natural/big_mushroom.vox | Bin 0 -> 16480 bytes assets/world/structure/natural/dock.vox | Bin 0 -> 2616 bytes assets/world/structure/natural/igloo.vox | Bin 0 -> 13416 bytes .../structure/natural/pirate_hideout.vox | Bin 0 -> 47976 bytes .../world/structure/natural/wolf_burrow.vox | Bin 0 -> 13088 bytes .../wildlife/spawn/jungle/rainforest.ron | 1 + frame-trace_1630269013224.json | 29 +++++ frame-trace_1630269023610.json | 29 +++++ frame-trace_1630269361840.json | 29 +++++ voxygen/anim/src/biped_small/beam.rs | 116 ++++++++++++++++++ voxygen/anim/src/biped_small/mod.rs | 5 +- voxygen/anim/src/character/roll.rs | 7 +- voxygen/src/scene/figure/mod.rs | 61 +++++++++ world/src/layer/spot.rs | 110 ++++++++++++++++- 64 files changed, 808 insertions(+), 52 deletions(-) create mode 100644 assets/common/entity/spot/gnome/spear.ron create mode 100644 assets/common/entity/spot/pirate.ron create mode 100644 assets/common/items/armor/pirate/belt.ron create mode 100644 assets/common/items/armor/pirate/chest.ron create mode 100644 assets/common/items/armor/pirate/foot.ron create mode 100644 assets/common/items/armor/pirate/hand.ron create mode 100644 assets/common/items/armor/pirate/hat.ron create mode 100644 assets/common/items/armor/pirate/pants.ron create mode 100644 assets/common/items/armor/pirate/shoulder.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/foot/gnome.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/hand/gnome.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/head/gnome.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/pants/gnome.ron create mode 100644 assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron create mode 100644 assets/common/loadout/spots/gnome.ron create mode 100644 assets/common/loadout/spots/pirate.ron create mode 100644 assets/voxygen/voxel/armor/pirate/belt.vox create mode 100644 assets/voxygen/voxel/armor/pirate/chest.vox create mode 100644 assets/voxygen/voxel/armor/pirate/foot.vox create mode 100644 assets/voxygen/voxel/armor/pirate/hand.vox create mode 100644 assets/voxygen/voxel/armor/pirate/hat.vox create mode 100644 assets/voxygen/voxel/armor/pirate/pants.vox create mode 100644 assets/voxygen/voxel/armor/pirate/shoulder.vox rename assets/voxygen/voxel/npc/gnome/male/{shorts.vox => pants.vox} (100%) create mode 100644 assets/world/manifests/spots/arch.ron create mode 100644 assets/world/manifests/spots/big-mushroom.ron rename assets/world/manifests/{trees/quirky_dry.ron => spots/bones.ron} (100%) create mode 100644 assets/world/manifests/spots_general/igloo.ron create mode 100644 assets/world/manifests/spots_general/pirate_hideout.ron create mode 100644 assets/world/manifests/spots_savannah/wolf_burrow.ron create mode 100644 assets/world/structure/natural/arch-1.vox create mode 100644 assets/world/structure/natural/arch.vox create mode 100644 assets/world/structure/natural/big_mushroom.vox create mode 100644 assets/world/structure/natural/dock.vox create mode 100644 assets/world/structure/natural/igloo.vox create mode 100644 assets/world/structure/natural/pirate_hideout.vox create mode 100644 assets/world/structure/natural/wolf_burrow.vox create mode 100644 frame-trace_1630269013224.json create mode 100644 frame-trace_1630269023610.json create mode 100644 frame-trace_1630269361840.json create mode 100644 voxygen/anim/src/biped_small/beam.rs diff --git a/assets/common/entity/spot/gnome/spear.ron b/assets/common/entity/spot/gnome/spear.ron new file mode 100644 index 0000000000..ea08b14ffb --- /dev/null +++ b/assets/common/entity/spot/gnome/spear.ron @@ -0,0 +1,13 @@ +EntityConfig ( + name: Name("Gnome"), + body: RandomWith("gnome"), + alignment: Alignment(Wild), + + loot: LootTable("common.loot_tables.dungeon.tier-4.enemy"), + + hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")), + + meta: [ + LoadoutAsset("common.loadout.spots.gnome"), + ], +) diff --git a/assets/common/entity/spot/myrmidon/spear.ron b/assets/common/entity/spot/myrmidon/spear.ron index 579f971a70..32053d78e7 100644 --- a/assets/common/entity/spot/myrmidon/spear.ron +++ b/assets/common/entity/spot/myrmidon/spear.ron @@ -8,6 +8,6 @@ EntityConfig ( hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")), meta: [ - LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"), + LoadoutAsset("common.loadout.spot.gnome"), ], ) diff --git a/assets/common/entity/spot/pirate.ron b/assets/common/entity/spot/pirate.ron new file mode 100644 index 0000000000..ed354ab485 --- /dev/null +++ b/assets/common/entity/spot/pirate.ron @@ -0,0 +1,24 @@ +EntityConfig ( + name: Name("Pirate"), + body: Exact(Humanoid(Body( + species: Human, + body_type: Female, + hair_style: 2, + beard: 0, + eyes: 0, + accessory: 0, + hair_color: 0, + skin: 0, + eye_color: 0, + ))), + alignment: Alignment(Enemy), + + loot: LootTable("common.loot_tables.creature.biped_large.saurok"), + + hands: Paired(Item("common.items.weapons.sword_1h.iron-2")), + + meta: [ + SkillSetAsset("common.skillset.dungeon.tier-5.sword"), + LoadoutAsset("common.loadout.spots.pirate"), + ], +) diff --git a/assets/common/items/armor/pirate/belt.ron b/assets/common/items/armor/pirate/belt.ron new file mode 100644 index 0000000000..0357a62dfa --- /dev/null +++ b/assets/common/items/armor/pirate/belt.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Belt", + description: "", + kind: Armor(( + kind: Belt("Pirate"), + stats: ( + protection: Normal(8.0), + poise_resilience: Normal(1.0), + energy_max: 20, + energy_reward: 0.025, + crit_power: 0.02, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/chest.ron b/assets/common/items/armor/pirate/chest.ron new file mode 100644 index 0000000000..ef04ede29a --- /dev/null +++ b/assets/common/items/armor/pirate/chest.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Jacket", + description: "", + kind: Armor(( + kind: Chest("Pirate"), + stats: ( + protection: Normal(48.0), + poise_resilience: Normal(6.0), + energy_max: 135, + energy_reward: 0.135, + crit_power: 0.125, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/foot.ron b/assets/common/items/armor/pirate/foot.ron new file mode 100644 index 0000000000..0a4cb0d41b --- /dev/null +++ b/assets/common/items/armor/pirate/foot.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Boots", + description: "", + kind: Armor(( + kind: Foot("Pirate"), + stats: ( + protection: Normal(16.0), + poise_resilience: Normal(2.0), + energy_max: 45, + energy_reward: 0.045, + crit_power: 0.04, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/hand.ron b/assets/common/items/armor/pirate/hand.ron new file mode 100644 index 0000000000..f79a1ede29 --- /dev/null +++ b/assets/common/items/armor/pirate/hand.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Gloves", + description: "", + kind: Armor(( + kind: Hand("Pirate"), + stats: ( + protection: Normal(16.0), + poise_resilience: Normal(2.0), + energy_max: 45, + energy_reward: 0.045, + crit_power: 0.04, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/hat.ron b/assets/common/items/armor/pirate/hat.ron new file mode 100644 index 0000000000..531f6d437f --- /dev/null +++ b/assets/common/items/armor/pirate/hat.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Hat", + description: "", + kind: Armor(( + kind: Head("Pirate"), + stats: ( + protection: Normal(32.0), + poise_resilience: Normal(5.0), + energy_max: 90, + energy_reward: 0.1, + crit_power: 0.08, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/pants.ron b/assets/common/items/armor/pirate/pants.ron new file mode 100644 index 0000000000..06647a6cce --- /dev/null +++ b/assets/common/items/armor/pirate/pants.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Pants", + description: "", + kind: Armor(( + kind: Pants("Pirate"), + stats: ( + protection: Normal(32.0), + poise_resilience: Normal(4.0), + energy_max: 90, + energy_reward: 0.1, + crit_power: 0.08, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/pirate/shoulder.ron b/assets/common/items/armor/pirate/shoulder.ron new file mode 100644 index 0000000000..81d40d728d --- /dev/null +++ b/assets/common/items/armor/pirate/shoulder.ron @@ -0,0 +1,19 @@ +ItemDef( + name: "Pirate Mantle", + description: "", + kind: Armor(( + kind: Shoulder("Pirate"), + stats: ( + protection: Normal(32.0), + poise_resilience: Normal(5.0), + energy_max: 90, + energy_reward: 0.1, + crit_power: 0.08, + stealth: 0.0, + ), + )), + quality: Epic, + tags: [ + + ], +) diff --git a/assets/common/items/armor/witch/back.ron b/assets/common/items/armor/witch/back.ron index f8eb96d292..18cd167dbe 100644 --- a/assets/common/items/armor/witch/back.ron +++ b/assets/common/items/armor/witch/back.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/belt.ron b/assets/common/items/armor/witch/belt.ron index ac07cf922c..0f371fc99c 100644 --- a/assets/common/items/armor/witch/belt.ron +++ b/assets/common/items/armor/witch/belt.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/chest.ron b/assets/common/items/armor/witch/chest.ron index 1133e87625..801df9f900 100644 --- a/assets/common/items/armor/witch/chest.ron +++ b/assets/common/items/armor/witch/chest.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/foot.ron b/assets/common/items/armor/witch/foot.ron index f55cd63bba..4459722774 100644 --- a/assets/common/items/armor/witch/foot.ron +++ b/assets/common/items/armor/witch/foot.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/hand.ron b/assets/common/items/armor/witch/hand.ron index e777dfa770..7f17d65f3a 100644 --- a/assets/common/items/armor/witch/hand.ron +++ b/assets/common/items/armor/witch/hand.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/hat.ron b/assets/common/items/armor/witch/hat.ron index 567a2dc7ce..1a679bcfe4 100644 --- a/assets/common/items/armor/witch/hat.ron +++ b/assets/common/items/armor/witch/hat.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/pants.ron b/assets/common/items/armor/witch/pants.ron index 87df58804a..1b19308180 100644 --- a/assets/common/items/armor/witch/pants.ron +++ b/assets/common/items/armor/witch/pants.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/armor/witch/shoulder.ron b/assets/common/items/armor/witch/shoulder.ron index 6c2f6b4528..59121af896 100644 --- a/assets/common/items/armor/witch/shoulder.ron +++ b/assets/common/items/armor/witch/shoulder.ron @@ -14,6 +14,6 @@ ItemDef( )), quality: Epic, tags: [ - Cultist, + ], ) diff --git a/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron new file mode 100644 index 0000000000..81e9380df5 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Chest("Gnome"), + stats: ( + protection: Normal(2.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnome/foot/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/foot/gnome.ron new file mode 100644 index 0000000000..3fa455a654 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/foot/gnome.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnome", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Foot("Gnome"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnome/hand/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/hand/gnome.ron new file mode 100644 index 0000000000..830423314f --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/hand/gnome.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnome", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Hand("Gnome"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnome/head/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/head/gnome.ron new file mode 100644 index 0000000000..7862d261fd --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/head/gnome.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnome", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Head("Gnome"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnome/pants/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/pants/gnome.ron new file mode 100644 index 0000000000..758d9466e2 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/pants/gnome.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnome", + description: "Ceremonial attire used by members..", + kind: Armor(( + kind: Pants("Gnome"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron new file mode 100644 index 0000000000..e80c2c6fd8 --- /dev/null +++ b/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron @@ -0,0 +1,17 @@ +ItemDef( + name: "Gnarling", + description: "Ceremonial attire used by members.", + kind: Armor(( + kind: Belt("Gnarling"), + stats: ( + protection: Normal(1.0), + poise_resilience: Normal(1.0), + energy_max: 0, + energy_reward: 0.0, + crit_power: 0.0, + stealth: 0.0, + ), + )), + quality: Low, + tags: [], +) \ No newline at end of file diff --git a/assets/common/loadout/spots/gnome.ron b/assets/common/loadout/spots/gnome.ron new file mode 100644 index 0000000000..45b35a1896 --- /dev/null +++ b/assets/common/loadout/spots/gnome.ron @@ -0,0 +1,7 @@ +({ + Armor(Head): Item("common.items.npc_armor.biped_small.gnome.head.gnome"), + Armor(Feet): Item("common.items.npc_armor.biped_small.gnome.foot.gnome"), + Armor(Hands): Item("common.items.npc_armor.biped_small.gnome.hand.gnome"), + Armor(Chest): Item("common.items.npc_armor.biped_small.gnome.chest.gnome"), + Armor(Legs): Item("common.items.npc_armor.biped_small.gnome.pants.gnome"), +}) diff --git a/assets/common/loadout/spots/pirate.ron b/assets/common/loadout/spots/pirate.ron new file mode 100644 index 0000000000..edebca72c4 --- /dev/null +++ b/assets/common/loadout/spots/pirate.ron @@ -0,0 +1,10 @@ +({ + Armor(Head): Item("common.items.armor.pirate.hat"), + Armor(Chest): Item("common.items.armor.pirate.chest"), + Armor(Shoulders): Item("common.items.armor.pirate.shoulder"), + Armor(Belt): Item("common.items.armor.pirate.belt"), + Armor(Hands): Item("common.items.armor.pirate.hand"), + Armor(Legs): Item("common.items.armor.pirate.pants"), + Armor(Feet): Item("common.items.armor.pirate.foot"), + Lantern: Item("common.items.lantern.black_0"), +}) diff --git a/assets/voxygen/voxel/armor/pirate/belt.vox b/assets/voxygen/voxel/armor/pirate/belt.vox new file mode 100644 index 0000000000000000000000000000000000000000..cce88561da088c376c79bcd51444d9cdbe2addbe GIT binary patch literal 1496 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 KT^DY)hx`lBd-|>b literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/pirate/foot.vox b/assets/voxygen/voxel/armor/pirate/foot.vox new file mode 100644 index 0000000000000000000000000000000000000000..54c2fe689ce3fedc80bda40e30fe412fbe647f16 GIT binary patch literal 1608 zcmajeZA_JA7zgm{emTUVn#St^0wN3#I(Zc$kPga8!H9T~$pL9|0y17A=9mIS!qQR0 zgc#ITozR^jStN{D&MjiDsEwK<);H#=^`+0P4}JOff6%ous%QJ{dhYAKulwzsr?%o~ z(u9bV7neTEAUPo-)un#l15SgFi|)G{kJkB1t#+~^uaGg)Y)P~ng6xHC?({lObg_*U(%;b8fzqA*K0F#u36=QX!l#M4EI6_seK4&q10L30W6&q)8Dk zkmu)Iq#UCAG#OH2I*qd2m+7?1GUqUzT5OjR%Ra-sn@(Y!a39vOIgjDKSjT?NdPSma zm({k*Xx3=Mw&8DLcqWc+O^hVRyJZcU8VSiajXVN}lCqzoe&Qr5DL^IO|z zjqVepo2w4)FXovyAFNK{uYO#(fL|jbu)JIj=lQ7glmE2M8-;>~z3{ac!4t@b_*{^- z`yo>gL%xW@wsJvqhhUd46}ztqLfZrn4hh093ZkwGa>~O{*0Bx#v*CDc@e!2t3o6G2 z$7cm+Zn3s9774A%Na;^Q?t&L_-4RG0iA7p45t%Egh;9(1oE7Yz5EL#6q=xJFhC;?4 zg3L!?ICVRwGa|9RFAgYs6a^wErSIuy8b2+VeN(VJE%#oP5P?(j7 z!%yu*Q*9pF$^=8l1c6h6r8fk*39%?mOF={K9(0%FBR)PJ(b3TuIk*E0jp^`bWZ;y~ zhmnC6T$${{U{?(i5)$ysdT?`GSXdZh!nY$SDG8aLWaRF798YF>;492T#nbuN=sbik zk9*;EyD`vEiFdf>LQt@JL-5mgf~z0SwCAOa$g`xv_ynjNV+t z%O3>LK6W1d-WUIN{$NAsy=)<}C z7Ic)=peDZzDcXDKb literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/pirate/hand.vox b/assets/voxygen/voxel/armor/pirate/hand.vox new file mode 100644 index 0000000000000000000000000000000000000000..58d44798d5d0e9ba8606380749cab8e86845ca3a GIT binary patch literal 1440 zcmaiz?N3})5XR@6bGHSl2IPIQKzR|^z98=+E$+5#+6A_D3ngWtXqqA=6s^Qyi=<7v zDGgRCAffIiy3&SVtzwrT(f9#Lqi9l%lE!bOsfquA@q=F;pQXlBOXIouWoFKtnKLu@ z-j){*XHSZV*X7wyA#dA6nmm5@rl`SX5pKx_a=6v+X;)OZT8LH>(OQDaNKg}{R7ex0 zDTx>rQAW|HB0L>bqC=Wel#VDKiav(AX!;nSiJ>lrenXoWqeEipkg{}8Q;L|75);ux zlwlrbAbdii>C0Ou5pOMQM%|#mHz7DW zD>(fVV|{jHcIO~((1FT%Co=kykTYV3V>$~Z%LPbn7v!B2Y?~D9Togz%?;nVPOgsUZ zOTutL0%o2`#+_XmK>Zffuw@VVh5SY)P6=k;6)epNzK_s$3Z~qGFAfS;y99pPr&s>0;)Js9tFt<807ZVGmmW})Hv zLUguNp{HIDI3ftYE?9g=P?>3m$B~Ej${pydt450>1>NNt7}=YT`Ho`v54h0t(tZq{ zY{R89T^M-PkI@S~n4cNKy`MiqTwEN|5)+V}osE*B98~Uj8qbv$!Jd$V*bSSo`pQ0h zd(??HyiS~L_hHK}fulj-;{DqX2yT2bhpX4FBR_pR9QF#F?LLB$>q&^d+f`&??A8L# zd>qD!@r&>ey!NmD-{V~V>yP%2g#hqf82I5j3JVL@YKzvhIk8}^rpA(&|LOn3-ZwGS z)`i~sW;9p39_qiWtPEpSVHB54p=S6z(gW#OzACuWCcyMGa&vRh-`|hMeRGh&0FwKX zv2f-7JIvp>5t*5p7`rfm+M013yEKHfj#T{kSw0s0=_rnkeQ5qZ?;=_ct)R8(Hu{bO zr?1Q)aBUu!=WZeR^$IFZ4x{#b7!4mRqUq)eoK7e1u@s3R_ycA|aQDmm_1)$7^?&~8 iFBo0x%CDv$?fW}s-M9zxJ+-?RY1J)h9u`}%&} zo4#=8y!}e4^{dz3LZE)#Rchnfi8ZDD!|%Kg1j0M-nppd-+&)$6y;`Z-R72Ccy z`$I6p+^9i9M1Y5D|0g?$t}WvRxowlu!zSr|>{Y{nnzoms1{nzv0Uiz(hCG3HTl(Lv z)v&5*doX=#^)T}O%2fT5sRIcS0Uiz(nZ8w&RrI|_eHFUYW9f@?W;jAxlhmLfBOxNd z!@jANy1>Z6XT8fH}wJ^f3JR}-lR83_>q9u5`;743JP@ncLz4CRZSO4L)+ zu1-*c1_c=j5dj_!76uxTIjE>3P+vC8yVk=L?V#hS2L%}k5dj_!76uxbGKTp{jH{zx zHRJ4!9(Ek{pdce5BEZAJ!ayTXrbj;lW80&jU8@EiG$_bOhzRg-urSc5k(r;KVO<-_ zqd`GNLPUUvgN1=cjjAoHDT@XL83_>q9u5`;8Z|mKWl)fj5E-8UPu#)6K%=S1i;U@&(BBOxNd!@$2p=wM+GIR_IO=Cl)OHwrQmVx$~AaR&wLk#4HC+=Y3+k2;NGv{+a@w^iW z5dj_!7Lhy&nfstP@**K3z{A0|A$cNaU1CpU&iaIi01wy3+wVB?gfI||O)$qaAoWP*3?y-B*|4n_9lLFPjJQ1AQeYzpZ51+}W~r z(M7U(+2ykR`W3Qi(M;KLuTBhrCVh8BX`Slk3T58zB(ZJRn*iYu;=mzE!p#Y+y#%4eUF(LJMb`c)-w->pOr9g?xJ zG1<9ur`&wwF;RPV$&BqY`+j-jwhC=8RnR$g{HQsRMG;_fN{k zH_piT__(}FQ&fQbL-ZLX@BH%p_PxXU`hV%{!gKrVBg0=E`uH?b+A<$m?t`?p@F%X_ RCg-pCqRd%*^rP~se*sU<4qyNP literal 0 HcmV?d00001 diff --git a/assets/voxygen/voxel/armor/pirate/pants.vox b/assets/voxygen/voxel/armor/pirate/pants.vox new file mode 100644 index 0000000000000000000000000000000000000000..45fa5c5f74fd9318965bbcbbb3c14895cd21d178 GIT binary patch literal 2256 zcmah|>uZ-~7`~t5`~IB8%(>~zIhV_A9+v0KLz_BubMNoxJfZVYh^H}Ew#CvViVhVs zO>Jl+YE6-~EK^ydC@_(-z@moqO~j!8Ao|dktLvE&kxDOIy!Ufo_j8}0HJP=AXGA2a ztWNVMU&SITtLv+Vh6BGLL_|1Z?YjEvH!THzMT&Z>I%A_cy{L4gC~L}I^+t{|xs*{! zN=YUnA1lgQWg@Sx#7@1N(vqaC%2+Y!RN$OSJnyBPWQ4Nv^cnooZ^}p_v~i*`Mw!ki z#H4@WedkoO($bQ$k~X3fEjq14XEb$@HHlHWQxi(*#2eFTg00aRqp2qpk+M2bN?Np` zy`i2^M9S%m)4XG;BNXAit~EjDs3Q~+Gglk(a;8&z#`ijj7}I;hnl*bs|EyVgNo%i? z*h|JSPe&WezwtT~)5b9uOPynEOWB2ZLC3Rmy2bKroo^Q>lhMpg32iiO=%0hn7$Ys-vNrw| zVd&E`R!lo%r6qQTGt-={A*9zZmawOW_f3eyvo(tOa4#I~Lx0#O&ssHYEMpnwplKU( zb`g8xIZMktBiak+6|>I~;Rhkj!oJ4rM-+NQ7~1KO3;Pifin0ndhq$5s&b%#3qJ(Y;6)5aSh@7QgL(UPJoF|lHUgT|vMc#$@P=P-+?CY_^u7%`BrqWqt5fJCDan$Fm;sU!5R#An{O(-Prf1N zcn&gkF6jA=Z16+Q2i}`2)|+1Eb+7gI%8DfmD>;Y354XDUZ~WSK0>9_v;QI9h;rpce zvqz%#h##y)C%jBl!Lb&lQ61D#7O~1b4Oz>UrM1MsRWq^{s+!<>hFaJ{|4z=i|?t@1br+ zJ{qcu&{kK1Gh3%&@9Nn&vttoXZ>=2c>%^yWF>l&fEPK8LTi47+V~wDFqoC_m!L_#p zvkLN2T{a#YW=%o!;yGATmWzfNqj7vmG5R)@qkefM8edFf@2>SYwr@MyUarTX#ps=tIQ%j35Ys%AjZdxhwhZP~^hvLplOY!aI3cQw7VE=|XjGHeg zTPCPv{K?A&7eBs=bLV?eJZdt^@@Hay!$utM%|V#$9gM}P8~xb#Q5SZeK7#tTSFos5 zu<2Pr>tew>?8|@oP(S+Hf$zG2A9^t&I}e3piU#u;Gkn5ePPJ3F{Zs!3O|Rqd`t4|{ zS%p<|Dj%qSI(vO;b{ER0c4O|*gBaC53OCOQZm$>M!UdF;mZG(_6}3yRLfYFfqIm@R z&)%P5aTKATpa7>1bzs5V)7WzCFh*|5!;ha9qrZL>%2TNa`d^n^!@AW2Shw;Pns)$u z&i0`Fd>>9+y@AfJ2QYKjQ7kyvg=Ozw!^+D8sHmvGJ*FZtfj?jd1b4rC}(>3VIKK0I3P7AAw$YoBPFKO zqZm01h#^>~BRWQAkuhSmUJ!FdZLSq_y<^U{{)5(w-hBHW?1d$+d;9G9ey{tvuj{_9 z=bWaOnlmRvq|WW#&xgEYiPU@jo=suHWg`*9B+V^;Z?i$c)krAMDPkBBP(&NlikfIe zt*MFDa?T`%Nl&y%ZBY|#QQMe@Fk{dV<3llwfMFOPD1%y2D{7*ZF=;B}s%XYEW7@c) ziK&fAi-^g%$vDv_-!=KJ#hAsI#auS#w}tbopkXNHR=ls8Qc5u=wN_UY(VE^S0Wldf zxo^^2JY(?;@62HYgnbG7ch=!rhGq@T8hXl5Iw+c6)0^}ry+v=) zi<&Y-1;xgvO$86`-R)iG>mF1FngM0N|F3<%;z1c^5VC3VrL?umi_OdQ@_ z+>ELLfp1)JcusKgXP)(?Aic|h?16lgF1V1|8xO~D3i4+%P`Hwdq&7kJ8Ns#*!OkUt zG_ZbuBxL+4$b3A8a$_<3TmtUyN(HL7pn@%X$*<&hGJZlZ_r73xR`BB&^e(})NAT4_ z!CI%lPk*9GFmiz?+|qw$knBttv-Tej>U`QZc+Y2Mg^5 z@E>ra`<49|INpkjr#jL9x*sFwyRk4ki2J{MjOgfSB*(=fGcyx~P6tZ2KZ6&FoJfgv zAj-B0Yp?CY_lI40tImbfZ9Z(-CCIN4xLN<%1A?2M&g0tk8%Rq_ThDR2>kx)-#3TG| z*N}nH+lx5$NeIWrF2LXa#=rWXJ45_%J`c=^FM%!!CVxc=z*aa2}};mE~7B)2Ewr_Xb+=(nRFD(aE>`|6g^ z(zuG2`a9@73Y@$=i@@~-T$;a)sc%=YcIrll``meSJ7LxfsO zQz^9;N}*sW1x17gL@wO+XEAL2)O3)*Is<@ z_fp~Spj<49YJV(h(Cm-0IT&-wJkl*?3r(59m(*pHp-slN4jCXj__1s^$Zp0qgYM}w zw{6C3u2a%ykV45m@_^oqqfAv|Qlo5GCj3bK(^~KGn=tjhdY}kDrKD1pBQ!2X=v;Bm@i<=)SnzPkZS6* zrIDxiDEF9OY@@W$hO$R40)A>}bI8(`nG>U+J=G`RpMcMJ_9Q%HX5MOS(}S@CJdTUalCfXEZjW%@Fp4O z6zf8bqF$RcVcZT`bW;v#zg;o*#JD4R2XqML>*uy8m(pL*Cs9>?yz|&fYNk;O<^xoE zO#htzlKz>>Xv^%xH)Nk^AL#Gt@8)rrtc~xir?KUmWRwPdd3mIY^mw;IhoFCI#<438 zww*XY&&1xveP&(g6!hugYhYr#97e^fDGqk2?Pzc5vtX|}Y$M^jltF4B=-(5FCFAxmFqg%573Q=ECBa?XBP;mgWXs;UlDiCqrZw8wTU{9B11DbmwB zm7daSg$}<#5K`h zphvKN!8iilf;|%KSB8A1Sr-uOshI64+EfR65N$|P(uN%g>_tGQ*o=s_tNA`NusMw_ zX}yuytHhoqb}rE;u}!HXdO%<5DfM)&V|zND5$sY&ee}Wh6}B$n$(d#>bO`KTpj*&S zAS-A~J-R%)JhnUoeLnKhMVVnoBF+_C64I(#K(EamKo z8TdbVBF0Bzry%Bvxexse{p~*d4S51AG~C4f2nsI@)^tR2_4h>S)(ihugZ2=cZb(IMWm7r>>8- zlGr_RW(LlTN6$)T<`m>G0(}SiPV~*m zg;vDYJU;{nDsRZq$d@K$a&n*?J+cKIdqq8im&N=k=5mDPoO~!}4LR#6=v%-qXfM!F zAY06Bl(gsMbVZbBPYd=YXMc-X2m0BIoNtg9M=FnX)|sF0X4wOPIH)DeDC;9pMf>gp8!Q7D}d+ku@+@{GAo zE$Y>%AEYS zkOzEw@}#6$8#dVjM;_&qcD*7u@>#WZGoSvH1wPn{a_#d%<=9Ol)}!NN4zzj792?B@ zBl2!?HuA|ju3cbHvrM~L`lYfMK|@^X3uN)zJ?rgQTV|yyvQy-Fr_?G-)mW6OMSp{i z8XX1Sca>#8DruLLIVhB-e^37o*%sN7{uOg8)dBN6N#7IXLi^-IYW(L`Qltw@M4}8>8LyAi?JU2$8u!M1J-`X+2wm?>cNS zd19-w<6W5@Z!1tI``aqn?3!eMtdkA(^{z&)g>Im0=qlOUbh zlRbDRcRh3m-9k6eb#ek8_o#$DOisc(vD45!bO+rgC$^e;KkH)864p(B8bkBTi$xd@` zJ!|~SOO*SJ#&3SJeIuu_tH^-9y_&ijO7UF4(gL_r67r4`tsXjjwe{ zxi;96TN1F6daLnCX4$Nz#xE}f--Z%6pmO#QsGL2V>+E699#XI1mDD|Q4Rk%ru!s2` z-$<$!UIVX2rh+%Z>)^HUnpp>Xn4e_7rRw2#@LTu|vNe1c@4oPR_#ONfegj`a_s|`5 z3*F?LyL`Rtp*!dny2-J3=pMR*c5zSgy`6^cp*?$H@{?Ol-7dKQio>m;E{T^#LEgak zmXG@O$_j{1$!#UqkoM9drxb6nv9{Zvx#x_pGypSMZjli@mLePR#K-^CizrjCecG;vWUjgF z-=b!`it&2pU(Vx^&t$wi0S^W+f(a<{%?A05?^4sJLcWC8!fT)%-_($&jH2Bpbgt($ z5%)@BBxuUh)bXjYBoC4f`=!554^YtfN=Njo6>|nsy`DSI{751mAL|$tgvy zN@N5K56{tN;b~w5_5-gZo}}z&Hp|4m^kHu@1CN|mV{a+SE%F)|L5$+uOV&NoKaKl5 z=fK2W^jGA#lPnpJ^BD6@&W)pA#XN0%n}fFKa7()>>DR?rM%^vlre^-7*z78?zccVG zyhY)|72j=9Ni(~w* z+~2k(J_dan7(xDpz7ZLP?GJIi=0no{YLr>$onXZ zoJGdQ^Dx^jcQ<4vWJY8LWIQr1$_U=7v5}P&*w|^cLS{l{jPv3wkwzmQzaj5e$PVZ$ zu|J!V8-OJ?WMllA?+X);P6;|PbT9_Iah@}8EA;gVdo32+5#sx0xmGd1$L~zYDDDCy zV+>Ia8I5ku_i35i#2uoDHlI$s2a`k5*3(x*8)%yncOws4Lz|fio0J$tTQ~Q` z4?>$1zX;vY-a~6>lVbDm+PObI5?&wgQOtW{Zkl$VIQ$}KfVuUHVPjJKH1aJvx+sr~ zhG$aZFZ^a68=nimhp*v}tg(jQ%yYm;!|&k_th<6=!*7sp;dk&$_Q3LC8~BxAudtH=za_D!lD3LAiJpS9K1BZ*^}?$tN6~C^?l&pA6udI( zV7~{*o>CE86+F)z8ty`t_*USHM(%=wm|OAfMD)=->}SMi8P6_zvm}?yJiiMNFFX8A zg^%eMepBO58hnXK%%+8Jqg}AC73BPRtl^%gkcHyvd~dy%mp^IX^u_zK#IVN+7}@cY=8F$~|x&~9l{ z$~3vz+-_KNn-J8gdML!5-CB0nRx(WZe(_$>^&2OVfZ z6>};2m7J4-z8-xI{5rOQ5-8we{|w&+deDIuG{B;_rYvi|Wh{XLCga`%deDIuG@u3* zD1piFt)K@TXu(7dY!coQ=e3_iFZ;_kD~aC~W7NnL%)6qr8U7n+(1Q-NpaC{pk>AJl zaUbCP8)yxBVB-5DYwf7FpaGsWI=+v>cRSWpL|?`{n)qgx5leuEHVJnQe9?s75gi)- zKwnQEN4uqc!oN=BpNjbw*uo0g9=Qqm5!nIRoHcml9r8AbF|b+Z=&cz)3aSh_-f zLViSkK-MGckZq7D(A~zlB};xgYSt4m+K|T#vt2O{?uY|1TBS$3iTiH%ad7dQx@K`%y|ptP1f>OQ6n=Y z)pjJu%aAeL+ehZmk$)xJmxlPJi;j_ZjDa^+%ROEg?s3o(KR=+u(?{i}*bB2sY_vz> z>%5*=GC%H-757`u7%BfK;B)xQV}N$Co=1Nlb>Uy3Q|b;L>N%^#Ie0mQg{R^@CEiox z+Z=Sx+LkO@f|O*|viFkyg1c@)t|H8m{~5rJS;NG5VvO-D-W6B}aZPY}X`)VIL&LXd z0Y47lSGdb^`4LPikM|Vh5}dj~=fM6I^pW_N9ytw?I5yvAjIn?><%~Dyj5!GIH>Eh- zb=;{k)}Ep-?o za@-G*6a2G=Wsb?PME8RH=4hKR{|5Pt?;*J4WynkZ5hMkfCP3onHRDv+dCmSXJ^UEo zaY-zk>%_q&age%$XQ^vomiSb7ewM?ApfxZ{{3bk)jDuGAD+_Ouymc=*XR|K$jrg16 zzZ`8AzFG3_J-03RjeNNqmkBxLF=v1^qsJrXkh92n+6UUF=&!N;k~_;Vr1&l}K9q3J&hS@`^DASlDtO0@{-P*3=kYi3_$I`e zXFog`3j8{y;3G-Sg^Rw6GmvTah_;6F6MwKvxa$uEztytlsyN6zej0Lxf%b%R*Rh}c6WiJ{e$D=*BzP%vOkz&W zK9+oQ7w17)15dw(QZbK#ehIoK=HcVFq|L+Y8OPwqhWOqA?c)!tNy|QC6VwNM!zkHr z$+x5A5=m@`@-aT~uEM!-(0*>OX=i@WMYOkBmi>pvkFjfyjVbsAaYNxhB(`jkap>^K zIFL=QV!V6#c!f@Yx_l5iKzdt-+Xhp<(6B*t+(D9ZoBQaaQp4Ihdb`LBiwoCo#B#8E(sT0aKVflZn$AC zFTecqaMe{;g;-v6(M93ni!Yw#F1zfqnRn%tSB9&vzB-&ab0(a1)>+}~v(FCaoO4ci z^rIgg&OP_saNc?6h4arpKU{d>g>%0+#&_cF`>*;IuRZJ8->QG7+;^jY`r2#4PhE2+ zTz%&1aAlnH6<37I9{0F#>7|#>I-h#e)54RV{?za@Kl_w$<5Qj#p7^92!*w@4F+Aak z*M-MlcWt=suG_<{zx1qd%d>9_zwoSE!_VJ#OL)euH;13Q<)-koo1Y%;dEiCi?)&cz z&$;jU;g?_Zym05e&kc7x|E_TR^X?44_}n|f%YN&X;ibR%itv(GzdXG7!Cwu(^2(Qn z7ro*o;og_OI6VJl_l4KK{f*%@Z~L9_>bJZ;Jox6lGv%WW%ZUUOLDK?lGWH=I~io~4U!CUUCEz+ltaoWXOKY-$UdIj z;9mQA0aQIz06`Eaf)xF~|F8dT{Qq2BT>Q`f9HqVM zzqHr*`^bHyY1(a!((d&r?Lhl_v?H%|+M`;#J<2+_qpW*7>fLPF-i}JQ&~A?U$^$61 zlv}OQUGpOyz@F_i-J~D!NBR+cq|0=Xew046_aogEH?U3Dm(uVDnr_>|3%Ugs68!8 z4_SjfP7ept9*(r1=^JSgqBc3iFsg0SB$PY#zobJ35e%x^^i`jff=qjoz7*1a{qLSG z%Ja3qlJuC>Mn&mKdM-6aCpf|ZK4A}M$DB3?os;wk2l#}2u`$Y;{Z6^r>%6CL`iC8S z7V)H&X17yqb~>?RKaicsj?#0n@tg3Mvd!4;lUX{5x9KU@>0fr0+-}fGaCY=}$u`{= z_=c2ChEvWt{muvdE_qCc)lGV!Pv}$nEa=;Joh|(b{nk0TcYb5~gg&K@n!Udb{g(cN z{-ZGNG_K!qx;UNAnr=h4Bj3X(9J4|i(Z}>F`ZfJNHCEsQ#?=q{PG=eXDsNyL(ZLQz zrOn@0a+xmZ_sZLt4tB7IO)~DRu8qywDt)i7(znVoeNU$8JouygfF10ieltnmZkK6I zI*K;w8h01^DlwjKSLsW@4L@w_HxFqQuO_WXUzSB-$+BsDXyYs1E8ZL48{RwK zJKj9hsqYtf&v-9*6@BrF_loz1_lEZ#>cn}%dB%C6f1!V+f2Dt;pE+NT^iTB9^w0D! z^e^6^fUTL`X{<4x@WrAsy3*9LO-RS(Ld(;Rr)|S zA)AuT$n*eRkZ;L1MCEl_b8ene*C6~$3h4{^BM()5@M&D^$;}Yy z&b2XRwadNhQ)O2KiSe9!drx1q@jtOXhkx*&_%dBdfAaEWx|XiUzH`|n&Q-dRUz2@F zzokE9|KdWrRo*C{rC+(t6lzGLwZ z`JVg$N4gW;neL0O)M}4D$@k<3IMSWyN@A8$yG0k|;-6e5MiIx9I^rU-16d?yiTH@x zx7OdlC+oIH=jhs6cVqp$8GVQe&ZSVk{)-1qYh!zqHm=gLGz)o10vd%hZMH^nUT%$w z*M+orePun-7P^AiqbT+$USFnBqm-8Th#JK-kx%3kaYzgiZbDwV#<`9lhQzfyNh4`= zou+X>BY_wqC_xbl5d2=HRqI^DUn$20*#+GN-xp$@i}bS~hSA2-wew=_Jt#-&JINpA z&xOWcqz$J$U;jO)HOJoToTLY_(@}a##S&N6b~xlId7c+DNRL+`C*4U}yI}{lo4Za$x})F6kH&A{)J9eE+RcFO4sRfq5D(GU&0U{KgS{9n zw;j;;#T()w`kFax7;S!2b(bN-DYM_uZ|SSXN`sGM`N|sKXB*mg*ICnVa{mu}Ow=>6 zjyndnWxN&rn!eGcgGLumT4BG4r{+Jg2w9_R9Vf5J*X1knbNU5+HMg-|2Rr#HeJ1}_ z7fXm0U(NNeAuht7AHleqivw{`!q<>Q0>j{Pnc7sbX|Z2hh*)DdjQzxAeLfqIjVn`PQ)ii_B8 z*lyWwV{uWapZ$*gj{QEi{^xf30KX!?ig#oW`cPcNcEfhVcFT6l_Ji#Q+a22)n=+dU zepPF*{<1c*lyTv*>2f>u#H;}X^NY{g54s1V=o?Jw_>+qw`R9yw_&$o zw`G^IE3=v7FYp)mOZ+AN3V(&a#$V%a@H6~(+&S(XcY(XWUE(frSGX(Ob?)0a#(l?q z$DQNOaTmA?+$HW3cZK_k_lEa|_m20DH^-afE$|k2OS~7y_KNq4_lEa|_m20DH^-af zE%2W4UUHuCh4Y5A&c|bG_Jx`~XL~6Wy8ai|#uT+mP?c4{)SA(VgkO=)NPd4f&q@07tqL-I*>H zMrCeSnuM9K!D3|dU%GUG3t@e{;w|wRL z@~~_zujsoHPLVz#Pw6w|L?5Q?GMtz!A}isP@hdl-PC}Q`?W0**ywy)QX zd!gUa@1sZe-TI3@WuN8tcb%C2gMLR}GY3VX4fH8}ReTwD?EBDv&{xe*75x&^C-gB? z#BUq=Eq$GR4JQ-Zl*MnE{i;liwx-|Y_F@>EI!<)U9-`ZBXGLG*w?ST)E)r?aTFiD4 ziF1NpxdHW_^;uezHegP_ps)ALpX61tntTJw%C8~LiL6!PoR<*i;Lq_ZxgTq`H9x~E zE5Ft3!La*?tlJ^ZVYjyz6uGY6D(+oFoWnN7&+yB*NpJG|X746der2DLZSApc`S@VJ zWB=B&?-E&?#W-(`6`P0OG`Ai9mc<(t@y46=pfY&SPvRW5TejOsoWuSj66dhrMd4V) z0c^@4#<7Q!%CDjwnf)KOYqlG<8@5}vTecr;KiKZrrg(9C{Fk&t`k-&!aYydT*{;~G z*{<1c*lyTv*>2f>1Y0%C6aqE1);lAU(q`~C#I$s-p;vUG42f$aqS*X`9}G{vzD>GG83j_djoO)OvgGrs18@8k$Otj*5rndfY#_Qxv@UA zhJU5H{Sh)(Zkp7u(u>w*deOc34Lgn(w-?IL4!Hci=mcE+UUmw&TGT|W23f6`}(F{HDXX`pLxgWpSA{)f?*O(`=-T;tqAyv?pWN!ZkCB)w1C^E1FBK-F)3T zk8k$8uUaL?JmIU5RF0_N+aPs`)wS+R<;u_No=0 zt=hwP?#%vaHS|M$?pUo`H|C<2c?GN#o|RtWY_!ALPk-HbPiJ&fn7{*!!K^NZbnK!3 zoR@pDDt;}uv)66k;R&kBRcmUqY;V9?S?`M*;Mscp1P%GCR;+FB?nlE;wYvM_i=6k6 zKHGbEf=8Ia6s}r{=OCB%rNj7mOebUyFop)(dfzz=b+{g$jq@kzBg|k56L^3zRPk&0 zSFQB7bn70#HL`PD4KfyKIrwp%J;5W)UfHB;I)l+|`zgO)9;@_X7DAqGx@?#O> z1V7@SQ@-kl)?Mj0$an2Jw!VIQh z)k`N*D=%Ns?}PkR*Ia0PWNgRE_fXD#7-!OF*U=L^!VIP`fd?2v$#{*7%`f98#TS+M zw@B~l66Lrfj_L4Y3_QUjbj^<)*H{}`aI2qZHy>icH{n+=fd{yUw_CRG0u_Ewse98j z)_Y<8nK?H8;H`-VFYpXc@Z+2vQa7mPn#5f5<~n_a7r2Kvef(zac(ZPVCp__Ozau)+ zX3ulfRf9S_i+i7-Y%CU?%SZVcOkn~KFou$IT!ef1M#psuHF&nS`0R|Q{qpche&cOY$?)N*cNBRhU#AXMa&s02; z+Ea3@udXA}t#@4P?ePB<^v1|Jfc**gJAcsWwa;&ri^k?QxHJefGl0GJ2~&d&k7q6{H;cqritai_a`yC;Oh~lPQ?v-JPYYkQaMBh)>q?tIJFCxVYAJ_#g(@kgdrc$i6Qxe}68o#EK#r z@(ua;TFglPeR)M!NXPaBKj^k}r^}1K^X28=*X7mU_ho^;_`9R~pxg3ult0m*>A%>1 zU)oc}%bwb00Z+eQ+EcrXen08KhuA)|GrGrRd6o73qp6KJJFr#zAh8T zmeSi#BR{~A?nHOKw4ZjF{zcZaPx3wa0giMhy0cSVy1f~V^7`$kksshlccM$exX*2a z+?+)g;g@ckqwL1>MY01~DxU=44s&1j>F^@F^u}{Px;yeD&)dJdxy7~DMjv@!Dh}lv z`*D!m+z5K?%h8ow8v}MRPIT+Jq3fj35|;*!>m#GD7+0};+#PvdasQj#4#Z@4e-T{? zzv}v{;?$rH)yCAd`|i55ZzEq7k2T268hSUx5o7OYkzK!}O|el^Y@48&rBGgXh2|U0Up6yRP z!6W?RYbKq-1Rh`<^5T(6(_Vxz{?D`eAHH7XpWz7}VFpup6^p#UGyE%=a~ z0-5m?vyY@J?RX%2F%F;M2_E6aczT8>cnqm=_Xw|ImKS)2CrJ4D=NKO4XE22cJir+4 z;ng^OfoFJvN0`ABCa`3`FNqoC$8Zm?#_$f*057 zGd#f~+`}lOuDTKY^PJ;fDb|n18a%=brZ9mA7{dtez4!C46zM-)c!U{DVFC{@h7pA5 z=F4^Z7JyIF!fIDOSy4B%}d#Y!6f=74=_P6#H_37C4I2LP6#c>n9r|ws#;>Ru9X+w-!2l3*} z`;Z&5z8Ga9{{VLN(z(8#RKidUB~DA(oW*k|an?~>bqMiUh_9sI^j~ymx|M$?@-K1SKf0d~1BTd)>{~wE z(Vxlf)RKu~$bXd2Vz;gI6m*W|WIjBK*AC|7SMm0LuDsU;|KP#?%1Zi^m&Lu()fN9& z7r#H!e^;J=lC9;x$iAgNWdE)_|0LfipRX?dzNFveKjaVAjSspl*-3hqe$jo?{akte zN%lduB|FNWae&KcP+Z5&IIm zV$1#uZtA`Ibv6@+-gQ>eC9I6oCCsbt2&L~;_m9TJ1FO~NAOS+yL;*@ZD=In?(Cd;}N z9M3ho?jz}o^d-88EGEmkW%_J*ZB8iA73oTJQIO^HtmlBat>=y8CHWikVY!?A6_ks) z4%ggT*XG!>&7^1D1woyBb=bu3SSvg+NTXa=9cDfA2wg+GRuB8YJ@wK>WU+kKtNwMZ zO-p?y=;KFS^dKf+SbS>-K=bm=+R%r+Cr2W7n8E|>aMt3d24DB$ znTCCs%-Y(k zF8-#{3C#GL!UP`R(Y*a=F8>PgmUPmwPPDbRW#+ejJXt%QLp*2w=&9#L{teDzsduuI zz1xMjdM;L4IJUWbQJ>f9_ND7~55hfgm}g-L3z)+@tR3qLdhSJ*(zW)NoSR7hr*;1~ zZdYVWc!#sK@*LLH%-nBX{t}meiLJ+uD|Wtyu8FRGyAQFPR~pLod-p`WPMdy6*47_o zezTr2j9<{sqWVheijq|MBHCy(~xTepm{8oaFyzYK$ z>s)QZd4(0!#h`V2><#^J@4Dz|Lzn+fXp8bl?0qL4+SgrMZ&$E{1tleX*UaTgnD2FOIW}h-r)^4 z?se9%f+Z|q4x3OvtY8!Bf)%{Mw=urq`yJk34J%l}w(J=$tYHO9Sil^%86C{w19wxl z(*`S8!UE>7&Ft9199q}&KP|)cBmh>hgaypOQ(;_rXzQ02+-hSJZs0nHwmEkTm_tL| zb^UW|p1S3~;raS?ZSH#Y+`QoZzry5qD{UC3bc-yHRrz8Frw%;IgF8l z`x{skCx6T0JZo^e!UVnrub3RL+dMx-nNX=CUvrjmyk9PL0zo z?gn>_+q%(5_#b42b~aoXUj^g4XnYTytCF$3H1C#s+22gu7h8{xVy=UD>QfBm42kj9 z;;Yzmq_9TZTCbX;FR|QN{C2`U;(C&u|BKkiI91ny-W7j|bHrf@n~Lk=OAHpC00pmF znEt0A_JV)#pMrPKq(6CC>?K{1edjW3-;TWFKT(vZMS-{w)7R|4si>5TB6m$Un#r@<;iT{2Av9=Nspz zAoil$)9rGe*h_lCIpciceB=BS#9laix*gp?dX%1U&NyE<-#9-7u@~Jw=ZL-NPxNQ{ zFZ%CXFZLooz>)4mcc%NI`xb9}lJCh6aHKoYo$0>lQojZKB;S)C;7E6(JJUtZUnD;H zB;S)C;7E6(D~Va+@VmlXF7_fz_=?El+^5(pmwAs&Ire+P#P13}$znbu_NA7+wcIB7 z@=O*dk`@COC&q~ar)6)9{LZ*5N|R7G`A~W2+KT8C<&pe|ELOgk-n$k@FoP*f-~qyp z@>qKBnjLv&I4rMzhuP|P6s`Y;@%r~JlcsAj^RapKuDt%cGq(<5V$FYmG1!6O!+Z@h zbH)@V@Bm}DhY`%oA5$p0?k3U)D75W^yY|e0)+jpHUzxrH_c@ooZT~N0;6So9e z+q+!K86R=36HAd7$qQ|95}ApNUMwSxq$RpyuCsnBXUefOl9qD0=lAlNd@PM}S*RzJ zgU{OVh7|Q0ct+`6H zlt#)WC_>%5Rx^hbN`5#{gCHNQK=m4)e#tN3O zfQ@$S)pfG3H`1P6I4*UBnQkw?li$NYO!94yGQ63RHO%GL_HE7c)rRMtb!BNL{m}L; zY~aH^!4@`9)4pmrMs29e*YbQ=4}wf+D;_C?e&`r0kPbSXx^aK5c-cZZ3G(_wIx24e zhJIIj2SfXpcVg3l-&ppwz3+XReo3DWtTAGlvfnox**C;**VeX%Ywli5K5)%+#c6%l z%)R4!aZTJMYkU1-T}R$>wRGJlRj)l?cZ_BAHvN9<272VT?isHA4y*z9>b+NQL%-MI z%d`EHc&_f=q^8cAbd%{TZK&4X{I=mDt<+xinJ44qAK=bOui7V|vs$XpdvlIIbsU-4 zPb9|2Bppi=#}w;}2ue_dd-4$!vhb?|vY?}&W}E5!o4xj3CC!yZn@stWNrBl+?gwT(t&yMUJTK& zCsr4?*UhbU_n!@MQp0!{ChNa}{<EDt2 z*)iYO=F#v}wW&XQuDx6LIk)mHeSI%}xi>f88-J1CpWnOJxEDK*U}*fcwf9zg*V^#n zzD6)KdX>Jxi?MsB9TUg;D*pyY&(2>Q$17axvp4CBb~f^U6uar$n!c@u@ut5w&e4Z- zD-FLG+{xQPSEK9qI$Xz-G&RN=-C^fJJ$|y3`pJ`{3BThuM>^+OzxtP0w+7nctXsPbW-^(ww$FFm&bGM^2&WY}vg!n57M=55z^8UVm#ZzQkvXk^I{bKV?_d~ZM z`yktr9pz8*XZbJsZ~7nmCVTQ7`3Lzy{wRNvKjVDieB=DsZ~3I#)9rGecuIQ0Ipcic zeB=BS#Zx$Yx*gp?dX%1U&NyE<-#9--@f6)Y=ZL51PxNQ{FZ%CXFP)4mcc%NI z`?iPkNxmmPz>)4mcc%NIOP#|{@;&(hj&vuwGhO0*#eQe_NxmmPz>)5h+j%CK>w;W7 zMHc%#VoH{T-!_sR$TH#`ub8C84sv7nr%?DBkT zGzw!;KI^GNI?I2z5@cd`BYe#GQ>RBwQ)p&9T-^&HXdKftkY0JUfL6Jir)c=Bg=7plE)4kdC30&!v^& z%vuqwFf~p?p+6$bS~g!x~?8x<+@DkzKvp=g;p3aVj`F`l0*&L+(RN$EJo;$H{O$ z=y%0O&u;7m@lj?|!KvcZaJKXx^mVboow>Z;wI<_~aVj_)`YnBpz9uF**~h7}tKqH0 zRcrbxdDYxnF>cyuLp}Vy+nap1hAczg+V$dnqj!6RkKSVrE1caub|L;%hiA)1I-cvo zF)mzN+oISqv@h7hx?;b=ali62*QT=msD%EImi61Kx++2dNVS;8XNM)s7Y z@1d-oW&T?RvPgg0b6geQ+`HKKVLOy=igSB~_Q0H@Z6W+t({DuC)O)XN?M<+oM`L|s zPmb-KbH8FckgnPG!+ucFP5|4AbGeo->~pR8Sh0Wi40*wBVU1q0>s!lL!7l7+vFlsY zSN2C%?B?v2p+5XM{vsS7{Sv<$c=%nh!MeC~8{!=4&v)FV{+{Eur3>5^-4eHL&0pcR zr0>DE{+NgJi+ihY=eSMj0{2F`#J$E{I=_oB2K3i8yyG?0H4i-d&?ncKhZzazxZ~}l8-*!y=!qs z_el2?Y#r-!__huoFU4@5>rRD!M*m3vL^r2+-)W$m z(#_~b%8x-8t`_nM`IP+Lp74U*nCyXULN;}d$MO&I6YoEbrAx;#X8)l4;>vt>6>W^A zP06(ZE0~!7A7BhGcyF*IU%(vR;SF9x-gW%0?o+wwdJylGTwCx4?=Xk|lnNj&Dv7H~ z;-)-ba4p#Hbxy0!W9)n-&Q+?vGx9QdC6^C6L;k!J(+sSc|HBkm$~qig!m{Meyi(WDa1)3Z_ZDxKX8JTV_3rm zw(tQv*uy6r;0Px;!xwzRPbjC>n}W3n67{F*&+__xmq$L8kH};BB+qw!cgOmb+gK|L zmEl(ZeZUU(@CgSv!U@js1>f)kC$>jE4s1UQjzjsRya?A^$=)gaIMyHUi~M-@|KnYO zpHkwSPwi)h_JrT1_58NXdgnJ{<@`5d?q~Ts@b_8JKZV-wna>m1k!TBodl&4j7Resmz*_C;7X|C9YYejjjyb9%#y#?68 zK8N=#_2U7KaDp>@!FPah{4I9)7V~_E*e0qBe?qKs<^Hzi_kr*l-ZOH2&t1f5Ss z@4S4%0giBjGkn1}Y_w;sJv;ml{2ycXz~|?c9*YHHV^TVg^|Aa?ej)#9Odj9}Cpg0we8WNApI64=RqgMr{uBRi zVLcK9Y`mMch7~Mf0rQYrtCsL8{{qkO1dlL-DNNu2#<13wRo=ePmQ-6(ZArDoeI$Ir zH!Nat3GNzqrQJ*At@1{Bt^8)rd^M-NNT1;e9^qYEchsr2j8xXy?;1Ompg$X>s zIOM%&|KQ!X5AE7&*G9Yc+O<=T)sghl(JOfi-#EIIo zE18R63maI&3YM^dIlRLgEY&eJZf0Tp7}qmnedZbVE8Pn`!xKD0)0pqui+aR)f_r_u zV*f1vTC#@(?=Xi2EMWy}*uWM(LMo1VRmTgvH+YwSgeQ0oa(H(vAAE0N18W$I5y$q* zjC%L#VkCR0WBX_C+J4Vw?48$fh%v>j;qD~dZQP5aZnXQ}ZzSjTl#ER6cK<&prI(!x zzoogb|LHqLP=W|zNFap_%20tS)S&H4c}H{DtM?ir=Ob94VLZig~;CUT|F`p$Oj* z-!b2QC&_P#-(o*8--r4wpk!IDkLZ27i>}zW&bmGlIuBSJhu=>^4XRLqGGvfK0&!>b zoAnd*#QY@uxR$~-G|)yeKQvNLO7FL%bg^qDGQQXD3llOgv*VlZbDcHK_gWMBt4{H+ z&~dJy1QEoLKnfX@p#oJ{Bw`p?B;tWQFAk8dl$VKjBNFj~@>=s`LTv0CPX?yfU*7UB_N;{X@S?CxmP=W|zNFap_%20tSY#r0aF@5Fj7vo-v zL*esMOq%D#q?ck+`KtQX>R74cgWZV7$re|3)Dl;5TEa3Aj; zdSR}6qJMJV{49NeSNWs*-sIo#4(j{7EDzuD-`(HOrG0%imtUC6mYzQ?tw-m}+TST} zr+XayLdW=r5=0O~0x4urh6+^S^U_`<+mpJEYn*JZ`;lZ=@>UzQKD?C*vB_ht6m zS5FUy*0EQ|{067Yw^5V_(1+W)-w8YRt9JH#)yjT*WQC4v6G{+43<;!=K^ZDAbnkx$ zW8-chedlMcKMxn~J>hhb`5lWkz_7A%U0SdD=Ip+E|Gs(LF{NY~S(z-6PvtZDqjnx5 z<0dk0qzCDz`=*opQT`zR8M#iB@A$sgh9~<(UC(S6p&g!qopM{}60ci({~c6Te|_k| zBkl~QP#Q$`O6HE+oC76@Ach1|$e;|Lkv>-EneUS}9Ql5>Z~p`je2n297WU}oF!GgL zU$9H<1bd_$?wel!p1jX~Yfe4nzU+eRXzPpj_UFC8_!!!td=F{oRU2Q^ameedGrLpnEBFo1TdZU3t74in z`H7ENQ(O%bhj~?B-J>ZYw9^S)#rT0-sFof8* zJQGOs)Y{nbjuDig2;MHy=UaX5T~+8p2e#(24Q%aGZ_P1f$5MeR)SwOxxP}{O!rbvM z;F;YEJe&7k;FbLwB+l2Tk4o(0+fl{wlpRl5ESHJpBHta|#m!OKdA+|0`;v|aMxK`+ z*i`W=_;qn$O`lcu!&*Ol@)e28XWqLV;@-iaw)lBs`pkQ{(1i|c9OKsUZp}#>*jj6@ z$s5qurjheg8u(sFUbh&}F;pFYMcrBFO&`DMWAAQ24eHQ&1MC4Hus${A9_y=d{t9_`Q0~Q=`Zg`KpR?c z3r)CzYiK|nChDoF_dz;_XX9aO&8gAN9mCAK*H2_s?Wj1mD#U}^QMoV1={wKTvNV<6 zIo7InJ_f$F)?mX|Lbo#CHMDs~H^7@pC-4AcsIgm{zv^tt1LH#4$D6yC-m-mm|6I36 z_7u`khje1x^l&EL3$KS`a83Cdx|qDzc_2%yeb1iJ>Xgot^btlKYbV5X5A0`Rim|bm z;M}{;{rW*aTFapap8DxW{oq=gxlSM937+8v+H@_rg(lp<}Z=WXozeK7A__T10Y)q3vHrB~95bi!9vzSeX9s$7td#6VSTs6ibXa1A%m zgj;ym=I}L!4wSw3*OJ~s6K>!d8c>HCRG|VbwryBB-l1c;>RtVn)mu?-RU2x(!e2?b zs9aFKQqGji$`$2m&wZwHNqOwJ#>QWG3Ow=qyNTc5Romhjs6p!7R@<+>ITPX_^N@U9 zzARspujG33Cs|d#OjgTz=2fz~e4VTzt+jm{sAC_Z{qFwi#kjF9(WTNdT_&y2l|u>* zx~jBJSCiK0>e6aE^r!uap!aT5MxXdzUpe@dR_L=(hHIRPw1HEV)^Tdm8cwzCzP=s$ zmmadtkgrhxkS}A1zCvG7zRBA%rVGgRc!?-qA=HF@#ZL((& z=1%gm_vV`X+yo!Kmwe4fMcUw_9(cJA?@8c(X7*!TPamaDX9pSm-b1cEd6WGO+iP|W z@&>!A`s(cVnR%C8mES$PH2CfD2@PnnyJ2_Drrrzv;@Tsxv#BZ9+V-N__x9%9KLp=o z^`7&AQz5@)-(-Ko{yMh}K7wsHPv$V3s^##&z7b?SV}fm&yh47sePI1a7`v$vuPn<#LH6%W7 zMn}3f`xg6K_D%LT?6282a@+7dc6;9OwRe(+j@@1mdDb4PyXhO;H=_>wHv1O)TlP)% zH|#&z?D#+79r5D!z3&W)J=q@U_S$~R?LF^j+hTjmw#oKL|0%}Yas z^dUX@4t!U=9ky+@Ew;C8o95yp-6`_-bfiaV+#de!RKAB@;(f0?-x~GUciDH?x7oMY z-?HB&x4u*A9WUIye9`=H$n9>G9gqBhyvMf7w!^l~w#D`{*9ZINXySJp9ruKvi9SrU zh3p_du@3dw_SkmWcG$MrKA1B*MuupG_RT!tc?n3s=43-w1DrcZWB?>*Gywj^{^Wi>bIFHP>e5+7aFm z?+$N(*Kd24XKk6_OwGYl@kCkwR~+jIZ-{q?H^93y&ri(N6P&7gV?OV3MmR&9JDdk= z^#eZ>h}2i&tH{?q&Io6SGZJgvd(UJXp09Y$Q|Q@q<159_@bB?Pcw^sET3G+uewW=5 zTa@{!;8uGjbz9$XOS$izpW^6C-~8!&?lRyz6%Q713qAWzjQ= z<*aEh7dOF8`>qdZB8{X)z6(8jG3-DgCRj`5Pdd)VC0bA-Noy4*HAx3YhS zTVy{rmJ2<58*I{0CwZK6gKe-0`=!RCzvFO%q-_s?U5p#ymgI}<3qAV;WGUIM)b#w# zoCF7m*&L-_e6}ZP|AbAsXI~aKk}t8p*N!3|C%h#0p`T0UM2OhM><;pod@7%`?Lo24 z*p_?taOETU5+6sr6C`B2lDPp&>>_qCyRv*HpUNj~dwA?JcAt2$d?bI6Kf*`JIVST# zD!$sDli3?#8?lYqmgTe17Wt&@{Z*Ve_vKwu`6C=czvZ&W%X68vsLS5*E8%9{Yrg9oVI*{uOeS1z9PP2zN%yuvNBmlmXamy3v-0| zT0KMaOV1oIP)FPx{#DiUrr&GU<(PZux0x>(D$E*DvkAi}7I!ZEfmk)19_l@mJul$X|)SD6b=&3(u95 zGv$7m>-58f?E{SA&hf0=mv+^iIlm*EA%6q)j>3Hq&eFZe0<3@tHkvOWe$8#g_wsRX=-Z;6UFP=QC9^lUf+3r`u$K*exM6e6{+i7t?zYtJ zG@9;($rCz^moov#wKM`HIDcA zpL9z$ecT?5!g0fnuFZB&UuKhqHX8S-F_hY)+mV03g6$pt0Q%5_xAp_>yk9i(uF)NgjFH>g-1l>@t)=$z@^;$G>xt#noAjo?2e$M4 z7{l+p+33q|b^cq!ui~fb%G6a>SK4#`qs?`?2Hg;M=^GGt(vkW*?AqE;%j@wBBCjLZ zd-md7q`qfc&wctGZuoWt950%qA=`F!{@2uBnR?3VsAyxE-JV^^USnThZ#-*>wP)iQ zN}^3???-Oby* z=Vb+JzSho7J#eLMG4fi!yG`q?q@UWhc1$Zc1&Yf0NswKq3+&fZ~aFLMG95dM1MlI&5eI)f=p zpu?sMx7yr-HgupH%8siI9q>_0d)iTY*)^ZS6LaFkSPnd_n$7 zzARsnugcfD))?iYazXj3YhOgUtXxs9(nrcA<)U&y`Ks$339^i=OjaSQcCF)N5m||> zNLCqCu@@3klm1Nov&-M4{4)iUxThnSEZ}r*XVY1 zb-E^blYFmyL;jiDT31T$_kDM`%(jA43dhK{inF4tv0Y2+IJfMZD(+rd!~K-jac}u)k}pd3V#t@$Yx0$};a(-V=6@M$O;eSZ$_$~f!`D@bMkYAHETJ}5K7p1wc7j5ykw4jo=BlrpLetE2c zTgPql(cfTYVX=B~{$#wc3+b-J<+cw)4+uPjM7vkAu&VRir1EXsp$>HEM_Vqr$U3`$iZ3L!UI0 z^p5?2eV=`geV2WQeWYEn-{e%nHOe+)Th8khH?WV`$Lxpf@7NF6_u2Q@ciCt3k>7*+ z;jyt{O=p`ly%T)l-Xqj+jw|7e*bmv?u^+JSv+uD_)S0kLQM1<2-`{Z`#y$)Fq)9W( z9rg{_4%yzZ9kA_(V{h4yVwbY}R9{g&C3X?Jm|f%?mh{Vr-H_cKy8*j?YvvW^`OKbqfsY~|g|52udd0Eq?${03rF@j!N;AB%d`QQ|vd+x5(;F8s`J%eXPSNWLUr zWVbI~kM6ABu{z3ZYU20Uxliy?ybQ057t2TTCHa$ky(}DeJM3F}U&Fm#Lhqwm`0k~} zAF+HS|H*&WoVw2n_k!WKa^e2d{V~0d`QX||%zcJ?Nc)5EY+N<*ZykTxw>1*_%r|0F zf3L};<+-J2dfq)Qd&epBx1C!0rLA8&jx`H=C%%K0`gUw)za_Jul3j~m3*us^JHEv6 z#oE5lW#VG#z98N%;5wdz@~84%xvcHGFb5b%yMngUb=;S{XyXCr6K79;qrFY-z15bM zwzRdS(-ilq>xh@AugrIazde7SkZ4O9&JE5r`y2L6_P6X)=cC0(JNKcVJ@-l4-i?&{ z=z#es%q`&?>()TuSIFE`B~AC{+SB0cny(wanmD)o6pV>tIKScA9Jr4+W@~&@>1*su z&gZA&*cY4!KB{DqHZ1sQiT!q$zNO87g^$OukH~IMR%Umno(A55{U`fm{&u^+<>li8qmL_N0rrrxPns9*G0czR`AcR z$gadLVi&Wkl2ypcWEoi+eEGXB1NU;}YuCvj+?%*p&(D+ZG?L{=&vMI5N*u-qA zWEHY9Sw@zUCH^K%()DhvXUW<1mG@!9E`0Z(3!MPpNhz=^vMaHR*v0IsWEHY9Sw@zU z)%1Ps|1a)NV{FT=`hfSVd+SbTxMS75H9q2guikt0>dr&G2GbZjrg2&}?RKZb;I=yq zA<*fxTOGGMorcCEO=FW7a4a)J9AX&)aR`aSC_<10vMej4Dg;4DNC>j55G#`qQnd5i z8^x0S1u0)r(qDV6|6XhDz1P`ipW&W!N`H!!`}o_cX9|tIsf}^dPO*5u*Tgmn=Ye2k4c8wt?t(X&I$ixxHo9W; z#ORM4cSia(isP~#i&NrD{)M^)|6KiCj6UC)IMZtUUE6u*$TcFLOq*RkJ@$RJgA~iN zDq@tlr5FW%Ax5rl9{V!#u1JhC@*BN4Q{(H1(c#nO(_`OfJ7CwQPpk2reAn*UE%2+< zFYlO$nTe5!(Hgm?WxEi+%l6Fkx;?ft-xBSoIB^`#@gpZ*foq7D^UwKb$=`LN*xl5| z@vz5cDPEsV8@EXQ@ta7|-?c8kJo&|#aU0xrE_IdPsW@_`u8muXQQ}JWMY4}^<96_$ z8^r1*JO8mqj55`qigTzuR;aav!ArsX7rrCo$AEzZF%0$wKYA%=kywRn_MMVdfrc! zt0u06%WyfaPOqgn_HBBlXFbL>aV<7kvaxQEx5?F1Z~dXS=o!6Eu93IN)t{a)wIxF)WZ>aE4fZFSY2>n+E%sWCOwH}NfeU0G9ZtFQJN z{uh>Y71tTqF3^R}!2UBZClcr03b~i++|MSj%#Y5%y=+{`w!|&Xl{T)ATbL_7+`PIs z?BX`^)){!lL|wtYP`8frRoyE2x!;juL_ha#lArr9sU61-emTE9`I+Cz&wLbf$+kVP zPvWNbryj0pd|lkcGt?dL#S#D}PjeIZ6SnI(ui36r9BYm^eS8nsw5`#W}ec8!?*d*J2m!OEJpWt~IgEXGg4oSbcRpd>2vbcK8kW^^>1#bp5VFi%-rzV_zss zK5ds^BYs1EyZm$*!zB_!o_%psf)}`M~zWU5B=XWmeot}L{ z{C(~2@g4CU^4;Z|Tfffb_8#pP+H3L4_!aiQ(*Llls;`g_`0n%F<2&Lz^_% z@;mZ;Xp?V?Z>g`PK5cBTwzh}X%R~ML{P+3q@gMOY@;{900KX=`*5Jsqgtk4ObG{wF zKV{lK;(N&VfbTxvJ-#EprEz*JhVPMaIFHbm+&H)SRO!e3j`$t&JK(p^Z;xMvU4zfo zz`2gT7W(Q3hGD5)4?~;x?g8;T;&;gJfZsm9`rzoY9e+b(*Htz6NJO9$qxM?jv|+{g}@YpF=(ee6|MhnB@Mj{^j~t z8y;NjJLVjD?zrw+rRw-`%>Ib|A^Sp~YCDIQrGC{02bY;~?71(I`L4MKth|5eo0#m6 z*&nfQ;F|i=(w|I!GGqC3){gCX%<8(%>zaq|NnB-roW>wm`c&sLa-ZM}*w&(Ne6LSm z8vajn%lEB1w#ilY+hSIYu^r!uiT48H_tt&qJ@@{ili|zdm0j2Kp3ksjC0#@~1T*K`jc)33JrR@=IvuGO|qs;liBT-05|4b8t@=XE{fUtV#o>Ly*y z{nyNIl3CyJL97n{roOiPuj!6!yRJBEZPkZI7d!3Smp$<^`R@B&vg%$!TYb&F+eXK6 z$#K1med$;S)z@|pE^@JRv9tay_k^6^vTrz-XzE)-o@&}!w4599TPl0;_f9!$#eB<6 zZrp|cu~;{@I=+VA#vglzxT>zrukL)SqZo^Ka?T zA^RitE!Tyae&w+*;??=o)E}tt>f^ZLp7|B`3-}(g-^A@eKhn-Nzbe0q|23J%wavYZ zX79+e>W9O9{s-(2+4b~)b;a{Gd^dd8Np?N2oa$R!yOYYX?;T$Ce0e-C@~va9yEJ{1 zdrzEwaSp_}lltMl%@y};jOR{@#T$t?6u+k3f=kY} z6YrUM|Ey-do{M+KqPkJm#H)*UPH(0Dx)0)ijjq)V%!eH@cf}lvdAHn@;uYd$@%Ur= zw0bYmufcJj?SSnL+jINZ8n-Q8P3*dO8M#Gnk{iakE8e!8lwuY7R_a>^TJm1AfAz&0 zh_%CR*BotoXQ1XMmO5l?Hrl9)xh-Zb{%=$xBpjuw|(B5E9Oj>U5{O#-GH4(dHrv6_e8|q7Plr=J#I&Gi`*nPVve1MWNZt5 zg?KsNnK?Aoek*>bOnq0}p8CGJf&H#c&-s+>E851?Ey*kLy5X%K`XbqQyN|wZcpHemP`{+F=<9~x(~_^Z+2||!y5UI` zb~F5(-2%VFukeLDO!2c6-y2)_CB96&H)m2C-sZx!%)2RlmfG-pkvTY_Pw6xDxw$kU zPswBDB$Zc(=O)eu&VB4>on+4=`0;H;UgI|8C3%(V<;2SyOY#c8CU5G-m+a+*yr~;Q z@{t?*nm(s5lAqkr*LAs}FOsj^(ARajp)b@g=_~rWE;sCE_<4#eH~1C4uun|!vlL%$ z@JoDYf0*KCsSUZob#N2h6gNxl#C*vQeM+CP8IvdEX_Dn9l~;YA&-s{qx7|ZKx1(*~ z+((hJj&USiz8vsY6@g>8F@|K)QnTzGWo@4c;u}nZ}g@56@5+L z)Z_`bNd9t%TjMr0xxy{jEpaQ{8n>x=6D`G-L);3t#!cDI@blD$9O75_%$%6wXZSh$ z1%8RoV{UOX+#I*S6)}gnDQihjcfm*?_+>#mvwp)?5a4%mfm`lLvqvhk8kAqdK%t(Ef;Hgd_yw6r5oQ+b57n)tif3a!+32*W}HXxkz6oA30BY^s!yY>n-zgYyV=ob#SpFueaoA zYyWaVU(#3f8GXKWfIGyQcU$HIeNJD{m-MMvv#mqi5l(Km%uD)g>j-y@i~14$_+p-9 z=PO&jW#JsV*|vRPd1e11Q)Y6O$ysK*XY!cEZEk;TLMv^5$4hlBHs=-jf%A&|Bsp^O zLtf)H1%>el249XO3GWfAbu-#%&yr z=C}pBC2oaV<2H_0GyFWoH$MCdzs5Js#~FT}+L1&23g3$RCVqyWvtQts_$;n_k;_ji zv-}3!tjv|S8`t5aa@x2FwKA=0jfKmgFhl8GW8?ZsKlL zCb%hXhMTil;FgWk${0VvPw}%9=a#zD${Bu)pWvtX8T)zSPw+SJv7KA^XnO;96L$-D zs=p`tegl6KAKQ*x9MetQE!=6vmw)KDDz~CeK5OzfK3_ztEVGl!x^9fHOr^0V*;wnw zN?z2BmAtBJvu?b&Ic|Yl;#T$3$^<{f&+v2n0>8wM@e}+MKTGk98GnW!<0tqje#U-| zzl}e`kMR@y6hBM+3EtRo6WkPc%I-Gq3^&G25@+o6Gy19Wb}Efs>8l5F5y#Ee*u6bS zHvXFN!@6diNj5g+lD?|xTkU#fPG6*Yd8lb0H^a?w3pPvKswNNkDSn2Z;}`fPevF^s zr}!Cuj$h!<@MHW0KTU1P1O7Jt3_r$C@Kg4)#LEM2jGN%5xKnnwac8(O?v#9+e3oQ6 zNTnPoT?tpp?hQDp6y57^tx|TxlZOId;OE(CC0937F6Am`wl#RG);b`6>e}*9c1}P}jJYib zZTV=+%OvLqXHc}+v~91#w&g!jE>dh`6w_Dz^ey^C8##k9+~zyWjSnU;hBLSgZS8fm z*U?@_dyCd-We#VsXz4ec!K`IFzy!u{28DhX`ki;K!?j8#R@S+jt@dF8V>p9ZOW$Au zV>pYtb#MaXh?aS$JX6lJJ%tI3VW#~lOkfNPZO>sT?gHkp6mJ1@Xv=-xzNT*xao*{l zyyf!O(#Ph`^-601efl8w`#SELy1V7r+~iyGD@yq;jWHtn8*d)R%O+Ew#WA<9Io#epQD9IV@laD_Fznwsir{ zU=7kWv)X@1|N-=yEH4>A=|%xQ6yQPl*PV2 z?w?%bY})jaUhL~b1!XFd)F>n zkU4K^?OngfmD!#cdnewhmk)Bbcj7$+c_8O|`a|xJODK}A9c7th?d}-gj`+|cca@zT z^@+2+lwEqq8d8u;a+};!c9k9LNRBU(kFn7+dQLCYmvNn;XY@S9i0hI3(KC9kzDaJ8 zGjb!zu{5XX^&RU?UrcEA*(X_FlsP?%Ynt3NM%O%J&Tn+x^XOtK8zXIyTO&Cgom}SR zjNHOENBT_9=~=YfyTR|qWr-_rdGeJPdPy(nIiC)_O)u$1(#;WakK9(4iIW>;Z)EN! zT@I5h*UD1gI|KI68_2n`GvJ#zv6NkU$C_P`OLCi>lZ#|0&v6~6=k!8dNpI0JdY=5E zZd}PP+G?|>P3ZKrm1J%7VlIJR;@k9GPO~)Uj6K%T^Q3EsT#$421^bTrF0KtF-*zwh zXoKEWX6$lyg}PE*3$j#dC&{sG+d+NCE_Ymh@V=LS>0Q;k(%*Z(=HBrBM_&=%^Tsa; zAN=O~!%w{Ff$)(xKNLRt>{o?fdj63R?)s&~w#LwI=SP2nxC{o?Q~k3NvH{%gY< zzV^}Z`bXaozUB?D4`22AuMST=_jGvjZ@xJ^@s_8;Uw`wH;jcaQMEK?>9}j=^iO0e> zKK@PNt?zzUc>cwAgl~D_ZQ*ad>)XP!@A%g6%-fy|Pk-C9;ctBFGvT{_@O|Mu-~T<~ zJ3sK=@Ez~}+u_^a_nz>s@A=N~j`w~?c-wcq5PsmNJ{Z35Cx0w_;KM%>-v6N=3h(>z z9|+(3!S4&-{i7cUf9HqaA3prcKNCLmiysO9;OBoj{QZCa55wR4XFm~s^q+h<{K!B4 zQ23#L^yB}}dHJ*Q_W!H?kw+f+oH70T|MExS_y6l>!XJF*zlT5kZ~rrV>VN!k`1Jq! zlki7>{J+Cz{v?D?{O)guPyXKThTr@TzZWk4d4*1Ros*H zjAT8{xKhX@B7u#S8Rz?m`lL}QWKx`OksxQYJ%ijJS8QUXkV!-W+cR&QZ+(-u$ulm- znPfYP;kj>}Z*^5e%wl?u%lK%w@lkK%y@;8_IL1dm#(NVhg-kLR#lXIg_qofZ)2I|O ziAZ2$mA}vNF&T6kl|m*F32dw!!?BnQI*m#plZXU1Ru+zKEt5f~Q7L2+k-)~v!mU}) z&ScPOR0^3yB(RZ_>q}g?w(*u@`M6cJ*qIDEjY=Vthy*rP7OvbpS4VLU#mS)4sALk6 zz{bkLm0Px+oynlns1!1ZNO*3C^0A343s-JwydOy&CWB6+Qpi0!4{8w!Y^*F?pEcrm z+oKu`I*m#plZXU1Ru=1y;P^}iokpdQNkjr0D@$<9ZM@CRIy#L?Zuz4;BZ)|0+s6CK zzPjF5>%=ZLD!E$sj3lD{LEOYu9E;;DGR3z=j)5*9yaSNkYe`$*4m=^y>xKia*& zSBh~KlNgz|{xNR-z0-^%l&Fg+S};w$LQ_>YB1&E#3-_uP2RoBNr%@?n5|O~h%EFZk z_u?_SW)5~HgHEH8Nkjr0D+^aHrN7;?o;cW<3_6WUA(My%HdYp{T(VlJzul5r>`Vro zMx~HRL;@Qt3s)}Oqgqidb|!;Pqf*GEXH2eTF|a+iV|M>gldD=6@fKWLK|LmePNP!D zBqD*0m4&PIw@pu5cVAJ1L8nnEWD@Z?ZpnQ`9aa`=uNwDM$8}8kIsO5ed)jl-&2! zVqtvC?^p4n-hH%>8wWd+L8nnEWD=3U#>&E#3y-cxZXE1P2AxKwkV!-W8!HP}E}VON ze>63@aj-KPbQ+aHCJ_m2tSnr)aOP3f&E#3upBn$>Zk6!OmpRX;ccC zL?p1WvT)_XnMZUDMKw9tnG8CON+FYo1U6O{u3R{C59)ESGZ}Oml|m*F32dw^T)A-H z)Z$=gGUzlag-jw6*jQP(a@pG3ZS^y}s>5W^X;ccCL?p1WvT$A7+p)B_eX*WFr%@?n z5|O~h%JN)yZSJYo(P>l)nM5S8v0mL9FYSF?-!_rw{fm-SKG_AzJ+uBIGgM88kIsO5ub65&UJh*RGRIu#rL>H&!c@5Dvi!y z3-X90GKET`GngUzoE+anluII0s5Cl*$(qzA5J_YTl}2YUQ}p@Xn(P?a8X}2Iq0;CK zCVP%=YjGR`kwm7_=nN)%kzeH#h$J$FN~1HF?A4m4uVxLAM5a(_bOw{X#kZ|HS6x1d zOrg@~3}%-*;#(jNxnv5JMrVxpJ_*xvI^~fmR2tpBA*MaP<=wTg+ef2#{PCPzzsYr+ zT+ivP(rkCOOL_~JL!x4kUM z&#mJu={<;XaU3yIs5En(VLavS#)t8BO>fJZe7>_@47Q_jB2%a|y8VM`yvsYpo9)Y% zyzkS;rVg8NAd<)wDvi!yvdcfLzZu`T1U<2^hV-_Hfk+}#s5Cl*$Fb?g-WB# z9Zb2q?L)kY%V9m+;b)&{oR0LC#UfU*iJf6Q+2tMLdUIUD&2dR&%FQ~Oac3~)?c#RV z=iPC{L^dvB6`R<_Ax`2$&Oa(3@mn=1<|8-YlAj-S7C5-W|)V6t;? zYj?)z7xH0WnpC_5J}H%eOIy38BBH#ZrpkBtvDaPBR+HC%EHP99RiU=rch~g29urRmfvsUa@PkNfk+}#s5Cl*$ZjLgGu}*$9Gzp zLbct*E*3u{@l?DfmG>+b>dEha#V&5=@)3w6GKET`Gng!w^0u;FtRa%f6e^9*V6t;q zbG??gBNoujO z5r`x*g-W9{nCu+fxUa=)Qt_Ik9t$fQfk+}#s5Cl*$4hr`D;t4GqCe}3mG<0bFxfe{ap%FesJ7qB zp1E*kVPzu_NwjBeu|CIi29uqG8+RUj!8iQH z6rW4f=E}m#Mj(ZjLgUQap zjXMu6dwIX^>ansBh$J$FN~1HF>>S*1@!Cv!jceS3cNxs8OWD1q$JI;Qt@7u-q zp+pjyLZ#6eOxA1ldLf@kB2%a|I)lm1;(OGUjX)%kDO4Jr!DQ#)x?0c5Mj(>N6e^9* zV6t;?TkG3p^Ih(y4l5ghNFr0HG&+OH&cTiQR(&qf6ALRFfk+}#s5Cl*$N6e^9*V6t;?ZjLgUQap zjXMv{&9&3iWMO3^5J_YTl}2YU**Umz=fSzF+0|rWWg`$tWD1o=XE510xN+yf<@tLJ z7FIR_kwm6YX>9F4ND-REw33KqQeVR2rSZWar?=kI!mBr=6cqcfQ7Z1?&e?(#`w3YA7@Fv;ub zrL3n%72|e#N!#g>DO8%dzMZ~@aC$^iIK5=Ch*fNKhV3n$9wDkDCNYbJN~1HFY)LMW zM5a*F>7|LCVLZh(tDWVGQA}bM3zbG^Fxm6z`&t}>P^=-5ZCA00T^! zN#yF>h?PdSJ;W*Q;?|s(rhbzzX0cF>o7lx6PPVQ#kwm6YyIip|m|e}G=8#7=E@Gw8 zZI5yK9;f}&F~vfq&C~ZT=G`21KYcGAUs})K^Ll<1Dvhw6A8|W>PhzG}X>^8tTaZU2 zkttLfoxx;_a)~4|g-W9{n5;?dB%eqkQ>ZjLgUQaC9fLq5kttLfoxx;hE!Gf-Br=so zXE51Wt9$~HM5a(_bOw{Xo?q5>e%YEeL=u@orO_Eo_Gf;VPb85kR2rSZWE*GKgIp4s zLZ#6e%yE7RQyz&-q0;CK(rzDRKYy>Z{rplq_Pkskg}Pi`!g_g$>&10*d1MNeMz?Q> z+jemcU0g%*$P_A#&S0_z`2-?~Org@~3?_THysXh00+B?fP-%1qlbtnLLm-mK6e^9* zV6vyn%aSkO*K8euNFr0HG&+OH&cRajS*#@xNn|RG&S0{0uvERW5r`x*g-W9{nCu+Y z@tSo6B8g0)(&!8(J8QRwKqQeVR2rSZWM>`L5Qro)g-W9{nCxux@;yxXBr=6cqcfO< z{qjBT^7hM177LX|XOIu`)Z^klCU?2IPOq-h>r15>hxO`Oy}DNIqflw|_4<8?+a`}l zB2%a|I)k}gU)FGS-;+-ykttLfoxx;hjgCPelE@S)jm}`Q$Lq_ItYae(Nn{F@MrSbD zIaso_Yy={SOrg@~3?@5AcHCku8-Yk7Q)zStlbwU5TE|8plE@S)jm}`QbFegP*$6}u znL?$}8BBH#)_!%rw2nw3Q>ZjLgUQZ19E(6CkttLfoxx-ujxpsENn{F@MrSYyyK8Qj zN2X9|bcX%uxW44WKCz1JxVnbrFUw0=7Wdi3eRgr}F0S3hwY#`>&C}@X;@Vwawrz3k zF0Ng9WD1o=XE0gA;yx>%NFr0HG&+OH9@LNWi6kEF6)m#B#|jp8lAyp=U^$0%SIrQ$W$7g!DQ!Psn)R(h$J$FN~1HF>>RAkIs%bI zrch~g29uq&TSFj{$P_A#&S0{$4(D=MLnM(YR2rSZWM`Z5i6kjp5nZvb$!X}>UvyVkE`o(eF@v@^TFyG^eqjAN~1H_!s^;vU3>D#6e^9* zV6sKIL=u@orO_Eo*0g%RD4$3oQ>ZjLgUK#`&DLaVh$J$FN~1HF?0NNCt}g3wOrg@~ z4Ce5hPI)9Ug-WB(^<|KD*TQZemG&Ha>}m7cq;30NsK$*LHqX0x3YA6=+e?V{lgJb* zjm}_8@{&9fnL?$}8BDgkeGgeKiAZjLgHYs<$W$7gL8$hV$P_A#&LA{7Br=6cqce!z zelmqhqmzbt3Y9jT2gfe{-`)T8Z~ygQoR)w3|Ac@3`sar~zkdGw+rRz!^Y8!O`1JGV zbLxjbewhF9$t&jn;UA=$|1$q&{>%KAdBdNd=KuFUiZ(vYf0`G5zM6lP|7!l##H)G# z{XCgJnLn97ng6@L`=`VD^M`(ZDEdQzACiBy^8Di;|F5xm{ru3+ulDrwLq9+C^Fu#B z^z*A_{rvcwzcDtipC9`9^)U4FLq9+C^Fu#B^z(dZKlJlMKR@*ILq9)Gr{`Ju)ybDX zzx4B^pD+FVItBXq(!kgAVE^mC|NQxX{@c%=|MR~(HRkp6rJpbTeCg-csnXBar+NK+ z>E}y7zfPZizV!2@pD+D<>F0S$zx4B^pD+D<>E}y7j`ZuSm=T}4AQFP!5NA{d{WT(*Zvf|Me7E^eN%f#;1Nh_4Dg#)6b`VKK1jdpHKZfpUO}DeCp>@ zKcD*f)X%S{_t&%ZJTuR3p8uMEKIQs()z7PbUiI^;pI?`OeqQzSs-IW=yz1xIrJ*rNJuljk_k7=G)%=1}#o|$Ji{(W9*`Z?+6 zq@R<1PWrJN^ZGgI=cJ#Lew4(#eop#1>F1;$hrzslPWn0N=cE~j#=L?ji%$~&Z1PY1 zkw5Tze#ZyD-2FBY)uc{EiQP%Wv2@{h2@UNB+R?`5hnpmfx`d{PUmx{PRzL x`qR%p{_&4L|L})D{QUjzfB*A$zx&7z+eK9^_UV2^550NCGtAphpIz3*5*6S|A`?pbK;%T%ZeF zXc%~%er8tp|9<`Y&7UEJpTGa|i(lc}IfVay`TfURdEx6n|FZf0_5Z(r z`Kv3_5dNq_xK-@7*?0m)Ke8c2?D?6PX zdkbcJD<*pzMteI(dwbdK?b=^3+g~x+-!R(WG1!k7?8lNBWaJjiaw{ge4WrzSK`x?~ z>q};oky|j!t(fFCjB+~$xrkn_lj}-ul9OF9%dVJYH;l472HA*Swv%mT+mfASK9D--c1&jzM2UudmbB>TC4X`YL@v-)+;QYr(8*#iVP)sB6cdE27uc z>1uT~x@ujOuAu9->(RAf*0o~NwPDn?W6%}R>*{p1x*A=zu1Z(Xb&Gm*Etqw!m~?Fz zb?q2*MfAElU9GN0SFNkk6?8r5SupEaG3nVb>e(^qiRkrodRje=o?1_(C+L~wS4{F7 zM)@6sd_*tb$+z;2d@Wze2l+{E!zj07kc;T$I=NP^k*nn@xga;%-!a&a=;I?Bge=w`rCf{ z>4)z_d;Rwx?$=lLm~i5NaT#R~**u$P^K4$$l6mqZnJ4pPUZSV@X?}WfnxE#S?l3>h z5A(y|F!ys0=D|Fe2lEjAd0UU!8)c+-#A z-QMdil`B(h%C~vB<$Ml42cLt_!RPuI@HzM#d=5SbpX;N+=iqbjIfxwI^!m6cI|L6) zhrz+e56t--d=5SbA7hkHOu0+t$`l*l<)g+Y@CkeZpTI{P=6nL5z$frg33EPyPv8^y zcpI4W348*dK*n3cTwxFn7C#L?@QydU;swum!Xx|}zK2hI;2m#x#S5PCghxb#Pki7V zZ+OKEp7Df7#QW#x=l$d3~Xeb@1Qp7!I~&kyJP1_eYa9ZHHk6dZ@*&@#3|JH;uKbC{vjG_62jv=TFx zkbu_e=qrWZ&WMGcyYjq!$%)_7&SGhTSJe67I?u^1mMp&wCXZ+&%^z2%`t9}MZjfA?TThuhm9edxu1 zQpJCzfRG(;ZFanN${qto*OT&46}K=Ix3#aY%TV7gO?A7}sH)ptS={bIahrF?+k)~~ zT<;px+N)ZJm$T%YftYy6%qG3cLC=RNBYgX}HjBmg8++j@P^H zcsn1>FU=v>X08q9z8a3^l$-Za-`KR*`BWQYaXYmr^mWLKThSNS;&{3hr{Z=wSu?uT zSlp^Zahs0S&{pkrDCMhn%4N>4V;8OidUR;JaGTn29Wk`w*5hJ4=k_#o>aF&moP#)w zI9lI4Ki!6*mJ)6O4dy0XrzYI)+S7H~73OU1(BrPK7TSaUM%-M}L#MArz_jGIpsm4N z(W>|@x%JMkTUXtx-u+B5+8g~#pAYM)zRo2rjOg^Y;zKH32Q-)pb1cGbK#vYB0><3j zbM4BLd%7I!Tj#oUeb?rL3YXk0H{b3K*iwLThS z*W4!8VPD?1wive28mZ3+`Wn>wm$tdhSoY<$I+V8>OJ58Z_r2)K+u7bf7Ws7=i=h!$ zV-4~`b1Txb(U!MUD6i#c9;aeB4=49hp8O^0iL02CZ+0!aK1FQXg4%M}6D|50J`_uK}zMYds z!B2dZ@(OE-BDIMt(i(W4Fa7a$Z1d}^KB4x^G~#M3xqF+tS18RTH^vL!jaS)K*Py+@ z*>irX>8j5s@fb0nM~4;x4aTEAbkv7!bnXf12Wsd;|_i#!jjgXz3fyRIy14c|J zd+XuMz2y0A;yt4}R<{~0&r5IZcJ>#hLpe;dJGnUs&I;&2(vlepC&ddB{zodFu4rltM{H>|4cct~M%*DJ;)@q|y z7S(OD9%s}vD{MpQbBXrpblV&McF1p~{H?BUCw`mHj-&g#wdJtbTPu#~JWqR@UQt@h zv=6nFa<;0zUYw@~>r`9!@{nKGy=Pqg;2Ao&@AFh#OTOp6yl#D3BlDk~ohapRr87%? zCw|$b`;%Mu(`{#+dhO@3x)wg)2K5osTwE{4v-5em^I2KSUyIuPciv&h@@uc`l&vx- z!_K^ERwr?b{eodRT`PHOZtuG8&>~=&PxhnhoxLEpSC+eIFMJd6j=6nb=M z5$xr0vJR8yN7*S`%wxr;@;+d{*q0ag^*p$*qj_uJYu~$Hjruw`caV#@luqKoY#%#xA8u6*Ldcu z<8W7bU#O3_%9`Aj+QM-t59&dCaF4@jxGP;Zr|Yg!uk2szx~on@WBpIY)YxxJ?^*5Y z;bgBZr*hcr|ATo=$8tD|uT!kG&pr3KF`e9tQ#y0fbD_Q3W6E!ZXUV6;?Ii9b?x6pm z|736M>Fl3d1AEyXTuXPt+#2nWGrAsJk14(m!%znATfzHR z7{RlplhF&=&)JNs0e@e)mQz?IL-N)?rWkDlT5TixP}4DD}|RPt<+Un>2ZB&0DY+r*KFvQMZF z%0W3Qr-ax!A%98GTX?JqJ}b{9VGN5g%?V>{jlD7ET740>DAyE2YfPS~Xq2I{Jy65* zTza0X7F{*ep7Ca=hJbeTjH8DeG>n+E&sfE;;x}3wt&P@NAQ!LfQ%Sc|AJTO?FSHG* zooAECVQM+EUx$}yHso||G{=|hk= zp^-PEl{X^Do6yLcQ?9vm@@*dbSPX*v361<2wfqH*yjsqZ@~lNCSFmSA9)jEnjocZv z+y%Wg>%<$JXH6`E_z8{p8MXKYRf=~%Iyn}?b0;1_&V)wJj9SiuO3sSj{psXcXwRP< z1bGu0c{6Hx3o3alIyn~Fz88-mXF?-qMlEMSC1*t|c0>?6p%FWy7Q3JlyQ0xoYhTbG z_+UVb5y5?EP+QN+T2^Uoy~709sT|<5xa{B^v1m{upn}ik(mQUMi}N{M`FyU?c-IbS z_vO%`$AA&D_C?H^NT2O;&os~U&h*c;H-0PcmG`2Yjc1%_pht%`)%Epadi|ZcP3<15 zYx4kjew1jnkEzcbI{h91Ypo4!(niofr5OI5IGf)6(}y5#LZg39F~-@6v$^dHF$m%& zG~#CT=G2L^dF?eZ2;wF*;%3w-&b&LZHmUt94ngdMM(m7Q?1J8Ucj9eM&xlwA@e>;H zGivb*D)DQ|aeq2_4jS8D4uZT1jl3DPyakoK6}@}X$#a7(gB%2T6B>ClYIzGPc`JJN zvXeKUl{X^Do6yLcQOjFU$y-s%+fuH*(8>3YCFhS^1o;yh`7>(y3o7|5O8Fal`>B&Z zpp`!&$e+;2pHa(SP|06W%HPn*9nwCPJ0i%P(8!%p%Uw{(T~W&2(8?JRLfZ%WP|KZCzQ4z`GdHaWnvt15qo)apb zGfJKdR-PNbGd~OO^F%yqJ`*ZFGfF-SRz4e#GmnveMRUeVYom3hHPWf%&RFG~#m~mD zq&VK2*qO(Y`e|=TH}$zL{Oz?&4Ea#_yLQp}JGwFt>F??AclA>${oC%OeoXaJ-SyG+ zAzc^ht`DyFt_#-(*L&ARu2e5hJaF`H+yhS7qxE~)=_U=evL5rH!sL2# zJ!45|Td^7YX6$F>+1M|}eKCd$?+f3Hv7U|RY#e9)TjEH|cLM8yPQt%oXI#Wx3V+`( zPjZz0-F?oL{`P-9DgB##OQmsdN2R~5_jEc8Xb}>$8q^8;6-u5vy1Vk|qu$(8>EHjm z8qLu$dvZiu7aa5*al%2&5hwKK)tgsuj-9%P*qNxV&4cC4QrG7YaYp9OEN$lBiLvpW zr`l4Sb?U@A#GH}Z5X4R?-WqgrY*=TmJ_I>a%Cp9uTnDH#QXhic360!2EzJ>u=7fgkjGE?>bnS@R-o>m{IdsQ1MukkNwy266}nWgTQM-!)r#( zYeB_pMagSRe)dAgb3n^;MBq80;W?w`xuD{?qU5=u<15hlC=Y?}gof{on(u;&?~0P| zhJx=odE1X2{{b!k5rO}NhX0J3|ALDDijx0^g8vyU{}F-zgogi&nt#Q6Mag?Z!TXGk z?|_!?h`@J3!*@o_cR|H>Mag$V!S{@Y&kWz5Im5*9DwCITQ?|561lkiC+B0g}3o6Ry1;E)N&S7a#oabwlpqnD<Caz_bta$yrlgr%&z-H_krRCwE0BcT4%s zr;)}Chpu}mhQ^AH#+Gz?F|=mbg!ZWzS}QtQ8(LcDr01L)Y0emEF6e2l=xAho5j~NaIfAbU1V@1bf zL(Aigz@teXdpUe&415;!d{%UPHne;Kk0yCc;`z)lDEm!3pA{XS4K1I*qv25}58nxo zd}a)M7W8~pbbMMKfk(rmP9C#(J~J$?&oc3RR&;zew0zD8yc%9LuZq{eV?objMaQG% z5qLB_Y91Ajk%!ITvr;Vm6&?KzE&VeB{f2%`zoK6zeRJvQceGpDfp$Z?rd`o4Y1<6W zKru91dVy9$tEN@aDrpt8dRiT=mR6wE(5h)wv`Sh9t)5m#tEClaHMDA46|It1K`W=# z(Q0W0S`Dq5Rz<6%RnW?5b+lSqfmTDSrd81@X%)0`S|?g9tw5`xRnw|ym9z?4Ijs|| zmR6wE(DIjdXO0+J1+ARciPn);pw-Z-X;rjJS_Q3~){#!2)6l8uRCG!@1)ZGEk;Z{W zEx(dq$}i*}q2+f*;Mee~c~!hhUIVY5 zPsgLBA80qUYuXj1Mr59*5v}#%vt&&zjtEbh`YH0;p4Xv71MXRJ$(CTS* zv|3t$Rzs_%RnaPG6|{0%9j%sDpw-Z-X;rjJS_Q3~R!6I)6=*fIYFZVol2$=0r*)#$ z(h9U1S~abTR!OU%mD4)WYH0;p4Xv71MXRJ$(8_6@XdP(dv%G zU*%KlmOI$AjNerT)FR z{q?Ba;grbtzKg^O$Gz_#_u_WqcC>clcH)rl#No8N=Et45ow)3}FEVkNxa@jTp7M-u zCJx7pZ|1wr1NPV<^WEhEd+dBi>UwwZyM%-9Gm#y9AAj&YrhYVuY_DxEW~Xg;ZIn&6 z)3y_r@-uPp^E*Ge^S%DT?>-LKLD`~{-=fDrr<2!aJHG+gx!!5dv}Nj<-veZRBXICr zfrH)Hcr%Vn#_xr9?ue9}YI{Ar~ zW^mn$@8oqfT4iwEi|yof@>*pux50RxW3RsVJ45S$%aHoA>o!`y3A1~FIkC7W7~#RK|Ku5)ch`FM z%p?}i4ccXAz3hDq7%^c^h+D8GCePeNZ_ccrXDqRJ&d{Pmzhr*Lm|4e+hP|&oi(9bH znRU$kj>KL!w$0ei{lUA!!Dp7TJopS#)(4+y2cPE$pOXjgEC-*P+6!^wn-nL$RW2#M zIr!YwE^nH(D=*>TbNS%>Jb0IqPbcK^=`?g!I<0b{Q`4F0bjpcNkTcS0=$=pFl-p4p z-Sr?Yjc{)KZXQynFAKyCp@$Hfy-zxd>?UP>`znC$NUyc_Z??ZIO z*2$knm;7m0$=^8o2drZJ7v zcmpQmZBm=@wrRZj>NH+um&Pl%O5;`bX}q+{G+yP9#>>0lc~FkZ#n^%|&*{FVai{yL z9MgSG<4*Tg*&BZ)r!)Rud6rw!+$p^zcz30n#?5n7F2<6laU0{LoYMG>eN5w5AJX`h z=QMsXyEJ~~mc}o4pT@6T)A(r~()g828b7aN8ozQjw%iz|Gyo_N|&c=31^D^dHIi~rU(~#ze zKFv?LrTOXGr}-(@G(S0qG(Y8%=11$8=BJ#~{CJ$w{E}CiU-DK?%F)7__>1Efu z9E~(zbL`W6QKk86>(YFcb(*i7HqBSrr1{beX}-!eY4SXz`6`#>X-sn(gK|pqHRdtR zS2>u=(VTj7T+-aqe6gnaYCEL1)R*R)V$*z;bDA%WQ<|@GO7o?ir}-+!G*6y|ayABw z=5N(8)_~_5i@ozl)N8=kmn8imv zmBpX@LKZ*pyK*17CqDl@FN!bz;7j9co_QcX@BK@B(Z}wIFa7Kb;w!%Ll6Zbc7GM1H zS$x^2v-r9%Wifjz|0m0seX5Ju7nk^vmyGdqkFD|d-u=87-}J}g{aF?tYTNi9mH!2w z`q?ag;csQ}%b&~Qzy3|v4`lH(4`%V7{%97z{;n)O>iTEjmc@_%l=dgG`2F{0@tuDv zi%+~Ui~sX0e=k1r>U-jQ9(+-J@{#Y1pZ@7r#t;73YvZTi{r&O3{-=KvxCFe(VRnBR=!am&Zr{+#BM1|NM`{5B|(!@uMGlSA6m>JsLm$i|>ukeD1^X z_y7Grh<;NRFY_2*_`(;)SKRxe_?qwj6Y)>K^4|F1>s}Gx{AcfrU;m3g82{x@J`n%v z!w@0?~PA9@kIRLAN*p>o_aE_?_cAyzx>U6 z_@R63o##J4e&QED6<>eIeUHb> QeLoSO_wp}%yV&f10c8kgt^fc4 literal 0 HcmV?d00001 diff --git a/assets/world/structure/natural/pirate_hideout.vox b/assets/world/structure/natural/pirate_hideout.vox new file mode 100644 index 0000000000000000000000000000000000000000..6cb1138df2d89a2166a447fe35ef48f4d7b40b34 GIT binary patch literal 47976 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 F{{;vS#w-8; literal 0 HcmV?d00001 diff --git a/assets/world/structure/natural/wolf_burrow.vox b/assets/world/structure/natural/wolf_burrow.vox new file mode 100644 index 0000000000000000000000000000000000000000..ec84d5170ba0c82f8f9a3f93f574ba56806a752d GIT binary patch literal 13088 zcmajl@9%y|c^B|=pWo-qoS*m2Zv{juT}s&Squ>g~-Ildo+AVIOq%0IoQv?F5m6)}x zgr?mTgM=1VLTysr(uN>bu_fD$rVo%biY90(Ha?Ox)%YJ6ANXW^U0--07UO>N-Z^LH zeZA+JYp$6y=iHySz4<3z_?fDz9=z{?A5~QORaNzt2OhpZ$BqA<@h!ytPrUu%2mZ^; zqqeG^PE~cC+vz$tQ#%dHdOD|m8k%7mVS*W!dYFcGn5tEK-%j<~O{wmubf`aZVS*VF zWc&mh+Z{Hxd!SSAK8Gf(kkn^bV1?9<(}uSX!&EQbR1cl@QTwP}+nx52hB{awchiJA zZKL)9`f*D8I5k^0U8j0Vd7egg6UKK zA%!NcaE>u1^=V^Qb8e@%*VAQdCSFe?+n&a#ecbqOKH7Ph+I5&ZanLe#Gw`L;cgF1r zZ>wv*9(yz0x_a6c@xnRkYEMy*+p=xhw(48=T%pCUMQL0!US~`>{Mt0=|K#u`#zwC{ z`e~I*jgd8cY7%5v_!b%~Ey!Y<_hC8?af{sO%!$rsV?D=qI^@7%K6ie1`siVZQmlHh z>dnyr{lW)6t?W1PBPkEWOJeNo5AirgIi(!&xH56cD3g5epoIqN=~h>ylDSCJG4=b= zRQqAft1ga!SR7Jl$T&-yMwq}b&6R$|#jy2beC`+XbF{s_>uE>bX&ByQ_+sx`Og7Fg zoL+HP<64brHBZU74guNJ9dkDw=5~h_cW1LHv;10M4MeWOMrYCYVW0>7%KAR!bQQ^7 z)zD0foZTYNl?jgEwBmJXr$yiUrI}{^FXDA};?s$bd^s8%@!w#DT`q30!Y(H_SfP!0 zho-oW7k1*j%h6pP-s;P=Rn@e@0t3{S3tkh;P0ra<_|c!%|D~EPO*PGYT*PG)!*8XW zzQi%+-MkHQu0LgNEv)$ zcZT1){ZZMU_5!)J#G2;7EWWq4p4N+bu_hNey69uUvGAvBBbVgxF1LH}3};9E?$+=c z`DAUa#&~S4F_=4fYHHPqbF0smZ|3(HY3pNPKf7Nd#z#da_5}NHds$m++<3%cj@XO!rq9D3v1WUieRhr9&XEt*KF2eF|F!FJL|m` zlPxz>W%KXtb*uSX^%If<-!JB+N{uzuPZyo6a@RD;PxB>bCfq8SWAl9FPj7DtH!sGp z=xf2Rt(V346D(|Y<2~$)E4#+{R%1Auc53-}k(fiQ;X4|}*yx+)Y8@T&yEhlTx!A>{ z6Z=zsoccaIxUQa&tDNm3XFan{&!JjhH+>!AFmr6Ux$gLKYwQ^YDdx4@-uQXk$vM78 z{@Ig8u^h#+6^y~N>W~{*4pyNjW^L@}+G-EPMn23mH|=YzAGx^2+Lh1QJS@go3w$Fk zg2ld`I_r89@1s#48j-d9$l|u~WfACIKMVVM?(OCJ^I&ZGf6Cdzyj%zKsNBV7G?v!7 z9P~f%d%LsOi;=M(;=b|!hA$*jN24{Tot$s!R>K7#Nq+q3=WAmHg~*Zv5Wu8!Nx}SX1;HV{i1)=%X^cvpEUfr+TYH| zv(vuje&^rLznxuAyVv(&PIoxv(J9|fYw)xebm5o!BjOV=V|(S}5aX6dJ9IQpF+4qQ zPW#g-#}?*!iIF-D-*w;3Bb&AOuG2_$e9De1;l^<7rjMtb8xv1YbR2}yB z!+2)>cCpU+aE(1M&OQ3<&FNrH2lFvR%=NX$S~72!h>$Ek*l91g;#~P~ z<-?T^H$L3>Fqr>=53~MTbKQz}U;Xb~K&$9QUJZbs1*$8FaqS>NCV!#+;SvNA)_}b+(UjA7wo1 zJ#OQXAFm*enfs6+!=eqmpzSlHfcmV=%0;H@FQ)vB)8@GE@^}c{$Rpeg z1MU*qI2oKY_D=htZHabu3s|9hKf*j%!OB4y_erU)&q~+*qIBJ_O4ozZgLHQQ*=OY# zB@B>Y#aZ!Jyp{dB4g2DHQD#Umg9pSu#oa1+52r-e-b-kCnG{ES?N?)& z`RWBw9OCpGb$I&q;wi4`a5D_}9X$t2^QIm@L!7!VV{7i%uuCwq%P_E8qA&am1O5UY z%H~@=ZiWGO34Z9R&oHQ8;I>_++vdH>x#!YX*5$=F33Cv*nJd^*zi$~9SbMLX(8Jiv zEp>6$yYf> zi95I+lzo7G7tmiD;Gd_~-p*hQtueI5a4g+^tliGZo#Q))cFyiP-#6v9!_n=la#b#n z1827v6Jk5|G-zJbicVjV2!%Q zz4}%C8a(%_`z7x6w**h!qAsgjT<5rEo7`vj$$e7J%30~qZvMncIYx;$xE_>!fNd9` z-3IjI$z}e)+_c8h8cWBf3%;^dwrrXJn}&@O#9l|q&QoV^*w(Ha_O(2LwFC0r$@y8CAcK!2)<4Ln(e)hn@kXX@j(RyZYMWuumZDuQdMmVl zsKdE*_D#AY?hFHNf*v;qU;d74W{9`FOKWYitHX|8WB3FE+XOw^3?17g?5%^5#tZ|E z1Wr6Y6;!_8(Q_gj>C7`A_^wyiKFEk8n4{749QWqYTaviBHfN)@83t{&Z$V!2#7Q0a zGPu{i*?IXFe|0e6Cg|~-Xp<)+n;8Z+3F2hf__pMw)qH4!fo+1GZHA8hWws{e+el-E zfkuL!Mus?LUJ{Oc8fnci&`QwL%FxkTV5T$BNYK;B(9u}H$8mFm6M0D^K~Ez?M`MAN zhNq>x#KB9@<7MdZ7Fh8-RphNU?HM}l3#{7BhJ041et|XG+^?>Ww)F`JI(ZVg;u$m= zzc*!b6561w*Gfwmtd%o8qjv=g+nGc@#j`rgF6cFQ&T zJ?$Af+6h|P85-IP)U?;o_q-VN;Rg?M%mzArBxv=Kq0z?zwSETuj46=-@?@2Z>}e!uX=G?-^Wxo99bDBNQE!(#wH?|v*tOjn^}bo3+Hb3C=cg0z zz}sn5$6Tvs@&LI*_>>S=$}o3lTC($ z-Og@>4gbVlbK|U_KK#JVaNsVm z_o1(Sg)Q2n&h^py=Iyr_o5OygW08BFM(IrC*|zzPY$E{g9iCAZuX0ej*KTv!H*K4` zP2GmO;ceA$Y!;jaXVJby``9Se<19D}&T7psum!Bo z1=fHszw3an%;D=6rSmz>%r4W-G%~$>hr_^~w8Vl%BP05}U*(u}S)z zuhuvu$gns^CK`!Gy5o!Q1>Wfw@Ae6-#JvG0qrI_~>VWlB$2zuF7rR)3jGL9Uyszc< zMR|!*9$(~XrL3ZqUzNP6!*`vSPdPHeEEnU8hk2~cL2Z51)=(3$)>>t& z?3A6dSN6(5IVi_K6>BB(J90bnFZ!sc`bWP?kYRxpy!TYzUoY|g6Qysp7w>0ve6v+H z&_WmRe%C8|hr}i74uY5i64!j-b<~(=BIdN{rb;UVx4xAn5=Dc{tIdN{re#JR)4xAn5 z=AG|~bK=~@=ZbUU95_49&3oY$=ft^*;T7k^IdFEIoA_RFPMn)KUvUzgcn98&x59>d z#XWJ4=o2@=iJRfT-|<)2@K4+WcaOgDG8}jd?6@mz;RoK1x59>d;4QG@t+0hI&I()T zMZ3C19xlFHE$SC}xcDxZU1!%>dyf4}nWCLth6IZ~Gc0m>;pbwH^5x%I2&^Z+U^p+i zwyt}1W7OOCdTk^4`tJOs&N}XKM(A)HIGl0R;f~PZdVqWXX`H9Db=ugB(6RBs(z!-k z*x4_8wj*?GJ)oUuw1F?`9zgIIG}6LnlE^ zC&Pu#0yCXNC(~Kz3?~gbBY1OgexgBVhK5dpnofobodpt&Ok<(3(imy@(d*7mJF{=t zCaBqFSi+vo!e(V-0sA(9=U;*vH^UNKycKT?-W3lw;by!AXT@1@Hk=)2#z{CCXTe!< zHtoCiLwnMmwJ+LN?VI*p`=LE+TePj(Hf=}fx^9npZ=eHL`$eCZh^4W%>{`4=*(kfX z)=#e-AYGv5mvUBS@I$|!^YjHHtgwNXK0l-5ThJnTcJ&hG?^5U+YPKJTb0^Zoofw zpCNu#?%8x~S~d-vnoazhJA5_?Mm8A+HhyWf_u;c?*wkz;Y~~i9O@fh4hJnojJv+bp z+4I=2tJz)H%?%rN2}X7q26hYd>^gRS`Lw^WVRvCS*KF7&7};eQ*e%erTcKmyvh|Co zeT*I3Sw1?j$YXYFGYo7O=-IB&v2EElY@M3yQEb?y$YpjJ26hYd>{jU5ZP2o9*w$>F zjI0YBycIgU4O%=e!}d=++zalC*Wql?;&|D%_G;@K2XE8fYV&c#`cxkrb&dNY;ChYq z9yysVascv09$e(0YbU2(-5B+YYi%QR+WdfKPSxS~D+=?fE_kat+z~ole<)zSFV>m1 zK^vP9;#YV-W|~)RVYg{xJ3`0SVM|_VgNAJi`yPkJ2ptUvLvxG+O=#@e>5S0PaZr=X z+M%J7pbni5kJbnsEr(2Vjt724Ht#qG4n1!n)+Y|M^k!)2C8+6TxP)elPj`flt^=%m zz=wuz0>3`W3)~Zz{s_J**~4(@&(P3MP}9$Fp+7YE^hfCEJ0!~)d}!z=sOiV)e5Bpc zb?CI#aiF1_pr)JQLU)0l?g$-S2XHxt4-MS}HQfvs+T#_6c1w2#PXPNa4&4kFx(jrn zS>q~Onlm&s6Vx;_I27BH)ze8Jo9)T$>8vzbw*DZ@8pmOuAhTcC&TJFg%x+<`vT1^U z(Z(jZ&iD)dil6W^{(`^aZ}>BA!p*n~?uwi77Q7X2!%H|BXTe!mv-TUxp%_&_UajhKY%DRG7SzDF0<$83jF8;D=$gZ`G&}s9sW8J93 z8NpvmSU2hxb+{vRxL$~?C4XZT{9YTI5jr+ro~#pXVYg~yJ3`0S3zhY$4Vtj+w6hSJWjVb@zIvSGF^|#4fX2*sbhlHi=EfUvO94gqQIaycKW5OL!S?!CUdR@C$Fj zTk$r$9WUc8cq`r(dfGSbyY?ge)OPs(arpLe_#SfjE_C=Na`-NE_$KsYKluIkRqZ$b z&b@r?v*rK9e|_qg%Ky0C%2&SfV2S_!*#p1(ZFtA;K2RQb=QrzqMB9GvGt2AV`Mu@- z54@q=_2fOJy1y&c`{z=9_AJ%EerDMptje<%B|{;DjGSLOQ2syy?z zs`BawQ+d-PdwKZhujTJO{in+tKU|fEK3$cc`eIc+^apGodTx3C`(9LD{Nb0D*F1G^ zdEN(a@!t){gTJs;WG&Eag8d|2us8XRGqXzh9NFe7-9G?sweZTb0k=UzLCH zV^#Uad#duV`=5PVRX+LC>L0Dj58PFicm4UQJo?6}{I9S6!}8FppIhE{|BK3F4}Ev} z%)4J%KK$daEuVSs50od~eczq9e$StMW_kT9Ur>JdFMfA<_uF1u-v6emJpPkadGc>n z<;%ZZmDfD~x#fYEzPP;eH7_q8eB(XkZ7+RhdEcv_S3dEB-&LM^*WKmezkFYL|6l#l z^5LI(NBQ_i-cug?8xNOH{^I+~Q=k86`Q!iikBh$rDbKzh<%KVNVR^+}FDkEj`JXF) z;gxrl`(OWx^5(yEPx;1Q|Dp14e(K)xw;#N>{MZ@dHnmnuRQ(4hsv*i{Lw!#{$GFO z@05?e<2~h(H@&sI^`86w#Q0yu{!_1gvfTZO&z9GH>=(*&9)C{x>Tgu#58qLh^108I zyY9NHJo@OPMk33iIJpcLSQ@{A>@`l$vQGWX4A1%** z*R#rh_~+kMo__c_q^4ni8_uhMN`D3nBBb5JHny**okN)L1{re;N_5W+P r3h%75?^yoc=l, + Vec3, + Vec3, + Vec3, + f32, + Vec3, + f32, + Option, + f32, +); + +impl Animation for BeamAnimation { + type Dependency<'a> = BeamAnimationDependency; + type Skeleton = BipedSmallSkeleton; + + #[cfg(feature = "use-dyn-lib")] + const UPDATE_FN: &'static [u8] = b"biped_small_beam\0"; + + #[cfg_attr(feature = "be-dyn-lib", export_name = "biped_small_beam")] + + fn update_skeleton_inner<'a>( + skeleton: &Self::Skeleton, + ( + _active_tool_kind, + velocity, + _orientation, + _last_ori, + _global_time, + _avg_vel, + _acc_vel, + stage_section, + _timer, + ): Self::Dependency<'a>, + anim_time: f32, + _rate: &mut f32, + s_a: &SkeletonAttr, + ) -> Self::Skeleton { + let mut next = (*skeleton).clone(); + let speed = Vec2::::from(velocity).magnitude(); + + let fast = (anim_time * 10.0).sin(); + let fastalt = (anim_time * 10.0 + PI / 2.0).sin(); + + let speednorm = speed / 9.4; + let speednormcancel = 1.0 - speednorm; + + next.head.position = Vec3::new(0.0, s_a.head.0, s_a.head.1 + fast * -0.1 * speednormcancel); + next.head.orientation = Quaternion::rotation_x(0.45 * speednorm) + * Quaternion::rotation_y(fast * 0.07 * speednormcancel); + next.chest.position = Vec3::new( + 0.0, + s_a.chest.0, + s_a.chest.1 + fastalt * 0.4 * speednormcancel + speednormcancel * -0.5, + ); + + next.pants.position = Vec3::new(0.0, s_a.pants.0, s_a.pants.1); + + next.tail.position = Vec3::new(0.0, s_a.tail.0, s_a.tail.1); + next.tail.orientation = Quaternion::rotation_x(0.05 * fastalt * speednormcancel) + * Quaternion::rotation_z(fast * 0.15 * speednormcancel); + + next.main.position = Vec3::new(0.0, 0.0, 0.0); + next.main.orientation = Quaternion::rotation_x(0.0); + + next.hand_l.position = Vec3::new(s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + next.hand_r.position = Vec3::new(-s_a.grip.0 * 4.0, 0.0, s_a.grip.2); + + next.hand_l.orientation = Quaternion::rotation_x(0.0); + next.hand_r.orientation = Quaternion::rotation_x(0.0); + + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0), + Some(StageSection::Action) => (1.0, (anim_time * 4.0).sin(), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = Vec3::new( + 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, + -4.0 + move1abs * 0.0, + 3.0 + move1abs * 10.0, + ); + + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0, + ); + + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_z(-0.0 + move1abs * 2.0 + move2base * 0.6); + + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6) + * Quaternion::rotation_y(-0.2 * speednorm + move1abs * 0.8) + * Quaternion::rotation_z(0.5 + move1abs * 0.6); + + next + } +} diff --git a/voxygen/anim/src/biped_small/mod.rs b/voxygen/anim/src/biped_small/mod.rs index 1188cb19f3..2c533da2d6 100644 --- a/voxygen/anim/src/biped_small/mod.rs +++ b/voxygen/anim/src/biped_small/mod.rs @@ -1,4 +1,5 @@ pub mod alpha; +pub mod beam; pub mod dash; pub mod idle; pub mod run; @@ -8,8 +9,8 @@ pub mod wield; // Reexports pub use self::{ - alpha::AlphaAnimation, dash::DashAnimation, idle::IdleAnimation, run::RunAnimation, - shoot::ShootAnimation, stunned::StunnedAnimation, wield::WieldAnimation, + alpha::AlphaAnimation, beam::BeamAnimation, dash::DashAnimation, idle::IdleAnimation, + run::RunAnimation, shoot::ShootAnimation, stunned::StunnedAnimation, wield::WieldAnimation, }; use super::{make_bone, vek::*, FigureBoneData, Offsets, Skeleton}; diff --git a/voxygen/anim/src/character/roll.rs b/voxygen/anim/src/character/roll.rs index 55302c5c06..fd176ff319 100644 --- a/voxygen/anim/src/character/roll.rs +++ b/voxygen/anim/src/character/roll.rs @@ -55,13 +55,14 @@ impl Animation for RollAnimation { Some(StageSection::Recover) => (1.0, 1.0, anim_time.powf(0.75)), _ => (0.0, 0.0, 0.0), }; - let movement1 = movement1base * (1.0 - movement3); + let pullback = 1.0 - movement3; + let movement1 = movement1base * pullback; next.head.position = Vec3::new( 0.0, - s_a.head.0 + 3.0 * movement1, + s_a.head.0 + 1.5 * movement1, s_a.head.1 - 1.0 * movement1, ); - next.head.orientation = Quaternion::rotation_x(-0.75 * movement1base + 0.75 * movement2); + next.head.orientation = Quaternion::rotation_x(-0.3 * movement1); next.chest.position = Vec3::new(0.0, s_a.chest.0, -9.5 * movement1 + s_a.chest.1); next.chest.orientation = Quaternion::rotation_x(-0.2 * movement1); diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index 12e6d8b15f..26b4c755eb 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -2893,6 +2893,37 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::RepeaterRanged(s) => { + let stage_time = s.timer.as_secs_f32(); + + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f32() + }, + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f32() + }, + + _ => 0.0, + }; + anim::biped_small::ShootAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + rel_vel, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + rel_avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, CharacterState::BasicRanged(s) => { let stage_time = s.timer.as_secs_f32(); @@ -2924,6 +2955,36 @@ impl FigureMgr { skeleton_attr, ) }, + CharacterState::BasicBeam(s) => { + let stage_time = s.timer.as_secs_f32(); + let stage_progress = match s.stage_section { + StageSection::Buildup => { + stage_time / s.static_data.buildup_duration.as_secs_f32() + }, + StageSection::Action => s.timer.as_secs_f32(), + StageSection::Recover => { + stage_time / s.static_data.recover_duration.as_secs_f32() + }, + _ => 0.0, + }; + anim::biped_small::BeamAnimation::update_skeleton( + &target_base, + ( + active_tool_kind, + rel_vel, + ori * anim::vek::Vec3::::unit_y(), + state.last_ori * anim::vek::Vec3::::unit_y(), + time, + rel_avg_vel, + state.acc_vel, + Some(s.stage_section), + state.state_time, + ), + stage_progress, + &mut state_animation_rate, + skeleton_attr, + ) + }, CharacterState::ComboMelee(s) => { let stage_index = (s.stage - 1) as usize; let stage_time = s.timer.as_secs_f32(); diff --git a/world/src/layer/spot.rs b/world/src/layer/spot.rs index 42c9aed703..5015e91846 100644 --- a/world/src/layer/spot.rs +++ b/world/src/layer/spot.rs @@ -37,6 +37,10 @@ pub enum Spot { MyrmidonTemple, GnarlingTotem, WitchHouse, + PirateHideout, + BigMushroom, + WolfBurrow, + Igloo, //BanditCamp, //EnchantedRock, //TowerRuin, @@ -50,6 +54,7 @@ pub enum Spot { LionRock, TreeStumpForest, DesertBones, + Arch, AirshipCrash, FruitTree, Shipwreck, @@ -77,6 +82,34 @@ impl Spot { }, false, ); + Self::generate_spots( + Spot::Igloo, + world, + 100.0, + |g, c| { + g < 0.5 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Snowland) + }, + false, + ); + Self::generate_spots( + Spot::PirateHideout, + world, + 3.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Forest | Jungle) + }, + false, + ); Self::generate_spots( Spot::DwarvenGrave, world, @@ -162,6 +195,20 @@ impl Spot { }, false, ); + Self::generate_spots( + Spot::WolfBurrow, + world, + 10.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Forest | Grassland) + }, + false, + ); Self::generate_spots( Spot::TreeStumpForest, world, @@ -190,6 +237,20 @@ impl Spot { }, false, ); + Self::generate_spots( + Spot::Arch, + world, + 2.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Desert) + }, + false, + ); Self::generate_spots( Spot::AirshipCrash, world, @@ -218,6 +279,20 @@ impl Spot { }, true, ); + Self::generate_spots( + Spot::BigMushroom, + world, + 20.0, + |g, c| { + g < 0.25 + && !c.near_cliffs() + && !c.river.near_water() + && !c.path.0.is_way() + && c.sites.is_empty() + && matches!(c.get_biome(), Forest) + }, + true, + ); Self::generate_spots( Spot::Shipwreck, world, @@ -342,6 +417,24 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { (0..3, "common.entity.wild.peaceful.frog"), ], }, + Spot::Igloo => SpotConfig { + base_structures: Some("spots_general.igloo"), + entity_radius: 2.0, + entities: &[ + (3..5, "common.entity.dungeon.tier-1.spear"), + (3..5, "common.entity.dungeon.tier-1.bow"), + (2..3, "common.entity.dungeon.tier-1.staff"), + ], + }, + Spot::PirateHideout => SpotConfig { + base_structures: Some("spots_general.pirate_hideout"), + entity_radius: 70.0, + entities: &[ + (12..16, "common.entity.spot.pirate"), + (2..4, "common.entity.wild.peaceful.parrot"), + (4..6, "common.entity.wild.peaceful.rat"), + ], + }, Spot::GnarlingTotem => SpotConfig { base_structures: Some("spots_grasslands.gnarling_totem"), entity_radius: 30.0, @@ -357,16 +450,26 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { entity_radius: 20.0, entities: &[(5..8, "common.entity.wild.aggressive.lion")], }, + Spot::WolfBurrow => SpotConfig { + base_structures: Some("spots_savannah.wolf_burrow"), + entity_radius: 0.2, + entities: &[(5..8, "common.entity.wild.aggressive.wolf")], + }, Spot::TreeStumpForest => SpotConfig { base_structures: Some("trees.oak_stumps"), entity_radius: 30.0, entities: &[(0..2, "common.entity.wild.aggressive.deadwood")], }, Spot::DesertBones => SpotConfig { - base_structures: Some("trees.quirky_dry"), + base_structures: Some("spots.bones"), entity_radius: 40.0, entities: &[(4..9, "common.entity.wild.aggressive.hyena")], }, + Spot::Arch => SpotConfig { + base_structures: Some("spots.arch"), + entity_radius: 50.0, + entities: &[(2..3, "common.entity.wild.aggressive.ngoubou")], + }, Spot::AirshipCrash => SpotConfig { base_structures: Some("trees.airship_crash"), entity_radius: 20.0, @@ -377,6 +480,11 @@ pub fn apply_spots_to(canvas: &mut Canvas, _dynamic_rng: &mut impl Rng) { entity_radius: 2.0, entities: &[(0..2, "common.entity.wild.peaceful.bear")], }, + Spot::BigMushroom => SpotConfig { + base_structures: Some("spots.big-mushroom"), + entity_radius: 40.0, + entities: &[(7..10, "common.entity.spot.gnome.spear")], + }, Spot::Shipwreck => SpotConfig { base_structures: Some("spots.water.shipwreck"), entity_radius: 2.0, From 6919f535d41d506a025ecfb5736d80536ea16e2a Mon Sep 17 00:00:00 2001 From: jshipsey Date: Sat, 4 Sep 2021 13:11:10 -0400 Subject: [PATCH 2/2] address comments --- assets/common/entity/spot/myrmidon/spear.ron | 3 +- assets/common/entity/spot/pirate.ron | 22 +++---- .../biped_small/gnome/chest/gnome.ron | 4 +- .../biped_small/gnome/tail/gnarling.ron | 17 ------ frame-trace_1630269013224.json | 29 ---------- frame-trace_1630269023610.json | 29 ---------- frame-trace_1630269361840.json | 29 ---------- voxygen/anim/src/biped_small/beam.rs | 58 +++++++++---------- 8 files changed, 44 insertions(+), 147 deletions(-) delete mode 100644 assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron delete mode 100644 frame-trace_1630269013224.json delete mode 100644 frame-trace_1630269023610.json delete mode 100644 frame-trace_1630269361840.json diff --git a/assets/common/entity/spot/myrmidon/spear.ron b/assets/common/entity/spot/myrmidon/spear.ron index 32053d78e7..d7937f7097 100644 --- a/assets/common/entity/spot/myrmidon/spear.ron +++ b/assets/common/entity/spot/myrmidon/spear.ron @@ -8,6 +8,7 @@ EntityConfig ( hands: TwoHanded(Item("common.items.npc_weapons.biped_small.myrmidon.wooden_spear")), meta: [ - LoadoutAsset("common.loadout.spot.gnome"), + LoadoutAsset("common.loadout.dungeon.tier-4.myrmidon"), + ], ) diff --git a/assets/common/entity/spot/pirate.ron b/assets/common/entity/spot/pirate.ron index ed354ab485..330bc5df87 100644 --- a/assets/common/entity/spot/pirate.ron +++ b/assets/common/entity/spot/pirate.ron @@ -1,21 +1,21 @@ EntityConfig ( name: Name("Pirate"), body: Exact(Humanoid(Body( - species: Human, - body_type: Female, - hair_style: 2, - beard: 0, - eyes: 0, - accessory: 0, - hair_color: 0, - skin: 0, - eye_color: 0, + species: Human, + body_type: Female, + hair_style: 2, + beard: 0, + eyes: 0, + accessory: 0, + hair_color: 0, + skin: 0, + eye_color: 0, ))), - alignment: Alignment(Enemy), + alignment: Alignment(Enemy), loot: LootTable("common.loot_tables.creature.biped_large.saurok"), - hands: Paired(Item("common.items.weapons.sword_1h.iron-2")), + hands: Paired(Item("common.items.weapons.sword_1h.iron-2")), meta: [ SkillSetAsset("common.skillset.dungeon.tier-5.sword"), diff --git a/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron b/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron index 81e9380df5..afcb9f9fef 100644 --- a/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron +++ b/assets/common/items/npc_armor/biped_small/gnome/chest/gnome.ron @@ -1,10 +1,10 @@ ItemDef( - name: "Gnarling", + name: "Gnome", description: "Ceremonial attire used by members.", kind: Armor(( kind: Chest("Gnome"), stats: ( - protection: Normal(2.0), + protection: Normal(36.0), poise_resilience: Normal(1.0), energy_max: 0, energy_reward: 0.0, diff --git a/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron b/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron deleted file mode 100644 index e80c2c6fd8..0000000000 --- a/assets/common/items/npc_armor/biped_small/gnome/tail/gnarling.ron +++ /dev/null @@ -1,17 +0,0 @@ -ItemDef( - name: "Gnarling", - description: "Ceremonial attire used by members.", - kind: Armor(( - kind: Belt("Gnarling"), - stats: ( - protection: Normal(1.0), - poise_resilience: Normal(1.0), - energy_max: 0, - energy_reward: 0.0, - crit_power: 0.0, - stealth: 0.0, - ), - )), - quality: Low, - tags: [], -) \ No newline at end of file diff --git a/frame-trace_1630269013224.json b/frame-trace_1630269013224.json deleted file mode 100644 index 14038d0b9c..0000000000 --- a/frame-trace_1630269013224.json +++ /dev/null @@ -1,29 +0,0 @@ -{ -"traceEvents": [ -{ "pid":1, "tid":1, "ts":1630269013191680.5, "dur":3328.3233642578125, "ph":"X", "name":"frame" }, -{ "pid":1, "tid":1, "ts":1630269013191706.3, "dur":303.9836883544922, "ph":"X", "name":"shadow_pass" }, -{ "pid":1, "tid":1, "ts":1630269013191707, "dur":301.361083984375, "ph":"X", "name":"direcred_terrain_shadows" }, -{ "pid":1, "tid":1, "ts":1630269013192009.5, "dur":0.476837158203125, "ph":"X", "name":"direcred_figure_shadows" }, -{ "pid":1, "tid":1, "ts":1630269013192013, "dur":378.3702850341797, "ph":"X", "name":"point shadows" }, -{ "pid":1, "tid":1, "ts":1630269013192023.8, "dur":58.41255187988281, "ph":"X", "name":"point shadow face-0 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192089.5, "dur":51.975250244140625, "ph":"X", "name":"point shadow face-1 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192147.8, "dur":63.419342041015625, "ph":"X", "name":"point shadow face-2 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192217.3, "dur":53.16734313964844, "ph":"X", "name":"point shadow face-3 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192276.5, "dur":52.928924560546875, "ph":"X", "name":"point shadow face-4 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192336.3, "dur":53.40576171875, "ph":"X", "name":"point shadow face-5 pass" }, -{ "pid":1, "tid":1, "ts":1630269013192413, "dur":1714.944839477539, "ph":"X", "name":"first_pass" }, -{ "pid":1, "tid":1, "ts":1630269013192414, "dur":5.9604644775390625, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269013192421.5, "dur":1319.6468353271484, "ph":"X", "name":"terrain" }, -{ "pid":1, "tid":1, "ts":1630269013193741, "dur":1.1920928955078125, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269013193742.8, "dur":270.60508728027344, "ph":"X", "name":"lod_terrain" }, -{ "pid":1, "tid":1, "ts":1630269013194015.3, "dur":2.6226043701171875, "ph":"X", "name":"skybox" }, -{ "pid":1, "tid":1, "ts":1630269013194018.8, "dur":96.55952453613281, "ph":"X", "name":"sprites" }, -{ "pid":1, "tid":1, "ts":1630269013194116, "dur":0, "ph":"X", "name":"fluid" }, -{ "pid":1, "tid":1, "ts":1630269013194117, "dur":9.298324584960938, "ph":"X", "name":"particles" }, -{ "pid":1, "tid":1, "ts":1630269013194127.5, "dur":0.476837158203125, "ph":"X", "name":"debug" }, -{ "pid":1, "tid":1, "ts":1630269013194140.5, "dur":681.8771362304688, "ph":"X", "name":"second_pass" }, -{ "pid":1, "tid":1, "ts":1630269013194832.5, "dur":174.2839813232422, "ph":"X", "name":"third_pass" }, -{ "pid":1, "tid":1, "ts":1630269013194832.5, "dur":162.8398895263672, "ph":"X", "name":"postprocess" }, -{ "pid":1, "tid":1, "ts":1630269013194995.8, "dur":10.251998901367188, "ph":"X", "name":"ui" } -] -} diff --git a/frame-trace_1630269023610.json b/frame-trace_1630269023610.json deleted file mode 100644 index a4d3c21aca..0000000000 --- a/frame-trace_1630269023610.json +++ /dev/null @@ -1,29 +0,0 @@ -{ -"traceEvents": [ -{ "pid":1, "tid":1, "ts":1630269023577148, "dur":4250.049591064453, "ph":"X", "name":"frame" }, -{ "pid":1, "tid":1, "ts":1630269023577172.8, "dur":403.1658172607422, "ph":"X", "name":"shadow_pass" }, -{ "pid":1, "tid":1, "ts":1630269023577172.8, "dur":401.2584686279297, "ph":"X", "name":"direcred_terrain_shadows" }, -{ "pid":1, "tid":1, "ts":1630269023577574.3, "dur":1.1920928955078125, "ph":"X", "name":"direcred_figure_shadows" }, -{ "pid":1, "tid":1, "ts":1630269023577578.3, "dur":264.4062042236328, "ph":"X", "name":"point shadows" }, -{ "pid":1, "tid":1, "ts":1630269023577588.5, "dur":32.66334533691406, "ph":"X", "name":"point shadow face-0 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577629.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-1 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577672.3, "dur":36.95487976074219, "ph":"X", "name":"point shadow face-2 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577716.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-3 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577760, "dur":36.95487976074219, "ph":"X", "name":"point shadow face-4 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577803.8, "dur":36.716461181640625, "ph":"X", "name":"point shadow face-5 pass" }, -{ "pid":1, "tid":1, "ts":1630269023577865, "dur":2552.9861450195313, "ph":"X", "name":"first_pass" }, -{ "pid":1, "tid":1, "ts":1630269023577865, "dur":8.106231689453125, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269023577873.3, "dur":2041.3398742675781, "ph":"X", "name":"terrain" }, -{ "pid":1, "tid":1, "ts":1630269023579915, "dur":0, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269023579916, "dur":269.17457580566406, "ph":"X", "name":"lod_terrain" }, -{ "pid":1, "tid":1, "ts":1630269023580185.3, "dur":3.5762786865234375, "ph":"X", "name":"skybox" }, -{ "pid":1, "tid":1, "ts":1630269023580189.5, "dur":215.05355834960938, "ph":"X", "name":"sprites" }, -{ "pid":1, "tid":1, "ts":1630269023580405.5, "dur":0.7152557373046875, "ph":"X", "name":"fluid" }, -{ "pid":1, "tid":1, "ts":1630269023580406.8, "dur":9.5367431640625, "ph":"X", "name":"particles" }, -{ "pid":1, "tid":1, "ts":1630269023580416.8, "dur":0, "ph":"X", "name":"debug" }, -{ "pid":1, "tid":1, "ts":1630269023580429.3, "dur":780.1055908203125, "ph":"X", "name":"second_pass" }, -{ "pid":1, "tid":1, "ts":1630269023581218.5, "dur":177.14500427246094, "ph":"X", "name":"third_pass" }, -{ "pid":1, "tid":1, "ts":1630269023581219.3, "dur":165.46249389648438, "ph":"X", "name":"postprocess" }, -{ "pid":1, "tid":1, "ts":1630269023581385.3, "dur":10.251998901367188, "ph":"X", "name":"ui" } -] -} diff --git a/frame-trace_1630269361840.json b/frame-trace_1630269361840.json deleted file mode 100644 index f14b35a2d0..0000000000 --- a/frame-trace_1630269361840.json +++ /dev/null @@ -1,29 +0,0 @@ -{ -"traceEvents": [ -{ "pid":1, "tid":1, "ts":1630269361805281.3, "dur":3715.038299560547, "ph":"X", "name":"frame" }, -{ "pid":1, "tid":1, "ts":1630269361805304.5, "dur":231.5044403076172, "ph":"X", "name":"shadow_pass" }, -{ "pid":1, "tid":1, "ts":1630269361805306.3, "dur":227.21290588378906, "ph":"X", "name":"direcred_terrain_shadows" }, -{ "pid":1, "tid":1, "ts":1630269361805534, "dur":2.1457672119140625, "ph":"X", "name":"direcred_figure_shadows" }, -{ "pid":1, "tid":1, "ts":1630269361805538.5, "dur":198.12583923339844, "ph":"X", "name":"point shadows" }, -{ "pid":1, "tid":1, "ts":1630269361805549.8, "dur":20.9808349609375, "ph":"X", "name":"point shadow face-0 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805578, "dur":27.418136596679688, "ph":"X", "name":"point shadow face-1 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805611.8, "dur":24.557113647460938, "ph":"X", "name":"point shadow face-2 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805642.5, "dur":28.6102294921875, "ph":"X", "name":"point shadow face-3 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805678.8, "dur":24.7955322265625, "ph":"X", "name":"point shadow face-4 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805710, "dur":24.7955322265625, "ph":"X", "name":"point shadow face-5 pass" }, -{ "pid":1, "tid":1, "ts":1630269361805761.3, "dur":1124.3820190429688, "ph":"X", "name":"first_pass" }, -{ "pid":1, "tid":1, "ts":1630269361805761.3, "dur":26.702880859375, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269361805788, "dur":515.4609680175781, "ph":"X", "name":"terrain" }, -{ "pid":1, "tid":1, "ts":1630269361806304, "dur":2.1457672119140625, "ph":"X", "name":"figures" }, -{ "pid":1, "tid":1, "ts":1630269361806307.5, "dur":325.91819763183594, "ph":"X", "name":"lod_terrain" }, -{ "pid":1, "tid":1, "ts":1630269361806633.8, "dur":30.279159545898438, "ph":"X", "name":"skybox" }, -{ "pid":1, "tid":1, "ts":1630269361806664.5, "dur":208.37783813476563, "ph":"X", "name":"sprites" }, -{ "pid":1, "tid":1, "ts":1630269361806873.3, "dur":0, "ph":"X", "name":"fluid" }, -{ "pid":1, "tid":1, "ts":1630269361806874.8, "dur":8.821487426757813, "ph":"X", "name":"particles" }, -{ "pid":1, "tid":1, "ts":1630269361806883.5, "dur":1.6689300537109375, "ph":"X", "name":"debug" }, -{ "pid":1, "tid":1, "ts":1630269361806898, "dur":1932.8594207763672, "ph":"X", "name":"second_pass" }, -{ "pid":1, "tid":1, "ts":1630269361808839.5, "dur":154.4952392578125, "ph":"X", "name":"third_pass" }, -{ "pid":1, "tid":1, "ts":1630269361808839.5, "dur":153.06472778320313, "ph":"X", "name":"postprocess" }, -{ "pid":1, "tid":1, "ts":1630269361808993.3, "dur":0, "ph":"X", "name":"ui" } -] -} diff --git a/voxygen/anim/src/biped_small/beam.rs b/voxygen/anim/src/biped_small/beam.rs index 163577563e..b00e9f0bed 100644 --- a/voxygen/anim/src/biped_small/beam.rs +++ b/voxygen/anim/src/biped_small/beam.rs @@ -78,38 +78,38 @@ impl Animation for BeamAnimation { next.hand_l.orientation = Quaternion::rotation_x(0.0); next.hand_r.orientation = Quaternion::rotation_x(0.0); - let (move1base, move2base, move3) = match stage_section { - Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0), - Some(StageSection::Action) => (1.0, (anim_time * 4.0).sin(), 0.0), - Some(StageSection::Recover) => (1.0, 1.0, anim_time), - _ => (0.0, 0.0, 0.0), - }; - let pullback = 1.0 - move3; - let move1abs = move1base * pullback; - next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); - next.control_r.position = Vec3::new( - 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, - -4.0 + move1abs * 0.0, - 3.0 + move1abs * 10.0, - ); + let (move1base, move2base, move3) = match stage_section { + Some(StageSection::Buildup) => (anim_time.powf(0.25), 0.0, 0.0), + Some(StageSection::Action) => (1.0, (anim_time * 4.0).sin(), 0.0), + Some(StageSection::Recover) => (1.0, 1.0, anim_time), + _ => (0.0, 0.0, 0.0), + }; + let pullback = 1.0 - move3; + let move1abs = move1base * pullback; + next.control_l.position = Vec3::new(2.0 - s_a.grip.0 * 2.0, 1.0, 3.0); + next.control_r.position = Vec3::new( + 7.0 + s_a.grip.0 * 2.0 + move1abs * -8.0, + -4.0 + move1abs * 0.0, + 3.0 + move1abs * 10.0, + ); - next.control.position = Vec3::new( - -5.0, - -1.0 + s_a.grip.2, - -2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0, - ); + next.control.position = Vec3::new( + -5.0, + -1.0 + s_a.grip.2, + -2.0 + -s_a.grip.2 / 2.5 + s_a.grip.0 * -2.0 + move1abs * 5.0, + ); - next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8) - * Quaternion::rotation_y(-0.3) - * Quaternion::rotation_z(-0.3); - next.control_r.orientation = - Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8) - * Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8) - * Quaternion::rotation_z(-0.0 + move1abs * 2.0 + move2base * 0.6); + next.control_l.orientation = Quaternion::rotation_x(PI / 2.0 + move1abs * 0.8) + * Quaternion::rotation_y(-0.3) + * Quaternion::rotation_z(-0.3); + next.control_r.orientation = + Quaternion::rotation_x(PI / 2.0 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_y(-0.4 + s_a.grip.0 * 0.2 + move1abs * 0.8) + * Quaternion::rotation_z(-0.0 + move1abs * 2.0 + move2base * 0.6); - next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6) - * Quaternion::rotation_y(-0.2 * speednorm + move1abs * 0.8) - * Quaternion::rotation_z(0.5 + move1abs * 0.6); + next.control.orientation = Quaternion::rotation_x(-0.3 + move1abs * -0.6) + * Quaternion::rotation_y(-0.2 * speednorm + move1abs * 0.8) + * Quaternion::rotation_z(0.5 + move1abs * 0.6); next }