From 14f9e3c61b119a9785d214f076a169cc45855ac4 Mon Sep 17 00:00:00 2001 From: WayofTime Date: Sun, 10 Aug 2014 14:38:51 -0400 Subject: [PATCH] Fixing Sanguine armour, adding some fancy rendering, doing other random bug fixes --- .../api/java/thaumcraft/api/IRunicArmor.java | 1 - .../java/thaumcraft/api/ThaumcraftApi.java | 44 ++- .../thaumcraft/api/ThaumcraftApiHelper.java | 3 +- .../java/thaumcraft/api/TileThaumcraft.java | 63 ++++ .../java/thaumcraft/api/WorldCoordinates.java | 117 ++++++++ .../api/aspects/AspectSourceHelper.java | 26 +- .../api/crafting/CrucibleRecipe.java | 27 +- .../DamageSourceIndirectThaumcraftEntity.java | 32 ++ .../damagesource/DamageSourceThaumcraft.java | 46 +++ .../thaumcraft/api/entities/ITaintedMob.java | 5 + .../api/java/thaumcraft/api/package-info.java | 4 + .../api/potions/PotionFluxTaint.java | 67 +++++ .../thaumcraft/api/research/ResearchPage.java | 21 +- .../thaumcraft/api/visnet/TileVisNode.java | 188 ++++++++++++ .../thaumcraft/api/visnet/VisNetHandler.java | 284 ++++++++++++++++++ .../java/thaumcraft/api/wands/WandCap.java | 7 + .../java/thaumcraft/api/wands/WandRod.java | 7 + .../AlchemicalWizardry.java | 65 +++- .../BloodMagicConfiguration.java | 6 +- .../alchemicalWizardry/ModBlocks.java | 5 +- .../alchemicalWizardry/ModItems.java | 7 + .../api/bindingRegistry/BindingRecipe.java | 5 + .../api/bindingRegistry/BindingRegistry.java | 2 +- .../api/rituals/IMasterRitualStone.java | 1 + .../api/rituals/Rituals.java | 51 +++- .../client/ClientProxy.java | 11 +- .../common/NewPacketHandler.java | 82 ++++- .../alchemy/CombinedPotionComponent.java | 27 ++ .../alchemy/CombinedPotionRegistry.java | 182 +++++++++++ .../alchemy/ICombinationalCatalyst.java | 6 + .../common/block/BlockOrientable.java | 64 ---- .../common/block/BlockReagentConduit.java | 75 +++++ .../common/block/BlockSpellParadigm.java | 116 ------- .../common/block/ImperfectRitualStone.java | 2 +- .../common/entity/mob/EntityDemon.java | 10 +- .../common/items/BoundArmour.java | 96 +++++- .../common/items/ItemRitualDiviner.java | 5 + .../common/items/SacrificialDagger.java | 4 +- .../common/items/potion/AlchemyFlask.java | 2 +- .../items/potion/CombinationalCatalyst.java | 24 ++ .../common/items/sigil/SigilOfGrowth.java | 9 +- .../common/items/thaumcraft/FocusBase.java | 169 ----------- .../items/thaumcraft/FocusBloodBlast.java | 191 ------------ .../items/thaumcraft/FocusGravityWell.java | 263 ---------------- .../items/thaumcraft/ItemSanguineArmour.java | 131 ++++++-- .../common/potion/PotionSoulHarden.java | 18 ++ .../renderer/AlchemyCircleRenderer.java | 85 ++++++ .../common/renderer/BeamRenderer.java | 115 +++++++ .../common/renderer/MRSRenderer.java | 22 ++ .../renderer/block/RenderMasterStone.java | 30 ++ .../common/renderer/block/RenderPedestal.java | 21 ++ .../renderer/block/RenderReagentConduit.java | 70 +++++ .../common/renderer/block/ShaderHelper.java | 184 ++++++++++++ .../rituals/RitualEffectFeatheredKnife.java | 6 +- .../common/tileEntity/TEAltar.java | 66 +++- .../common/tileEntity/TEMasterStone.java | 65 +++- .../common/tileEntity/TEReagentConduit.java | 8 + .../common/tileEntity/TEWritingTable.java | 77 ++++- .../assets/alchemicalwizardry/lang/en_US.lang | 4 + .../models/armor/armor - Shortcut.lnk | Bin 1926 -> 0 bytes .../alchemicalwizardry/shaders/beam.frag | 12 + .../textures/items/CombinationalCatalyst.png | Bin 0 -> 548 bytes .../textures/models/SimpleTransCircle.png | Bin 0 -> 22424 bytes .../textures/models/TransCircle.png | Bin 0 -> 194218 bytes .../textures/models/TransCircleBinding.png | Bin 0 -> 4020 bytes .../textures/models/TransCircleSuffering.png | Bin 0 -> 26961 bytes 66 files changed, 2425 insertions(+), 911 deletions(-) create mode 100644 1.7.10/api/java/thaumcraft/api/TileThaumcraft.java create mode 100644 1.7.10/api/java/thaumcraft/api/WorldCoordinates.java create mode 100644 1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java create mode 100644 1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java create mode 100644 1.7.10/api/java/thaumcraft/api/entities/ITaintedMob.java create mode 100644 1.7.10/api/java/thaumcraft/api/package-info.java create mode 100644 1.7.10/api/java/thaumcraft/api/potions/PotionFluxTaint.java create mode 100644 1.7.10/api/java/thaumcraft/api/visnet/TileVisNode.java create mode 100644 1.7.10/api/java/thaumcraft/api/visnet/VisNetHandler.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionComponent.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/CombinedPotionRegistry.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java delete mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBase.java delete mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBloodBlast.java delete mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusGravityWell.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java create mode 100644 1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java delete mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/models/armor/armor - Shortcut.lnk create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/shaders/beam.frag create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/textures/items/CombinationalCatalyst.png create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/textures/models/SimpleTransCircle.png create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircle.png create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png create mode 100644 1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircleSuffering.png diff --git a/1.7.10/api/java/thaumcraft/api/IRunicArmor.java b/1.7.10/api/java/thaumcraft/api/IRunicArmor.java index 89d3c379..5dd31100 100644 --- a/1.7.10/api/java/thaumcraft/api/IRunicArmor.java +++ b/1.7.10/api/java/thaumcraft/api/IRunicArmor.java @@ -1,6 +1,5 @@ package thaumcraft.api; -import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; /** diff --git a/1.7.10/api/java/thaumcraft/api/ThaumcraftApi.java b/1.7.10/api/java/thaumcraft/api/ThaumcraftApi.java index 9dd0b6d2..0b135d31 100644 --- a/1.7.10/api/java/thaumcraft/api/ThaumcraftApi.java +++ b/1.7.10/api/java/thaumcraft/api/ThaumcraftApi.java @@ -115,7 +115,7 @@ public class ThaumcraftApi { */ public static void addSmeltingBonus(ItemStack in, ItemStack out) { smeltingBonus.put( - Arrays.asList(Item.getIdFromItem(in.getItem()),in.getItemDamage()), + Arrays.asList(in.getItem(),in.getItemDamage()), new ItemStack(out.getItem(),0,out.getItemDamage())); } @@ -135,9 +135,9 @@ public class ThaumcraftApi { * @return the The bonus item that can be produced */ public static ItemStack getSmeltingBonus(ItemStack in) { - ItemStack out = smeltingBonus.get(Arrays.asList(Item.getIdFromItem(in.getItem()),in.getItemDamage())); + ItemStack out = smeltingBonus.get(Arrays.asList(in.getItem(),in.getItemDamage())); if (out==null) { - out = smeltingBonus.get(Arrays.asList(Item.getIdFromItem(in.getItem()),OreDictionary.WILDCARD_VALUE)); + out = smeltingBonus.get(Arrays.asList(in.getItem(),OreDictionary.WILDCARD_VALUE)); } if (out==null) { String od = OreDictionary.getOreName( OreDictionary.getOreID(in)); @@ -232,6 +232,7 @@ public class ThaumcraftApi { /** * @param key the research key required for this recipe to work. * @param result the output result + * @param catalyst an itemstack of the catalyst or a string if it is an ore dictionary item * @param cost the vis cost * @param tags the aspects required to craft this */ @@ -388,6 +389,43 @@ public class ThaumcraftApi { registerObjectTag(item,tmp); } } + + //WARP /////////////////////////////////////////////////////////////////////////////////////// + private static HashMap warpMap = new HashMap(); + + /** + * This method is used to determine how much warp is gained if the item is crafted + * @param craftresult The item crafted + * @param amount how much warp is gained + */ + public static void addWarpToItem(ItemStack craftresult, int amount) { + warpMap.put(Arrays.asList(craftresult.getItem(),craftresult.getItemDamage()),amount); + } + + /** + * This method is used to determine how much warp is gained if the sent item is crafted + * @param in The item crafted + * @param amount how much warp is gained + */ + public static void addWarpToResearch(String research, int amount) { + warpMap.put(research, amount); + } + + /** + * Returns how much warp is gained from the item or research passed in + * @param in itemstack or string + * @return how much warp it will give + */ + public static int getWarp(Object in) { + if (in==null) return 0; + if (in instanceof ItemStack && warpMap.containsKey(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()))) { + return warpMap.get(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage())); + } else + if (in instanceof String && warpMap.containsKey((String)in)) { + return warpMap.get((String)in); + } + return 0; + } //CROPS ////////////////////////////////////////////////////////////////////////////////////////// diff --git a/1.7.10/api/java/thaumcraft/api/ThaumcraftApiHelper.java b/1.7.10/api/java/thaumcraft/api/ThaumcraftApiHelper.java index b5feb068..a4b6d42a 100644 --- a/1.7.10/api/java/thaumcraft/api/ThaumcraftApiHelper.java +++ b/1.7.10/api/java/thaumcraft/api/ThaumcraftApiHelper.java @@ -140,7 +140,8 @@ public class ThaumcraftApiHelper { { return false; } - return (target.getItem() == input.getItem() && ((target.getItemDamage() == OreDictionary.WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage())); + return (target.getItem() == input.getItem() && + ((target.getItemDamage() == OreDictionary.WILDCARD_VALUE && !strict) || target.getItemDamage() == input.getItemDamage())); } diff --git a/1.7.10/api/java/thaumcraft/api/TileThaumcraft.java b/1.7.10/api/java/thaumcraft/api/TileThaumcraft.java new file mode 100644 index 00000000..56ccae87 --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/TileThaumcraft.java @@ -0,0 +1,63 @@ +package thaumcraft.api; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; +import net.minecraft.tileentity.TileEntity; + +/** + * + * @author azanor + * + * Custom tile entity class I use for most of my tile entities. Setup in such a way that only + * the nbt data within readCustomNBT / writeCustomNBT will be sent to the client when the tile + * updates. Apart from all the normal TE data that gets sent that is. + * + */ +public class TileThaumcraft extends TileEntity { + + //NBT stuff + + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) + { + super.readFromNBT(nbttagcompound); + readCustomNBT(nbttagcompound); + } + + public void readCustomNBT(NBTTagCompound nbttagcompound) + { + //TODO + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) + { + super.writeToNBT(nbttagcompound); + writeCustomNBT(nbttagcompound); + } + + public void writeCustomNBT(NBTTagCompound nbttagcompound) + { + //TODO + } + + //Client Packet stuff + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbttagcompound = new NBTTagCompound(); + this.writeCustomNBT(nbttagcompound); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, -999, nbttagcompound); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + super.onDataPacket(net, pkt); + this.readCustomNBT(pkt.func_148857_g()); + } + + + + +} diff --git a/1.7.10/api/java/thaumcraft/api/WorldCoordinates.java b/1.7.10/api/java/thaumcraft/api/WorldCoordinates.java new file mode 100644 index 00000000..6c620af5 --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/WorldCoordinates.java @@ -0,0 +1,117 @@ +package thaumcraft.api; + +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class WorldCoordinates implements Comparable +{ + public int x; + + /** the y coordinate */ + public int y; + + /** the z coordinate */ + public int z; + + public int dim; + + public WorldCoordinates() {} + + public WorldCoordinates(int par1, int par2, int par3, int d) + { + this.x = par1; + this.y = par2; + this.z = par3; + this.dim = d; + } + + public WorldCoordinates(TileEntity tile) + { + this.x = tile.xCoord; + this.y = tile.yCoord; + this.z = tile.zCoord; + this.dim = tile.getWorldObj().provider.dimensionId; + } + + public WorldCoordinates(WorldCoordinates par1ChunkCoordinates) + { + this.x = par1ChunkCoordinates.x; + this.y = par1ChunkCoordinates.y; + this.z = par1ChunkCoordinates.z; + this.dim = par1ChunkCoordinates.dim; + } + + public boolean equals(Object par1Obj) + { + if (!(par1Obj instanceof WorldCoordinates)) + { + return false; + } + else + { + WorldCoordinates coordinates = (WorldCoordinates)par1Obj; + return this.x == coordinates.x && this.y == coordinates.y && this.z == coordinates.z && this.dim == coordinates.dim ; + } + } + + public int hashCode() + { + return this.x + this.y << 8 + this.z << 16 + this.dim << 24; + } + + /** + * Compare the coordinate with another coordinate + */ + public int compareWorldCoordinate(WorldCoordinates par1) + { + return this.dim == par1.dim ? ( + this.y == par1.y ? (this.z == par1.z ? this.x - par1.x : this.z - par1.z) : this.y - par1.y) : -1; + } + + public void set(int par1, int par2, int par3, int d) + { + this.x = par1; + this.y = par2; + this.z = par3; + this.dim = d; + } + + /** + * Returns the squared distance between this coordinates and the coordinates given as argument. + */ + public float getDistanceSquared(int par1, int par2, int par3) + { + float f = (float)(this.x - par1); + float f1 = (float)(this.y - par2); + float f2 = (float)(this.z - par3); + return f * f + f1 * f1 + f2 * f2; + } + + /** + * Return the squared distance between this coordinates and the ChunkCoordinates given as argument. + */ + public float getDistanceSquaredToWorldCoordinates(WorldCoordinates par1ChunkCoordinates) + { + return this.getDistanceSquared(par1ChunkCoordinates.x, par1ChunkCoordinates.y, par1ChunkCoordinates.z); + } + + public int compareTo(Object par1Obj) + { + return this.compareWorldCoordinate((WorldCoordinates)par1Obj); + } + + public void readNBT(NBTTagCompound nbt) { + this.x = nbt.getInteger("w_x"); + this.y = nbt.getInteger("w_y"); + this.z = nbt.getInteger("w_z"); + this.dim = nbt.getInteger("w_d"); + } + + public void writeNBT(NBTTagCompound nbt) { + nbt.setInteger("w_x",x); + nbt.setInteger("w_y",y); + nbt.setInteger("w_z",z); + nbt.setInteger("w_d",dim); + } + +} diff --git a/1.7.10/api/java/thaumcraft/api/aspects/AspectSourceHelper.java b/1.7.10/api/java/thaumcraft/api/aspects/AspectSourceHelper.java index 14dbf8bc..f22d8ce5 100644 --- a/1.7.10/api/java/thaumcraft/api/aspects/AspectSourceHelper.java +++ b/1.7.10/api/java/thaumcraft/api/aspects/AspectSourceHelper.java @@ -9,6 +9,7 @@ import cpw.mods.fml.common.FMLLog; public class AspectSourceHelper { static Method drainEssentia; + static Method findEssentia; /** * This method is what is used to drain essentia from jars and other sources for things like * infusion crafting or powering the arcane furnace. A record of possible sources are kept track of @@ -23,14 +24,35 @@ public class AspectSourceHelper { public static boolean drainEssentia(TileEntity tile, Aspect aspect, ForgeDirection direction, int range) { try { if(drainEssentia == null) { - Class fake = Class.forName("thaumcraft.common.lib.EssentiaHandler"); + Class fake = Class.forName("thaumcraft.common.lib.events.EssentiaHandler"); drainEssentia = fake.getMethod("drainEssentia", TileEntity.class, Aspect.class, ForgeDirection.class, int.class); } return (Boolean) drainEssentia.invoke(null, tile, aspect, direction, range); } catch(Exception ex) { - FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.EssentiaHandler method drainEssentia"); + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.events.EssentiaHandler method drainEssentia"); } return false; } + /** + * This method returns if there is any essentia of the passed type that can be drained. It in no way checks how + * much there is, only if an essentia container nearby contains at least 1 point worth. + * @param tile the tile entity that is checking the essentia + * @param aspect the aspect that you are looking for + * @param direction the direction from which you wish to drain. Forgedirection.Unknown simply seeks in all directions. + * @param range how many blocks you wish to search for essentia sources. + * @return boolean returns true if essentia was found and removed from a source. + */ + public static boolean findEssentia(TileEntity tile, Aspect aspect, ForgeDirection direction, int range) { + try { + if(findEssentia == null) { + Class fake = Class.forName("thaumcraft.common.lib.events.EssentiaHandler"); + findEssentia = fake.getMethod("findEssentia", TileEntity.class, Aspect.class, ForgeDirection.class, int.class); + } + return (Boolean) findEssentia.invoke(null, tile, aspect, direction, range); + } catch(Exception ex) { + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.events.EssentiaHandler method findEssentia"); + } + return false; + } } diff --git a/1.7.10/api/java/thaumcraft/api/crafting/CrucibleRecipe.java b/1.7.10/api/java/thaumcraft/api/crafting/CrucibleRecipe.java index ebd84791..9c1e8a62 100644 --- a/1.7.10/api/java/thaumcraft/api/crafting/CrucibleRecipe.java +++ b/1.7.10/api/java/thaumcraft/api/crafting/CrucibleRecipe.java @@ -34,7 +34,8 @@ public class CrucibleRecipe { return false; } else if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { - if (!ThaumcraftApiHelper.containsMatch(true, ((ArrayList)catalyst).toArray(new ItemStack[]{}), cat)) return false; + ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); + if (!ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return false; } if (itags==null) return false; for (Aspect tag:aspects.getAspects()) { @@ -48,8 +49,8 @@ public class CrucibleRecipe { return true; } else if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { - if (ThaumcraftApiHelper.containsMatch(true, - ((ArrayList)catalyst).toArray(new ItemStack[]{}), cat)) return true; + ItemStack[] ores = ((ArrayList)catalyst).toArray(new ItemStack[]{}); + if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},ores)) return true; } return false; } @@ -71,4 +72,24 @@ public class CrucibleRecipe { return recipeOutput; } + +// @Override +// public int hashCode() { +// String hash = ""; +// if (catalyst instanceof ItemStack) { +// hash += ((ItemStack)catalyst).toString(); +// } else if (catalyst instanceof ArrayList && ((ArrayList)catalyst).size()>0) { +// for (ItemStack s:(ArrayList)catalyst) { +// hash += s.toString(); +// } +// } else { +// hash += catalyst.hashCode(); +// } +// hash += getRecipeOutput().toString(); +// for (Aspect a:aspects.getAspectsSorted()) { +// hash += a.getTag() + aspects.getAmount(a); +// } +// return hash.hashCode(); +// } + } diff --git a/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java b/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java new file mode 100644 index 00000000..1562d052 --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceIndirectThaumcraftEntity.java @@ -0,0 +1,32 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.Entity; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSourceIndirect; + +public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect { + + private boolean fireDamage; + private float hungerDamage; + private boolean isUnblockable; + + + public DamageSourceIndirectThaumcraftEntity(String par1Str, + Entity par2Entity, Entity par3Entity) { + super(par1Str, par2Entity, par3Entity); + } + + + public DamageSource setFireDamage() + { + this.fireDamage = true; + return this; + } + + public DamageSource setDamageBypassesArmor() + { + this.isUnblockable = true; + this.hungerDamage = 0.0F; + return this; + } +} diff --git a/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java b/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java new file mode 100644 index 00000000..7c277f28 --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/damagesource/DamageSourceThaumcraft.java @@ -0,0 +1,46 @@ +package thaumcraft.api.damagesource; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EntityDamageSource; + +public class DamageSourceThaumcraft extends DamageSource +{ + + public static DamageSource taint = new DamageSourceThaumcraft("taint").setDamageBypassesArmor().setMagicDamage(); + public static DamageSource tentacle = new DamageSourceThaumcraft("tentacle"); + public static DamageSource swarm = new DamageSourceThaumcraft("swarm"); + + protected DamageSourceThaumcraft(String par1Str) { + super(par1Str); + } + + /** This kind of damage can be blocked or not. */ + private boolean isUnblockable = false; + private boolean isDamageAllowedInCreativeMode = false; + private float hungerDamage = 0.3F; + + /** This kind of damage is based on fire or not. */ + private boolean fireDamage; + + /** This kind of damage is based on a projectile or not. */ + private boolean projectile; + + /** + * Whether this damage source will have its damage amount scaled based on the current difficulty. + */ + private boolean difficultyScaled; + private boolean magicDamage = false; + private boolean explosion = false; + + public static DamageSource causeSwarmDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("swarm", par0EntityLiving); + } + + public static DamageSource causeTentacleDamage(EntityLivingBase par0EntityLiving) + { + return new EntityDamageSource("tentacle", par0EntityLiving); + } + +} diff --git a/1.7.10/api/java/thaumcraft/api/entities/ITaintedMob.java b/1.7.10/api/java/thaumcraft/api/entities/ITaintedMob.java new file mode 100644 index 00000000..83fb1fcb --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/entities/ITaintedMob.java @@ -0,0 +1,5 @@ +package thaumcraft.api.entities; + +public interface ITaintedMob { + +} diff --git a/1.7.10/api/java/thaumcraft/api/package-info.java b/1.7.10/api/java/thaumcraft/api/package-info.java new file mode 100644 index 00000000..0de39267 --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/package-info.java @@ -0,0 +1,4 @@ +@API(owner = "Thaumcraft", apiVersion = "4.2.0.0", provides = "Thaumcraft|API") +package thaumcraft.api; + +import cpw.mods.fml.common.API; diff --git a/1.7.10/api/java/thaumcraft/api/potions/PotionFluxTaint.java b/1.7.10/api/java/thaumcraft/api/potions/PotionFluxTaint.java new file mode 100644 index 00000000..b718de4b --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/potions/PotionFluxTaint.java @@ -0,0 +1,67 @@ +package thaumcraft.api.potions; + +import net.minecraft.client.Minecraft; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.potion.Potion; +import net.minecraft.util.ResourceLocation; +import thaumcraft.api.damagesource.DamageSourceThaumcraft; +import thaumcraft.api.entities.ITaintedMob; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class PotionFluxTaint extends Potion +{ + public static PotionFluxTaint instance = null; // will be instantiated at runtime + private int statusIconIndex = -1; + + public PotionFluxTaint(int par1, boolean par2, int par3) + { + super(par1,par2,par3); + setIconIndex(0, 0); + } + + public static void init() + { + instance.setPotionName("potion.fluxtaint"); + instance.setIconIndex(3, 1); + instance.setEffectiveness(0.25D); + } + + @Override + public boolean isBadEffect() { + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public int getStatusIconIndex() { + Minecraft.getMinecraft().renderEngine.bindTexture(rl); + return super.getStatusIconIndex(); + } + + ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png"); + + @Override + public void performEffect(EntityLivingBase target, int par2) { + if (target instanceof ITaintedMob) { + target.heal(1); + } else + if (!target.isEntityUndead() && !(target instanceof EntityPlayer)) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + else + if (!target.isEntityUndead() && (target.getMaxHealth() > 1 || (target instanceof EntityPlayer))) + { + target.attackEntityFrom(DamageSourceThaumcraft.taint, 1); + } + } + + public boolean isReady(int par1, int par2) + { + int k = 40 >> par2; + return k > 0 ? par1 % k == 0 : true; + } + +} diff --git a/1.7.10/api/java/thaumcraft/api/research/ResearchPage.java b/1.7.10/api/java/thaumcraft/api/research/ResearchPage.java index a2e7824a..fdada843 100644 --- a/1.7.10/api/java/thaumcraft/api/research/ResearchPage.java +++ b/1.7.10/api/java/thaumcraft/api/research/ResearchPage.java @@ -3,6 +3,7 @@ package thaumcraft.api.research; import java.util.List; import net.minecraft.item.ItemStack; +import net.minecraft.item.crafting.FurnaceRecipes; import net.minecraft.item.crafting.IRecipe; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; @@ -24,7 +25,8 @@ public class ResearchPage { NORMAL_CRAFTING, INFUSION_CRAFTING, COMPOUND_CRAFTING, - INFUSION_ENCHANTMENT + INFUSION_ENCHANTMENT, + SMELTING } public PageType type = PageType.TEXT; @@ -79,6 +81,14 @@ public class ResearchPage { this.recipe = recipe; } + /** + * @param recipe a collection of arcane crafting recipes. + */ + public ResearchPage(CrucibleRecipe[] recipe) { + this.type = PageType.CRUCIBLE_CRAFTING; + this.recipe = recipe; + } + /** * @param recipe a collection of infusion crafting recipes. */ @@ -113,6 +123,15 @@ public class ResearchPage { this.recipeOutput = recipe.getRecipeOutput(); } + /** + * @param recipe a furnace smelting crafting recipe. + */ + public ResearchPage(ItemStack input) { + this.type = PageType.SMELTING; + this.recipe = input; + this.recipeOutput = FurnaceRecipes.smelting().getSmeltingResult(input); + } + /** * @param recipe an infusion crafting recipe. */ diff --git a/1.7.10/api/java/thaumcraft/api/visnet/TileVisNode.java b/1.7.10/api/java/thaumcraft/api/visnet/TileVisNode.java new file mode 100644 index 00000000..84b1400d --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/visnet/TileVisNode.java @@ -0,0 +1,188 @@ +package thaumcraft.api.visnet; + +import java.lang.ref.WeakReference; +import java.util.ArrayList; +import java.util.HashMap; + +import thaumcraft.api.TileThaumcraft; +import thaumcraft.api.WorldCoordinates; +import thaumcraft.api.aspects.Aspect; + +/** + * @author Azanor + * + * The tile entity used by nodes in the vis energy network. A node is either a source (like an aura node), + * a transport relay or vis receiver (like the infernal furnace). + * + */ +public abstract class TileVisNode extends TileThaumcraft { + + WeakReference parent = null; + ArrayList> children = new ArrayList>(); + + /** + * @return the WorldCoordinates location of where this node is located + */ + public WorldCoordinates getLocation() { + return new WorldCoordinates(this); + } + + /** + * @return the number of blocks away this node will check for parent nodes to connect to. + */ + public abstract int getRange(); + + /** + * @return true if this is the source or root node of the vis network. + */ + public abstract boolean isSource(); + + /** + * This method should never be called directly. Use VisNetHandler.drainVis() instead + * @param aspect what aspect to drain + * @param vis how much to drain + * @return how much was actually drained + */ + public int consumeVis(Aspect aspect, int vis) { + if (VisNetHandler.isNodeValid(getParent())) { + int out = getParent().get().consumeVis(aspect, vis); + if (out>0) { + triggerConsumeEffect(aspect); + } + return out; + } + return 0; + } + + public void removeThisNode() { + for (WeakReference n:getChildren()) { + if (n!=null && n.get()!=null) { + n.get().removeThisNode(); + } + } + + children = new ArrayList>(); + if (VisNetHandler.isNodeValid(this.getParent())) { + this.getParent().get().nodeRefresh=true; + } + this.setParent(null); + this.parentChanged(); + + if (this.isSource()) { + HashMap> sourcelist = VisNetHandler.sources.get(worldObj.provider.dimensionId); + if (sourcelist==null) { + sourcelist = new HashMap>(); + } + sourcelist.remove(getLocation()); + VisNetHandler.sources.put( worldObj.provider.dimensionId, sourcelist ); + } + + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + + + @Override + public void invalidate() { + removeThisNode(); + super.invalidate(); + } + + public void triggerConsumeEffect(Aspect aspect) { } + + /** + * @return + */ + public WeakReference getParent() { + return parent; + } + + /** + * @return + */ + public WeakReference getRootSource() { + return VisNetHandler.isNodeValid(getParent()) ? + getParent().get().getRootSource() : this.isSource() ? + new WeakReference(this) : null; + } + + /** + * @param parent + */ + public void setParent(WeakReference parent) { + this.parent = parent; + } + + /** + * @return + */ + public ArrayList> getChildren() { + return children; + } + + @Override + public boolean canUpdate() { + return true; + } + + protected int nodeCounter = 0; + private boolean nodeRegged = false; + public boolean nodeRefresh = false; + + @Override + public void updateEntity() { + + if (!worldObj.isRemote && ((nodeCounter++) % 40==0 || nodeRefresh)) { + //check for changes + if (!nodeRefresh && children.size()>0) { + for (WeakReference n:children) { + if (n==null || n.get()==null) { + nodeRefresh=true; + break; + } + } + } + + //refresh linked nodes + if (nodeRefresh) { + for (WeakReference n:children) { + if (n.get()!=null) { + n.get().nodeRefresh=true; + } + } + children.clear(); + parent=null; + } + + //redo stuff + if (isSource() && !nodeRegged) { + VisNetHandler.addSource(getWorldObj(), this); + nodeRegged = true; + } else + if (!isSource() && !VisNetHandler.isNodeValid(getParent())) { + setParent(VisNetHandler.addNode(getWorldObj(), this)); + nodeRefresh=true; + } + + if (nodeRefresh) { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + parentChanged(); + } + nodeRefresh=false; + } + + } + + public void parentChanged() { } + + /** + * @return the type of shard this is attuned to: + * none -1, air 0, fire 1, water 2, earth 3, order 4, entropy 5 + * Should return -1 for most implementations + */ + public byte getAttunement() { + return -1; + } + + +} diff --git a/1.7.10/api/java/thaumcraft/api/visnet/VisNetHandler.java b/1.7.10/api/java/thaumcraft/api/visnet/VisNetHandler.java new file mode 100644 index 00000000..baf46d8e --- /dev/null +++ b/1.7.10/api/java/thaumcraft/api/visnet/VisNetHandler.java @@ -0,0 +1,284 @@ +package thaumcraft.api.visnet; + +import java.lang.ref.WeakReference; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; + +import net.minecraft.world.World; +import thaumcraft.api.WorldCoordinates; +import thaumcraft.api.aspects.Aspect; +import cpw.mods.fml.common.FMLLog; + +public class VisNetHandler { + + // / NODE DRAINING + /** + * This method drains vis from a relay or source near the passed in + * location. The amount received can be less than the amount requested so + * take that into account. + * + * @param world + * @param x the x position of the draining block or entity + * @param y the y position of the draining block or entity + * @param z the z position of the draining block or entity + * @param aspect what aspect to drain + * @param vis how much to drain + * @return how much was actually drained + */ + public static int drainVis(World world, int x, int y, int z, Aspect aspect, int amount) { + + int drainedAmount = 0; + + WorldCoordinates drainer = new WorldCoordinates(x, y, z, + world.provider.dimensionId); + if (!nearbyNodes.containsKey(drainer)) { + calculateNearbyNodes(world, x, y, z); + } + + ArrayList> nodes = nearbyNodes.get(drainer); + if (nodes!=null && nodes.size()>0) + for (WeakReference noderef : nodes) { + + TileVisNode node = noderef.get(); + + if (node == null) continue; + + int a = node.consumeVis(aspect, amount); + drainedAmount += a; + amount -= a; + if (a>0) { + int color = Aspect.getPrimalAspects().indexOf(aspect); + generateVisEffect(world.provider.dimensionId, x, y, z, node.xCoord, node.yCoord, node.zCoord, color); + } + if (amount <= 0) { + break; + } + } + + return drainedAmount; + } + + static Method generateVisEffect; + public static void generateVisEffect(int dim, int x, int y, int z, int x2, int y2, int z2, int color) { + try { + if(generateVisEffect == null) { + Class fake = Class.forName("thaumcraft.common.lib.Utils"); + generateVisEffect = fake.getMethod("generateVisEffect", int.class, int.class, int.class, int.class, int.class, int.class, int.class, int.class); + } + generateVisEffect.invoke(null, dim, x,y,z,x2,y2,z2,color); + } catch(Exception ex) { + FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.Utils method generateVisEffect"); + } + } + + public static HashMap>> sources = new HashMap>>(); + + public static void addSource(World world, TileVisNode vs) { + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + } + sourcelist.put(vs.getLocation(), new WeakReference(vs)); + sources.put(world.provider.dimensionId, sourcelist); + nearbyNodes.clear(); + } + + public static boolean isNodeValid(WeakReference node) { + if (node == null || node.get() == null || node.get().isInvalid()) + return false; + return true; + } + + public static WeakReference addNode(World world, TileVisNode vn) { + WeakReference ref = new WeakReference(vn); + + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + return null; + } + + ArrayList nearby = new ArrayList(); + + for (WeakReference root : sourcelist.values()) { + if (!isNodeValid(root)) + continue; + + TileVisNode source = root.get(); + + float r = inRange(world, vn.getLocation(), source.getLocation(), + vn.getRange()); + if (r > 0) { + nearby.add(new Object[] { source, r - vn.getRange() * 2 }); + } + nearby = findClosestNodes(vn, source, nearby); + } + + float dist = Float.MAX_VALUE; + TileVisNode closest = null; + if (nearby.size() > 0) { + for (Object[] o : nearby) { + if ((Float) o[1] < dist) {// && canNodeBeSeen(vn,(TileVisNode) + // o[0])) { + dist = (Float) o[1]; + closest = (TileVisNode) o[0]; + } + } + } + if (closest != null) { + closest.getChildren().add(ref); + nearbyNodes.clear(); + return new WeakReference(closest); + } + + return null; + } + + public static ArrayList findClosestNodes(TileVisNode target, + TileVisNode root, ArrayList in) { + TileVisNode closestChild = null; + + for (WeakReference child : root.getChildren()) { + TileVisNode n = child.get(); + + if (n != null + && !n.equals(target) + && !n.equals(root) + && (target.getAttunement() == -1 || n.getAttunement() == -1 || n + .getAttunement() == target.getAttunement())) { + + float r2 = inRange(n.getWorldObj(), n.getLocation(), + target.getLocation(), target.getRange()); + if (r2 > 0) { + in.add(new Object[] { n, r2 }); + } + + in = findClosestNodes(target, n, in); + } + } + return in; + } + + private static float inRange(World world, WorldCoordinates cc1, + WorldCoordinates cc2, int range) { + float distance = cc1.getDistanceSquaredToWorldCoordinates(cc2); + return distance > range * range ? -1 : distance; + } + + private static HashMap>> nearbyNodes = new HashMap>>(); + + private static void calculateNearbyNodes(World world, int x, int y, int z) { + + HashMap> sourcelist = sources + .get(world.provider.dimensionId); + if (sourcelist == null) { + sourcelist = new HashMap>(); + return; + } + + ArrayList> cn = new ArrayList>(); + WorldCoordinates drainer = new WorldCoordinates(x, y, z, + world.provider.dimensionId); + + ArrayList nearby = new ArrayList(); + + for (WeakReference root : sourcelist.values()) { + + if (!isNodeValid(root)) + continue; + + TileVisNode source = root.get(); + + TileVisNode closest = null; + float range = Float.MAX_VALUE; + + float r = inRange(world, drainer, source.getLocation(), + source.getRange()); + if (r > 0) { + range = r; + closest = source; + } + + ArrayList> children = new ArrayList>(); + children = getAllChildren(source,children); + + for (WeakReference child : children) { + TileVisNode n = child.get(); + if (n != null && !n.equals(root)) { + + float r2 = inRange(n.getWorldObj(), n.getLocation(), + drainer, n.getRange()); + if (r2 > 0 && r2 < range) { + range = r2; + closest = n; + } + } + } + + if (closest != null) { + + cn.add(new WeakReference(closest)); + } + } + + nearbyNodes.put(drainer, cn); + } + + private static ArrayList> getAllChildren(TileVisNode source, ArrayList> list) { + for (WeakReference child : source.getChildren()) { + TileVisNode n = child.get(); + if (n != null) { + list.add(child); + list = getAllChildren(n,list); + } + } + return list; + } + + // public static boolean canNodeBeSeen(TileVisNode source,TileVisNode + // target) + // { + // double d = Math.sqrt(source.getDistanceFrom(target.xCoord, target.yCoord, + // target.zCoord)); + // double xd = (source.xCoord-target.xCoord) / d; + // double yd = (source.yCoord-target.yCoord) / d; + // double zd = (source.zCoord-target.zCoord) / d; + // return source.getWorldObj().rayTraceBlocks( + // Vec3.createVectorHelper(source.xCoord-xd+.5+.5, source.yCoord-yd, + // source.zCoord-zd), + // Vec3.createVectorHelper(target.xCoord+.5, target.yCoord+.5, + // target.zCoord+.5)) == null; + // } + + // public static HashMap> + // noderef = new HashMap>(); + // + // public static TileVisNode getClosestNodeWithinRadius(World world, int x, + // int y, int z, int radius) { + // TileVisNode out = null; + // WorldCoordinates wc = null; + // float cd = Float.MAX_VALUE; + // for (int sx = x - radius; sx <= x + radius; sx++) { + // for (int sy = y - radius; sy <= y + radius; sy++) { + // for (int sz = z - radius; sz <= z + radius; sz++) { + // wc = new WorldCoordinates(sx,sy,sz,world.provider.dimensionId); + // if (noderef.containsKey(wc)) { + // float d = wc.getDistanceSquared(x, y, z); + // if (d ritualMap = new HashMap(); - @Deprecated - public static List ritualList = new LinkedList(); public static List keyList = new LinkedList(); - public Rituals(int crystalLevel, int actCost, RitualEffect effect, String name) + public Rituals(int crystalLevel, int actCost, RitualEffect effect, String name, MRSRenderer renderer) { - this.crystalLevel = crystalLevel; //For a test commit + this.crystalLevel = crystalLevel; this.actCost = actCost; this.effect = effect; this.name = name; keyList.add(name); ritualMap.put(name, this); + this.customRenderer = renderer; } + public Rituals(int crystalLevel, int actCost, RitualEffect effect, String name) + { + this(crystalLevel, actCost, effect, name, null); + } + /** * Static method to register a ritual to the Ritual Registry * @param key Unique identification key - must be different from all others to properly register @@ -40,6 +46,22 @@ public class Rituals * @param name The name of the ritual * @return Returns true if properly registered, or false if the key is already used */ + public static boolean registerRitual(String key, int crystalLevel, int actCost, RitualEffect effect, String name, MRSRenderer renderer) + { + if(ritualMap.containsKey(key)) + { + return false; + } + else + { + Rituals ritual = new Rituals(crystalLevel, actCost, effect, name, renderer); + ritual.removeRitualFromList(); + ritualMap.put(key, ritual); + keyList.add(key); + return true; + } + } + public static boolean registerRitual(String key, int crystalLevel, int actCost, RitualEffect effect, String name) { if(ritualMap.containsKey(key)) @@ -270,6 +292,11 @@ public class Rituals { return this.crystalLevel; } + + private MRSRenderer getRenderer() + { + return this.customRenderer; + } public static void performEffect(IMasterRitualStone ritualStone, String ritualID) { @@ -330,4 +357,18 @@ public class Rituals return firstKey; } + + public static MRSRenderer getRendererForKey(String ritualID) + { + if(ritualMap.containsKey(ritualID)) + { + Rituals ritual = ritualMap.get(ritualID); + if(ritual != null) + { + return ritual.getRenderer(); + } + } + + return null; + } } diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java index c60e734d..c06e3e74 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/client/ClientProxy.java @@ -23,13 +23,16 @@ import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjecti import WayofTime.alchemicalWizardry.common.entity.projectile.EntityEnergyBazookaMainProjectile; import WayofTime.alchemicalWizardry.common.entity.projectile.EntityMeteor; import WayofTime.alchemicalWizardry.common.renderer.block.RenderConduit; +import WayofTime.alchemicalWizardry.common.renderer.block.RenderMasterStone; import WayofTime.alchemicalWizardry.common.renderer.block.RenderPedestal; import WayofTime.alchemicalWizardry.common.renderer.block.RenderPlinth; +import WayofTime.alchemicalWizardry.common.renderer.block.RenderReagentConduit; import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellEffectBlock; import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellEnhancementBlock; import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellModifierBlock; import WayofTime.alchemicalWizardry.common.renderer.block.RenderSpellParadigmBlock; import WayofTime.alchemicalWizardry.common.renderer.block.RenderWritingTable; +import WayofTime.alchemicalWizardry.common.renderer.block.ShaderHelper; import WayofTime.alchemicalWizardry.common.renderer.block.TEAltarRenderer; import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEAltarItemRenderer; import WayofTime.alchemicalWizardry.common.renderer.block.itemRender.TEConduitItemRenderer; @@ -61,8 +64,10 @@ import WayofTime.alchemicalWizardry.common.renderer.projectile.RenderMeteor; import WayofTime.alchemicalWizardry.common.spell.complex.EntitySpellProjectile; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import WayofTime.alchemicalWizardry.common.tileEntity.TEConduit; +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; +import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEffectBlock; import WayofTime.alchemicalWizardry.common.tileEntity.TESpellEnhancementBlock; import WayofTime.alchemicalWizardry.common.tileEntity.TESpellModifierBlock; @@ -122,7 +127,9 @@ public class ClientProxy extends CommonProxy ClientRegistry.bindTileEntitySpecialRenderer(TESpellEnhancementBlock.class, new RenderSpellEnhancementBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TESpellParadigmBlock.class, new RenderSpellParadigmBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TESpellModifierBlock.class, new RenderSpellModifierBlock()); - + ClientRegistry.bindTileEntitySpecialRenderer(TEReagentConduit.class, new RenderReagentConduit()); + ClientRegistry.bindTileEntitySpecialRenderer(TEMasterStone.class, new RenderMasterStone()); + //Item Renderer stuff MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockConduit), new TEConduitItemRenderer()); MinecraftForgeClient.registerItemRenderer(ItemBlock.getItemFromBlock(ModBlocks.blockSpellEffect), new TESpellEffectBlockItemRenderer()); @@ -132,6 +139,8 @@ public class ClientProxy extends CommonProxy //RenderingRegistry.registerEntityRenderingHandler(FireProjectile.class, new RenderFireProjectile()); //RenderingRegistry.registerBlockHandler(new AltarRenderer()); + + ShaderHelper.initShaders(); } @Override diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java index 8e55d286..9cf82935 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/NewPacketHandler.java @@ -15,6 +15,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; import WayofTime.alchemicalWizardry.common.tileEntity.TEOrientable; import WayofTime.alchemicalWizardry.common.tileEntity.TEPedestal; import WayofTime.alchemicalWizardry.common.tileEntity.TEPlinth; @@ -58,12 +59,6 @@ public enum NewPacketHandler } } - - /** - * This is only called on the client side - it adds an - * {@link IronChestMessageHandler} to the client side pipeline, since the - * only place we expect to handle messages is on the client. - */ @SideOnly(Side.CLIENT) private void addClientHandler() { @@ -79,6 +74,7 @@ public enum NewPacketHandler clientChannel.pipeline().addAfter(tileAltarCodec, "TEWritingTableHandler", new TEWritingTableMessageHandler()); clientChannel.pipeline().addAfter(tileAltarCodec, "ParticleHandler", new ParticleMessageHandler()); clientChannel.pipeline().addAfter(tileAltarCodec, "VelocityHandler", new VelocityMessageHandler()); + clientChannel.pipeline().addAfter(tileAltarCodec, "TEMasterStoneHandler", new TEMasterStoneMessageHandler()); } @@ -229,6 +225,23 @@ public enum NewPacketHandler } } } + + private static class TEMasterStoneMessageHandler extends SimpleChannelInboundHandler + { + @Override + protected void channelRead0(ChannelHandlerContext ctx, TEMasterStoneMessage msg) throws Exception + { + World world = AlchemicalWizardry.proxy.getClientWorld(); + TileEntity te = world.getTileEntity(msg.x, msg.y, msg.z); + if (te instanceof TEMasterStone) + { + TEMasterStone masterStone = (TEMasterStone) te; + + masterStone.setCurrentRitual(msg.ritual); + masterStone.isRunning = msg.isRunning; + } + } + } public static class BMMessage { @@ -320,6 +333,16 @@ public enum NewPacketHandler double yVel; double zVel; } + + public static class TEMasterStoneMessage extends BMMessage + { + int x; + int y; + int z; + + String ritual; + boolean isRunning; + } private class TEAltarCodec extends FMLIndexedMessageToMessageCodec { @@ -334,6 +357,7 @@ public enum NewPacketHandler addDiscriminator(6, TEWritingTableMessage.class); addDiscriminator(7, ParticleMessage.class); addDiscriminator(8, VelocityMessage.class); + addDiscriminator(9, TEMasterStoneMessage.class); } @Override @@ -497,6 +521,22 @@ public enum NewPacketHandler target.writeDouble(((VelocityMessage)msg).yVel); target.writeDouble(((VelocityMessage)msg).zVel); + break; + + case 9: + target.writeInt(((TEMasterStoneMessage)msg).x); + target.writeInt(((TEMasterStoneMessage)msg).y); + target.writeInt(((TEMasterStoneMessage)msg).z); + + String ritual = ((TEMasterStoneMessage)msg).ritual; + target.writeInt(ritual.length()); + for(int i=0; i potionList = new ArrayList(); + + public static void registerCombinedPotionRecipe(Potion result, Potion pot1, Potion pot2) + { + potionList.add(new CombinedPotionComponent(result, pot1, pot2)); + } + + public static boolean isRecipeValid(Potion pot1, Potion pot2) + { + for(CombinedPotionComponent recipe : potionList) + { + if(recipe.isRecipeValid(pot1, pot2)) + { + return true; + } + } + + return false; + } + + public static boolean isRecipeValid(int pot1, int pot2) + { + for(CombinedPotionComponent recipe : potionList) + { + if(recipe.isRecipeValid(pot1, pot2)) + { + return true; + } + } + + return false; + } + + public static Potion getPotion(Potion pot1, Potion pot2) + { + for(CombinedPotionComponent recipe : potionList) + { + if(recipe.isRecipeValid(pot1, pot2)) + { + return recipe.result; + } + } + + return null; + } + + public static Potion getPotion(int pot1, int pot2) + { + for(CombinedPotionComponent recipe : potionList) + { + if(recipe.isRecipeValid(pot1, pot2)) + { + return recipe.result; + } + } + + return null; + } + + public static ItemStack applyPotionEffect(ItemStack stack) + { + if(stack == null || !(stack.getItem() instanceof AlchemyFlask)) + { + return null; + } + + List list = AlchemyFlask.getEffects(stack); + if(list == null) + { + return stack; + } + + boolean isDone = false; + + for(AlchemyPotionHelper helper1 : list) + { + if(isDone) + { + continue; + } + + for(int i=0; i list = AlchemyFlask.getEffects(stack); + if(list == null) + { + return false; + } + + for(AlchemyPotionHelper helper1 : list) + { + for(AlchemyPotionHelper helper2 : list) + { + int pot1 = helper1.getPotionID(); + int pot2 = helper2.getPotionID(); + + if(isRecipeValid(pot1, pot2)) + { + return true; + } + } + } + + return false; + } + + public static PotionEffect getResultantPotion(AlchemyPotionHelper potE1, AlchemyPotionHelper potE2) + { + if(potE1 == null || potE2 == null) + { + return null; + } + + int pot1 = potE1.getPotionID(); + int pot2 = potE2.getPotionID(); + + if(isRecipeValid(pot1, pot2)) + { + int duration = (int)((potE1.getTickDuration()* Math.pow(8.0f / 3.0f, potE1.getdurationFactor()) + potE2.getdurationFactor() * Math.pow(8.0f / 3.0f, potE2.getdurationFactor()))/2.0); + int amplifier = (potE1.getConcentration() + potE2.getConcentration())/2; + + Potion pot = getPotion(pot1, pot2); + + return new PotionEffect(pot.id, duration, amplifier); + } + + return null; + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java new file mode 100644 index 00000000..9acdc197 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/alchemy/ICombinationalCatalyst.java @@ -0,0 +1,6 @@ +package WayofTime.alchemicalWizardry.common.alchemy; + +public interface ICombinationalCatalyst +{ + +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java index 10da3ed7..fbc115c8 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockOrientable.java @@ -18,9 +18,6 @@ import cpw.mods.fml.relauncher.SideOnly; public class BlockOrientable extends BlockContainer { - @SideOnly(Side.CLIENT) - private static IIcon[] fireIcons; - public BlockOrientable() { super(Material.rock); @@ -31,67 +28,11 @@ public class BlockOrientable extends BlockContainer //func_111022_d("AlchemicalWizardry:blocks"); } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.fireIcons = this.registerIconsWithString(iconRegister, "fireEffectBlock"); - } - - @SideOnly(Side.CLIENT) - public static IIcon[] registerIconsWithString(IIconRegister iconRegister, String blockString) - { - IIcon[] icons = new IIcon[7]; - - icons[0] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_input"); - icons[1] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_output"); - icons[2] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_upArrow"); - icons[3] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_downArrow"); - icons[4] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_leftArrow"); - icons[5] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_rightArrow"); - icons[6] = iconRegister.registerIcon("AlchemicalWizardry:" + blockString + "_blank"); - - return icons; - } - - @Override - @SideOnly(Side.CLIENT) - public IIcon getIcon(int side, int meta) - { - IIcon[] icons = this.getIconsForMeta(meta); - switch (side) - { - case 4: return icons[1]; - default: return icons[6]; - } - } - // @Override // public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int idk, float what, float these, float are) // { // return false; // } - - @SideOnly(Side.CLIENT) - - /** - * Retrieves the block texture to use based on the display side. Args: iBlockAccess, x, y, z, side - */ - public IIcon getBlockTexture(IBlockAccess par1IBlockAccess, int x, int y, int z, int side) - { - TileEntity tile = par1IBlockAccess.getTileEntity(x, y, z); - int meta = par1IBlockAccess.getBlockMetadata(x, y, z); - - if(tile instanceof TEOrientable) - { - ForgeDirection input = ((TEOrientable)tile).getInputDirection(); - ForgeDirection output = ((TEOrientable)tile).getOutputDirection(); - - return this.getIconsForMeta(meta)[this.getTextureIndexForSideAndOrientation(side, input, output)]; - } - - return this.getIcon(side, meta); - } @Override public TileEntity createNewTileEntity(World world, int dunno) @@ -99,11 +40,6 @@ public class BlockOrientable extends BlockContainer return new TEOrientable(); } - public IIcon[] getIconsForMeta(int metadata) - { - return this.fireIcons; - } - @Override public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) { diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java new file mode 100644 index 00000000..58aa94b2 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockReagentConduit.java @@ -0,0 +1,75 @@ +package WayofTime.alchemicalWizardry.common.block; + +import net.minecraft.block.BlockContainer; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockReagentConduit extends BlockContainer +{ + public BlockReagentConduit() + { + super(Material.rock); + this.setBlockName("blockReagentConduit"); + this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) + { + super.registerBlockIcons(iconRegister); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) + { + return new TEReagentConduit(); + } + +// @Override +// @SideOnly(Side.CLIENT) +// public void getSubBlocks(Item par1, CreativeTabs par2CreativeTabs, List par3List) +// { +// if (this.equals(ModBlocks.blockSpellParadigm)) +// { +// par3List.add(new ItemStack(par1, 1, 0)); +// par3List.add(new ItemStack(par1, 1, 1)); +// par3List.add(new ItemStack(par1, 1, 2)); +// par3List.add(new ItemStack(par1, 1, 3)); +// } else +// { +// super.getSubBlocks(par1, par2CreativeTabs, par3List); +// } +// } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float what, float these, float are) + { + return super.onBlockActivated(world, x, y, z, player, side, what, these, are); + } + + @Override + public boolean isOpaqueCube() + { + return false; + } + + @Override + public boolean renderAsNormalBlock() + { + return false; + } + + @Override + public int getRenderType() + { + return -1; + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java index faadb7e8..f1945778 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/BlockSpellParadigm.java @@ -21,29 +21,13 @@ public class BlockSpellParadigm extends BlockOrientable { public static final float minPos = (3f/16f); public static final float maxPos = (13f/16f); - - IIcon[] projectileIcons = new IIcon[7]; public BlockSpellParadigm() { super(); this.setBlockName("blockSpellParadigm"); - //setBlockBounds(minPos, minPos, minPos, maxPos, maxPos, maxPos); } - @Override - @SideOnly(Side.CLIENT) - public void registerBlockIcons(IIconRegister iconRegister) - { - this.projectileIcons = this.registerIconsWithString(iconRegister, "projectileParadigmBlock"); - } - -// @Override -// public Icon[] getIconsForMeta(int metadata) -// { -// return this.projectileIcons; -// } - @Override public TileEntity createNewTileEntity(World world, int meta) { @@ -109,104 +93,4 @@ public class BlockSpellParadigm extends BlockOrientable { return -1; } - - //TODO Need to make a renderer for the paradigm blocks and other spell blocks. - /* - @Override - public void addCollisionBoxesToList(World world, int i, int j, int k, AxisAlignedBB axisalignedbb, List arraylist, Entity par7Entity) - { - - setBlockBounds(minPos, minPos, minPos, maxPos, maxPos, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - - - TileEntity tile1 = world.getBlockTileEntity(i, j, k); - if (tile1 instanceof TESpellParadigmBlock) - { - TESpellParadigmBlock tileG = (TESpellParadigmBlock) tile1; - - - if (tileG.isSideRendered(ForgeDirection.WEST)) - { - setBlockBounds(0.0F, minPos, minPos, maxPos, maxPos, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - - if (tileG.isSideRendered(ForgeDirection.EAST)) - { - setBlockBounds(minPos, minPos, minPos, 1.0F, maxPos, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - - if (tileG.isSideRendered(ForgeDirection.DOWN)) - { - setBlockBounds(minPos, 0.0F, minPos, maxPos, maxPos, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - - if (tileG.isSideRendered(ForgeDirection.UP)) - { - setBlockBounds(minPos, minPos, minPos, maxPos, 1.0F, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - - if (tileG.isSideRendered(ForgeDirection.NORTH)) - { - setBlockBounds(minPos, minPos, 0.0F, maxPos, maxPos, maxPos); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - - if (tileG.isSideRendered(ForgeDirection.SOUTH)) - { - setBlockBounds(minPos, minPos, minPos, maxPos, maxPos, 1.0F); - super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); - } - - -// float facadeThickness = TransportConstants.FACADE_THICKNESS; -// -// -// if (tileG.hasFacade(ForgeDirection.EAST)) { -// setBlockBounds(1 - facadeThickness, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } -// -// -// if (tileG.hasFacade(ForgeDirection.WEST)) { -// setBlockBounds(0.0F, 0.0F, 0.0F, facadeThickness, 1.0F, 1.0F); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } -// -// -// if (tileG.hasFacade(ForgeDirection.UP)) { -// setBlockBounds(0.0F, 1 - facadeThickness, 0.0F, 1.0F, 1.0F, 1.0F); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } -// -// -// if (tileG.hasFacade(ForgeDirection.DOWN)) { -// setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, facadeThickness, 1.0F); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } -// -// -// if (tileG.hasFacade(ForgeDirection.SOUTH)) { -// setBlockBounds(0.0F, 0.0F, 1 - facadeThickness, 1.0F, 1.0F, 1.0F); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } -// -// -// if (tileG.hasFacade(ForgeDirection.NORTH)) { -// setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, facadeThickness); -// super.addCollisionBoxesToList(world, i, j, k, axisalignedbb, arraylist, par7Entity); -// } - } - setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); - } - */ } diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java index c3467192..8100c7b2 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/block/ImperfectRitualStone.java @@ -66,9 +66,9 @@ public class ImperfectRitualStone extends Block if (world.isRemote) { world.setRainStrength(1.0F); + world.setThunderStrength(1.0f); } - world.setThunderStrength(1.0f); world.getWorldInfo().setThunderTime(0); world.getWorldInfo().setThundering(true); return true; diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java index 97872e73..fd56ebce 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/entity/mob/EntityDemon.java @@ -49,13 +49,13 @@ public class EntityDemon extends EntityTameable implements IDemon protected void dropFewItems(boolean par1, int par2) { - if(!(this.getOwner() instanceof EntityPlayer)) - { - return; - } ItemStack drop = new ItemStack(ModItems.demonPlacer, 1, this.getDemonID()); - DemonPlacer.setOwnerName(drop, SpellHelper.getUsername((EntityPlayer)this.getOwner())); + if((this.getOwner() instanceof EntityPlayer)) + { + DemonPlacer.setOwnerName(drop, SpellHelper.getUsername((EntityPlayer)this.getOwner())); + } + if (this.hasCustomNameTag()) { drop.setStackDisplayName(this.getCustomNameTag()); diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java index 23f3d126..30cbda83 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/BoundArmour.java @@ -18,6 +18,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; import net.minecraftforge.common.util.Constants; import thaumcraft.api.IGoggles; +import thaumcraft.api.IRunicArmor; import thaumcraft.api.nodes.IRevealer; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.ModItems; @@ -28,8 +29,8 @@ import cpw.mods.fml.common.Optional.Interface; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -@Optional.InterfaceList(value = {@Interface(iface="thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft"), @Interface(iface="thaumcraft.api.IGoggles", modid = "Thaumcraft")}) -public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,IRevealer, IGoggles +@Optional.InterfaceList(value = {@Interface(iface="thaumcraft.api.nodes.IRevealer", modid = "Thaumcraft"), @Interface(iface="thaumcraft.api.IGoggles", modid = "Thaumcraft"), @Interface(iface="thaumcraft.api.IRunicArmor", modid = "Thaumcraft")}) +public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,IRevealer, IGoggles, IRunicArmor { private static int invSize = 9; private static IIcon helmetIcon; @@ -56,7 +57,6 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I } @SideOnly(Side.CLIENT) - public IIcon getIconFromDamage(int par1) { if (this.equals(ModItems.boundHelmet)) @@ -91,6 +91,26 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I @Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { + double armourReduction = 0.0; + + if(player.isPotionActive(AlchemicalWizardry.customPotionSoulFray)) + { + int i = player.getActivePotionEffect(AlchemicalWizardry.customPotionSoulFray).getAmplifier() + 1; + + armourReduction = (i+1)*0.1; + } + + double damageAmount = 0.25; + + if(!player.isPotionActive(AlchemicalWizardry.customPotionSoulHarden)) + { + damageAmount *= 0.9; + } + + damageAmount *= (1.0-armourReduction); + + int maxAbsorption = 100000; + if (source.equals(DamageSource.drown)) { return new ArmorProperties(-1, 0, 0); @@ -100,7 +120,7 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I { if (isImmuneToVoid(armor)) { - return new ArmorProperties(-1, 3, 100000); + return new ArmorProperties(-1, damageAmount, maxAbsorption); } else { return new ArmorProperties(-1, 0, 0); @@ -121,17 +141,10 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I { if (source.isUnblockable()) { - return new ArmorProperties(-1, 3, 4); - } - - if(player.isPotionActive(AlchemicalWizardry.customPotionSoulFray)) - { - int i = player.getActivePotionEffect(AlchemicalWizardry.customPotionSoulFray).getAmplifier() + 1; - - return new ArmorProperties(-1, 3, (int)(25*(1.0f - 0.15f*i))); + return new ArmorProperties(-1, damageAmount * 0.8d, maxAbsorption); } - return new ArmorProperties(-1, 3, 100000); + return new ArmorProperties(-1, damageAmount, maxAbsorption); } return new ArmorProperties(-1, 0, 0); @@ -410,6 +423,7 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I { itemStack.setTagCompound(new NBTTagCompound()); } + itemTag = itemStack.stackTagCompound; ItemStack[] inv = new ItemStack[9]; NBTTagList tagList = itemTag.getTagList("Inventory", Constants.NBT.TAG_COMPOUND); @@ -624,4 +638,60 @@ public class BoundArmour extends ItemArmor implements ISpecialArmor,IBindable ,I { return this.hasIGoggles(itemstack); } + + @Override + @Optional.Method(modid = "Thaumcraft") + public int getRunicCharge(ItemStack itemstack) + { + ItemStack[] inv = this.getInternalInventory(itemstack); + int shardLevel = this.getMaxBloodShardLevel(itemstack); + int count = 0; + int harden = 0; + + if(inv == null) + { + return 0; + } + + for(ItemStack stack : inv) + { + if(count >= shardLevel) + { + break; + } + + if(stack == null || !(stack.getItem() instanceof ArmourUpgrade)) + { + continue; + } + + if(stack.getItem() instanceof ItemArmor && ((ItemArmor)stack.getItem()).armorType != this.armorType) + { + continue; + } + + if(stack.hasTagCompound()) + { + NBTTagCompound tag = stack.getTagCompound(); + + int enchLvl = tag.getByte("RS.HARDEN"); + + if(stack.getItem() instanceof IRunicArmor) + { + enchLvl += ((IRunicArmor)stack.getItem()).getRunicCharge(stack); + } + + if(enchLvl > 0) + { + harden += enchLvl; + if(((ArmourUpgrade)stack.getItem()).isUpgrade()) + { + count += 1; + } + } + } + } + + return harden; + } } diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java index 00d9c533..0e74a674 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/ItemRitualDiviner.java @@ -144,6 +144,11 @@ public class ItemRitualDiviner extends EnergyItems { TEMasterStone masterStone = (TEMasterStone) tileEntity; List ritualList = Rituals.getRitualList(this.getCurrentRitual(par1ItemStack)); + if(ritualList == null) + { + return false; + } + int playerInvRitualStoneLocation = -1; for (int i = 0; i < playerInventory.length; i++) diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java index 30b08daf..5452e519 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/SacrificialDagger.java @@ -12,6 +12,7 @@ import net.minecraft.util.DamageSource; import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; import WayofTime.alchemicalWizardry.common.tileEntity.TEAltar; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -77,7 +78,8 @@ public class SacrificialDagger extends Item par2World.spawnParticle("reddust", posX + Math.random() - Math.random(), posY + Math.random() - Math.random(), posZ + Math.random() - Math.random(), f1, f2, f3); } - if (!par2World.isRemote && !(par3EntityPlayer.getClass().equals(EntityPlayerMP.class))) + if(!par2World.isRemote && SpellHelper.isFakePlayer(par2World, par3EntityPlayer)) + //if (!(par3EntityPlayer.getClass().equals(EntityPlayerMP.class))) { return par1ItemStack; } diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java index 11588be5..05f3d698 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/AlchemyFlask.java @@ -92,7 +92,7 @@ public class AlchemyFlask extends Item } } - public void setEffects(ItemStack par1ItemStack, ArrayList list) + public static void setEffects(ItemStack par1ItemStack, List list) { NBTTagCompound itemTag = par1ItemStack.stackTagCompound; diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java new file mode 100644 index 00000000..8097cde0 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/potion/CombinationalCatalyst.java @@ -0,0 +1,24 @@ +package WayofTime.alchemicalWizardry.common.items.potion; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.Item; +import WayofTime.alchemicalWizardry.AlchemicalWizardry; +import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; + +public class CombinationalCatalyst extends Item implements ICombinationalCatalyst +{ + public CombinationalCatalyst() + { + super(); + this.setCreativeTab(AlchemicalWizardry.tabBloodMagic); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister iconRegister) + { + this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:CombinationalCatalyst"); + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java index 92963f18..54c64001 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/sigil/SigilOfGrowth.java @@ -3,27 +3,20 @@ package WayofTime.alchemicalWizardry.common.items.sigil; import java.util.List; import net.minecraft.block.Block; -import net.minecraft.block.BlockCocoa; -import net.minecraft.block.BlockCrops; -import net.minecraft.block.BlockDirectional; -import net.minecraft.block.BlockMushroom; -import net.minecraft.block.BlockSapling; -import net.minecraft.block.BlockStem; import net.minecraft.block.IGrowable; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.world.World; -import net.minecraftforge.common.ForgeHooks; import net.minecraftforge.common.IPlantable; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.BonemealEvent; import WayofTime.alchemicalWizardry.AlchemicalWizardry; import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; +import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; import WayofTime.alchemicalWizardry.common.items.EnergyItems; import cpw.mods.fml.common.eventhandler.Event.Result; import cpw.mods.fml.relauncher.Side; diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBase.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBase.java deleted file mode 100644 index 469c0ff6..00000000 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBase.java +++ /dev/null @@ -1,169 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.thaumcraft; - -import java.util.List; - -import javax.swing.Icon; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.EnumRarity; -import net.minecraft.item.ItemStack; -import net.minecraft.util.IIcon; -import net.minecraft.util.MovingObjectPosition; -import net.minecraft.util.StatCollector; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public abstract class FocusBase extends EnergyItems //implements IWandFocus -{ - protected IIcon ornament, depth; - - public FocusBase() - { - super(); - setMaxDamage(1); - setNoRepair(); - setMaxStackSize(1); - } - - boolean hasOrnament() - { - return false; - } - - boolean hasDepth() - { - return false; - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - super.registerIcons(iconRegister); -// if(hasOrnament()) -// { -// ornament = iconRegister.registerIcon("AlchemicalWizardry:" + this.getUnlocalizedName() + "Orn"); -// } -// if(hasDepth()) -// { -// depth = iconRegister.registerIcon("AlchemicalWizardry:" + this.getUnlocalizedName() + "Depth"); -// } - } - - @Override - public boolean isItemTool(ItemStack par1ItemStack) - { - return true; - } - -/*erride - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); - AspectList cost = getVisCost(); - - if (cost != null && cost.size() > 0) - { - par3List.add(StatCollector.translateToLocal(isVisCostPerTick() ? "item.Focus.cost2" : "item.Focus.cost1")); - - for (Aspect aspect : cost.getAspectsSorted()) - { - float amount = cost.getAmount(aspect) / 100.0F; - par3List.add(" " + '\u00a7' + aspect.getChatcolor() + aspect.getName() + '\u00a7' + "r x " + amount); - } - } - } - - @Override - public int getItemEnchantability() - { - return 5; - } - - @Override - public EnumRarity getRarity(ItemStack itemstack) - { - return EnumRarity.rare; - } - - @Override - public Icon getOrnament() - { - return ornament; - } - - @Override - public Icon getFocusDepthLayerIcon() - { - return depth; - } - - @Override - public WandFocusAnimation getAnimation() - { - return WandFocusAnimation.WAVE; - } - - @Override - public boolean isVisCostPerTick() - { - return false; - } - - public boolean isUseItem() - { - return isVisCostPerTick(); - } - - @Override - public ItemStack onFocusRightClick(ItemStack paramItemStack, World paramWorld, EntityPlayer paramEntityPlayer, MovingObjectPosition paramMovingObjectPosition) - { - if (isUseItem()) - { - paramEntityPlayer.setItemInUse(paramItemStack, Integer.MAX_VALUE); - } - - return paramItemStack; - } - - @Override - public void onUsingFocusTick(ItemStack paramItemStack, EntityPlayer paramEntityPlayer, int paramInt) - { - // NO-OP - } - - @Override - public void onPlayerStoppedUsingFocus(ItemStack paramItemStack, World paramWorld, EntityPlayer paramEntityPlayer, int paramInt) - { - // NO-OP - } - - @Override - public String getSortingHelper(ItemStack paramItemStack) - { - return "00"; - } - - @Override - public boolean onFocusBlockStartBreak(ItemStack paramItemStack, int paramInt1, int paramInt2, int paramInt3, EntityPlayer paramEntityPlayer) - { - return false; - } - - @Override - public boolean acceptsEnchant(int id) - { - if (id == ThaumcraftApi.enchantFrugal || - id == ThaumcraftApi.enchantPotency) - { - return true; - } - - return false; - } - - */ -} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBloodBlast.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBloodBlast.java deleted file mode 100644 index 8d377041..00000000 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusBloodBlast.java +++ /dev/null @@ -1,191 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.thaumcraft; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.world.World; -import WayofTime.alchemicalWizardry.AlchemicalWizardry; -import WayofTime.alchemicalWizardry.common.entity.projectile.EnergyBlastProjectile; -import WayofTime.alchemicalWizardry.common.items.EnergyItems; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class FocusBloodBlast extends FocusBase -{ - //private static final AspectList visUsage = new AspectList().add(Aspect.AIR, 15).add(Aspect.ENTROPY, 45); - - private final int maxCooldown = 7; - - public static Map playerCooldown = new HashMap(); - - public FocusBloodBlast() - { - super(); - this.setUnlocalizedName("focusBloodBlast"); - this.setEnergyUsed(100); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - super.registerIcons(iconRegister); - - if (hasOrnament()) - { - ornament = iconRegister.registerIcon("AlchemicalWizardry:" + "focusBloodBlast" + "Orn"); - } - - if (hasDepth()) - { - depth = iconRegister.registerIcon("AlchemicalWizardry:" + "focusBloodBlast" + "Depth"); - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - //super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); - if (!(par1ItemStack.stackTagCompound == null)) - { - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - /* - @Override - public void onUsingFocusTick(ItemStack stack, EntityPlayer par3EntityPlayer, int ticks) - { - if (AlchemicalWizardry.isThaumcraftLoaded) - { - Item item = stack.getItem(); - Class clazz = item.getClass(); - - while (!clazz.getName().equals("thaumcraft.common.items.wands.ItemWandCasting")) - { - if (clazz == Object.class) - { - return; - } - - clazz = clazz.getSuperclass(); - } - - //Item testItem = item.set - - //Method consumeAllVis = null; - try - { - if (!playerCooldown.containsKey(par3EntityPlayer.username)) - { - playerCooldown.put(par3EntityPlayer.username, 0); - } - - Method getFocusItem = clazz.getMethod("getFocusItem", ItemStack.class); - ItemStack focusStack = (ItemStack) getFocusItem.invoke(item, stack); - //int potency = EnchantmentHelper.getEnchantmentLevel(ThaumcraftApi.enchantPotency, focusStack); - int cooldown = playerCooldown.get(par3EntityPlayer.username) + 1; - playerCooldown.put(par3EntityPlayer.username, cooldown); - - if (cooldown >= this.maxCooldown) - { - Method consumeAllVis = clazz.getMethod("consumeAllVis", ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class); - - if ((Boolean) consumeAllVis.invoke(item, stack, par3EntityPlayer, getVisCost(), true)) - { - playerCooldown.put(par3EntityPlayer.username, 0); - EnergyItems.checkAndSetItemOwner(focusStack, par3EntityPlayer); - World world = par3EntityPlayer.worldObj; - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - this.syphonBatteries(focusStack, par3EntityPlayer, 100); - } - - //world.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F)); - world.playSoundAtEntity(par3EntityPlayer, "thaumcraft:wand", 0.5F, 1F); - - if (!world.isRemote) - { - //par2World.spawnEntityInWorld(new EnergyBlastProjectile(par2World, par3EntityPlayer, damage)); - world.spawnEntityInWorld(new EnergyBlastProjectile(world, par3EntityPlayer, (int) (5))); - //this.setDelay(par1ItemStack, maxDelay); - } - } - } - } catch (NoSuchMethodException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (SecurityException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (IllegalAccessException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvocationTargetException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - @Override - public void onPlayerStoppedUsingFocus(ItemStack paramItemStack, World paramWorld, EntityPlayer paramEntityPlayer, int paramInt) - { - playerCooldown.put(paramEntityPlayer.username, 0); - } - - @Override - public String getSortingHelper(ItemStack itemstack) - { - return "BLOODBLAST"; - } - - @Override - public int getFocusColor() - { - return 0x8A0707; - } - - @Override - public AspectList getVisCost() - { - return visUsage; - } - - @Override - public boolean isVisCostPerTick() - { - return true; - } - - @Override - public WandFocusAnimation getAnimation() - { - return WandFocusAnimation.WAVE; - } - - boolean hasOrnament() - { - return true; - } - */ -} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusGravityWell.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusGravityWell.java deleted file mode 100644 index 8a0e3678..00000000 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/FocusGravityWell.java +++ /dev/null @@ -1,263 +0,0 @@ -package WayofTime.alchemicalWizardry.common.items.thaumcraft; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import net.minecraft.client.renderer.texture.IIconRegister; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.item.ItemStack; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - -public class FocusGravityWell extends FocusBase -{ - //private static final AspectList visUsage = new AspectList().add(Aspect.AIR, 5).add(Aspect.ORDER, 5); - - private final int maxCooldown = 1; - - public static Map playerCooldown = new HashMap(); - - public FocusGravityWell() - { - super(); - this.setUnlocalizedName("focusGravityWell"); - this.setEnergyUsed(100); - } - - @Override - @SideOnly(Side.CLIENT) - public void registerIcons(IIconRegister iconRegister) - { - super.registerIcons(iconRegister); - - if (hasOrnament()) - { - ornament = iconRegister.registerIcon("AlchemicalWizardry:" + "focusGravityWell" + "Orn"); - } - - if (hasDepth()) - { - depth = iconRegister.registerIcon("AlchemicalWizardry:" + "focusGravityWell" + "Depth"); - } - } - - @Override - public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) - { - //super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); - if (!(par1ItemStack.stackTagCompound == null)) - { - if (!par1ItemStack.stackTagCompound.getString("ownerName").equals("")) - { - par3List.add("Current owner: " + par1ItemStack.stackTagCompound.getString("ownerName")); - } - } - } - - /* - @Override - public void onUsingFocusTick(ItemStack stack, EntityPlayer par3EntityPlayer, int ticks) - { - if (AlchemicalWizardry.isThaumcraftLoaded) - { - Item item = stack.getItem(); - Class clazz = item.getClass(); - - while (!clazz.getName().equals("thaumcraft.common.items.wands.ItemWandCasting")) - { - if (clazz == Object.class) - { - return; - } - - clazz = clazz.getSuperclass(); - } - - //Item testItem = item.set - - //Method consumeAllVis = null; - try - { - if (!playerCooldown.containsKey(par3EntityPlayer.username)) - { - playerCooldown.put(par3EntityPlayer.username, 0); - } - - Method getFocusItem = clazz.getMethod("getFocusItem", ItemStack.class); - ItemStack focusStack = (ItemStack) getFocusItem.invoke(item, stack); - //int potency = EnchantmentHelper.getEnchantmentLevel(ThaumcraftApi.enchantPotency, focusStack); - int cooldown = playerCooldown.get(par3EntityPlayer.username) + 1; - playerCooldown.put(par3EntityPlayer.username, cooldown); - //if(cooldown>=this.maxCooldown) - { - Method consumeAllVis = clazz.getMethod("consumeAllVis", ItemStack.class, EntityPlayer.class, AspectList.class, boolean.class); - - if ((Boolean) consumeAllVis.invoke(item, stack, par3EntityPlayer, getVisCost(), true)) - { - playerCooldown.put(par3EntityPlayer.username, 0); - EnergyItems.checkAndSetItemOwner(focusStack, par3EntityPlayer); - Vec3 vector = par3EntityPlayer.getLookVec(); - float distance = 2; - //if(par3EntityPlayer.worldObj.isRemote) - { - List entities = par3EntityPlayer.worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(par3EntityPlayer.posX + vector.xCoord * distance - 0.5f, par3EntityPlayer.posY + vector.yCoord * distance - 0.5f, par3EntityPlayer.posZ + vector.zCoord * distance - 0.5f, par3EntityPlayer.posX + vector.xCoord * distance + 0.5f, par3EntityPlayer.posY + vector.yCoord * distance + 0.5f, par3EntityPlayer.posZ + vector.zCoord * distance + 0.5f).expand(1, 1, 1)); - - for (Entity entity : entities) - { - if (entity.getEntityName() == par3EntityPlayer.username) - { - continue; - } - - entity.motionX = par3EntityPlayer.posX + vector.xCoord * distance - entity.posX; - entity.motionY = par3EntityPlayer.posY + vector.yCoord * distance - entity.posY; - entity.motionZ = par3EntityPlayer.posZ + vector.zCoord * distance - entity.posZ; - //entity.setVelocity(par3EntityPlayer.posX+vector.xCoord*distance-entity.posX, par3EntityPlayer.posY+vector.yCoord*distance-entity.posY, par3EntityPlayer.posZ+vector.zCoord*distance-entity.posZ); - } - } - World world = par3EntityPlayer.worldObj; - - if (!par3EntityPlayer.capabilities.isCreativeMode) - { - this.syphonBatteriesWithoutParticles(focusStack, par3EntityPlayer, 10, false); - } - } - } - } catch (NoSuchMethodException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (SecurityException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (IllegalAccessException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvocationTargetException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - @Override - public void onPlayerStoppedUsingFocus(ItemStack stack, World paramWorld, EntityPlayer par3EntityPlayer, int paramInt) - { - playerCooldown.put(par3EntityPlayer.username, 0); - - if (AlchemicalWizardry.isThaumcraftLoaded) - { - Item item = stack.getItem(); - Class clazz = item.getClass(); - - while (!clazz.getName().equals("thaumcraft.common.items.wands.ItemWandCasting")) - { - if (clazz == Object.class) - { - return; - } - - clazz = clazz.getSuperclass(); - } - - //Item testItem = item.set - - //Method consumeAllVis = null; - try - { - Method getFocusItem = clazz.getMethod("getFocusItem", ItemStack.class); - ItemStack focusStack = (ItemStack) getFocusItem.invoke(item, stack); - int potency = EnchantmentHelper.getEnchantmentLevel(ThaumcraftApi.enchantPotency, focusStack); - - if (potency > 0) - { - EnergyItems.checkAndSetItemOwner(focusStack, par3EntityPlayer); - Vec3 vector = par3EntityPlayer.getLookVec(); - float distance = 2; - //if(par3EntityPlayer.worldObj.isRemote) - { - List entities = par3EntityPlayer.worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(par3EntityPlayer.posX + vector.xCoord * distance - 0.5f, par3EntityPlayer.posY + vector.yCoord * distance - 0.5f, par3EntityPlayer.posZ + vector.zCoord * distance - 0.5f, par3EntityPlayer.posX + vector.xCoord * distance + 0.5f, par3EntityPlayer.posY + vector.yCoord * distance + 0.5f, par3EntityPlayer.posZ + vector.zCoord * distance + 0.5f).expand(1, 1, 1)); - - for (Entity entity : entities) - { - if (entity.getEntityName() == par3EntityPlayer.username) - { - continue; - } - - float speed = 1.0F * potency; - entity.motionX = vector.xCoord * speed; - entity.motionY = vector.yCoord * speed; - entity.motionZ = vector.zCoord * speed; - //entity.setVelocity(par3EntityPlayer.posX+vector.xCoord*distance-entity.posX, par3EntityPlayer.posY+vector.yCoord*distance-entity.posY, par3EntityPlayer.posZ+vector.zCoord*distance-entity.posZ); - } - } - } - } catch (NoSuchMethodException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (SecurityException e1) - { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (IllegalAccessException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (IllegalArgumentException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (InvocationTargetException e) - { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - } - - @Override - public String getSortingHelper(ItemStack itemstack) - { - return "BLOODBLAST"; - } - - @Override - public int getFocusColor() - { - return 0x8A0707; - } - - @Override - public AspectList getVisCost() - { - return visUsage; - } - - @Override - public boolean isVisCostPerTick() - { - return true; - } - - @Override - public WandFocusAnimation getAnimation() - { - return WandFocusAnimation.WAVE; - } - - boolean hasOrnament() - { - return false; - } - */ -} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java index 7cdef813..e418babc 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/items/thaumcraft/ItemSanguineArmour.java @@ -8,10 +8,15 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemArmor; import net.minecraft.item.ItemStack; +import net.minecraft.util.DamageSource; import net.minecraft.util.IIcon; import net.minecraft.world.World; +import net.minecraftforge.common.ISpecialArmor; import thaumcraft.api.IGoggles; +import thaumcraft.api.IRepairable; +import thaumcraft.api.IRunicArmor; import thaumcraft.api.IVisDiscountGear; +import thaumcraft.api.ThaumcraftApi; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.nodes.IRevealer; import WayofTime.alchemicalWizardry.AlchemicalWizardry; @@ -20,13 +25,17 @@ import WayofTime.alchemicalWizardry.api.items.interfaces.ArmourUpgrade; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGoggles, IVisDiscountGear, IRevealer +public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGoggles, IVisDiscountGear, IRevealer, IRunicArmor, IRepairable { - private static IIcon helmetIcon; + private static IIcon helmetIcon; + private static IIcon plateIcon; + private static IIcon leggingsIcon; + private static IIcon bootsIcon; - public ItemSanguineArmour() + public ItemSanguineArmour(int armorType) { - super(AlchemicalWizardry.sanguineArmourArmourMaterial, 4, 0); + super(AlchemicalWizardry.sanguineArmourArmourMaterial, 0, armorType); + setMaxDamage(1000); setCreativeTab(AlchemicalWizardry.tabBloodMagic); } @@ -34,36 +43,97 @@ public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGog @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister iconRegister) { - //this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); - this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SanguineHelmet"); + this.itemIcon = iconRegister.registerIcon("AlchemicalWizardry:SheathedItem"); + this.helmetIcon = iconRegister.registerIcon("AlchemicalWizardry:SanguineHelmet"); + this.plateIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundPlate"); + this.leggingsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundLeggings"); + this.bootsIcon = iconRegister.registerIcon("AlchemicalWizardry:BoundBoots"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIconFromDamage(int par1) + { + if (this.equals(ModItems.sanguineHelmet)) + { + return this.helmetIcon; + } + + if (this.equals(ModItems.sanguineRobe)) + { + return this.plateIcon; + } + + if (this.equals(ModItems.sanguinePants)) + { + return this.leggingsIcon; + } + + if (this.equals(ModItems.sanguineBoots)) + { + return this.bootsIcon; + } + + return this.itemIcon; } @Override public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) { - //if(AlchemicalWizardry.isThaumcraftLoaded) + if (this == ModItems.sanguineHelmet) { - if (this == ModItems.sanguineHelmet) - { - return "alchemicalwizardry:models/armor/sanguineArmour_layer_1.png"; - } + return "alchemicalwizardry:models/armor/sanguineArmour_layer_1.png"; + } + + if (this == ModItems.sanguineRobe || this == ModItems.sanguineBoots) + { + return "alchemicalwizardry:models/armor/boundArmour_layer_1.png"; + } + + if (this == ModItems.sanguinePants) + { + return "alchemicalwizardry:models/armor/boundArmour_layer_2.png"; + } else + { + return null; } - return null; } @Override public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { - par3List.add("A pair of goggles imbued with power"); - par3List.add("Vis discount: " + 8 + "%"); - } + int discount = 0; + + switch(this.armorType) + { + case 0: + discount = 8; + break; + case 1: + discount = 4; + break; + case 2: + discount = 3; + break; + case 3: + discount = 3; + break; + } + + switch(this.armorType) + { + case 0: + par3List.add("A pair of goggles imbued with power"); + break; + case 1: - -// @Override -// public boolean showNodes(ItemStack itemstack, EntityLivingBase player) -// { -// return true; -// } + case 2: + + case 3: + par3List.add("Robes imbued with forbidden power"); + } + + par3List.add("Vis discount: " + discount + "%"); + } @Override public void onArmourUpdate(World world, EntityPlayer player, ItemStack thisItemStack) @@ -74,7 +144,7 @@ public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGog @Override public boolean isUpgrade() { - return false; + return true; } @Override @@ -92,7 +162,14 @@ public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGog @Override public int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect) { - return 8; + switch(this.armorType) + { + case 0: return 8; + case 1: return 4; + case 2: return 3; + case 3: return 3; + } + return 0; } @Override @@ -100,4 +177,10 @@ public class ItemSanguineArmour extends ItemArmor implements ArmourUpgrade, IGog { return true; } -} + + @Override + public int getRunicCharge(ItemStack itemstack) { + // TODO Auto-generated method stub + return 0; + } +} \ No newline at end of file diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java new file mode 100644 index 00000000..0ac24694 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/potion/PotionSoulHarden.java @@ -0,0 +1,18 @@ +package WayofTime.alchemicalWizardry.common.potion; + +import net.minecraft.potion.Potion; + +public class PotionSoulHarden extends Potion +{ + public PotionSoulHarden(int par1, boolean par2, int par3) + { + super(par1, par2, par3); + } + + @Override + public Potion setIconIndex(int par1, int par2) + { + super.setIconIndex(par1, par2); + return this; + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java new file mode 100644 index 00000000..ffe8039f --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/AlchemyCircleRenderer.java @@ -0,0 +1,85 @@ +package WayofTime.alchemicalWizardry.common.renderer; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; + +public class AlchemyCircleRenderer extends MRSRenderer +{ + private ResourceLocation resourceLocation = new ResourceLocation("alchemicalwizardry:textures/models/TransCircle.png"); + private int colourRed; + private int colourGreen; + private int colourBlue; + private int colourIntensity; + private double xOffset; + private double yOffset; + private double zOffset; + private double radius; + private double initialY; + + public AlchemyCircleRenderer(ResourceLocation resource, int red, int green, int blue, int intensity, double xOff, double initialY, double yOff, double zOff, double radius) + { + this.resourceLocation = resource; + this.colourRed = red; + this.colourGreen = green; + this.colourBlue = blue; + this.colourIntensity = intensity; + this.xOffset = xOff; + this.initialY = initialY; + this.yOffset = yOff; + this.zOffset = zOff; + this.radius = radius; + } + + @Override + public void renderAt(TEMasterStone tile, double x, double y, double z) + { + GL11.glPushMatrix(); + float f1 = 1.0f; + Tessellator tessellator = Tessellator.instance; + this.bindTexture(resourceLocation); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + float f2 = 0; + float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + GL11.glDepthMask(false); + + tessellator.startDrawingQuads(); + tessellator.setColorRGBA(colourRed, colourGreen, colourBlue, colourIntensity); + + GL11.glTranslated(x+0.5+xOffset, y+0.5+(yOffset-initialY)*(tile.runningTime/100d)+initialY, z+0.5+zOffset); + + float rotationAngle = (float) (720.0 * (System.currentTimeMillis() & 0x3FFFL) / 0x3FFFL); + + GL11.glRotatef(rotationAngle, 0F, 1F, 0F); //Rotate on planar axis + //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis + //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically + + tessellator.setBrightness(240); + + double finalRadius = (radius)*(tile.runningTime/100d); + + tessellator.addVertexWithUV(-finalRadius, 0, -finalRadius, 0.0d, 0.0d); + tessellator.addVertexWithUV(finalRadius, 0, -finalRadius, 1.0d, 0.0d); + tessellator.addVertexWithUV(finalRadius, 0, finalRadius, 1.0d, 1.0d); + tessellator.addVertexWithUV(-finalRadius, 0, finalRadius, 0.0d, 1.0d); + + tessellator.draw(); + + GL11.glDepthMask(true); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glPopMatrix(); + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java new file mode 100644 index 00000000..e8c78f78 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/BeamRenderer.java @@ -0,0 +1,115 @@ +package WayofTime.alchemicalWizardry.common.renderer; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.client.FMLClientHandler; + +public class BeamRenderer +{ + private static final ResourceLocation field_110629_a = new ResourceLocation("textures/entity/beacon_beam.png"); + protected static TileEntityRendererDispatcher field_147501_a; + + protected static void bindTexture(ResourceLocation p_147499_1_) + { + TextureManager texturemanager = BeamRenderer.field_147501_a.field_147553_e; + + if (texturemanager != null) + { + texturemanager.bindTexture(p_147499_1_); + } + } + + public static void render() + { + double d0 = 0; + double d1 = 0; + double d2 = 0; + + + float distance = 5; //Total distance + + GL11.glPushMatrix(); + float f1 = 1.0f; + Tessellator tessellator = Tessellator.instance; + BeamRenderer.bindTexture(field_110629_a); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + float f2 = 0; + float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + + GL11.glDepthMask(false); + + tessellator.startDrawingQuads(); + tessellator.setColorRGBA(255, 0, 0, 50); + //tessellator.setColorOpaque(255, 255, 255); + + double inside = 0.45d-0.5d; + double outside = 1.0d-0.45d-0.5d; + + double d18 = inside; + double d19 = inside; + double d20 = outside; + double d21 = inside; + double d22 = inside; + double d23 = outside; + double d24 = outside; + double d25 = outside; + double d26 = (double)(distance * f1);// + 0.2; + double d27 = 0.0D; + double d28 = 1.0D; + double d29 = (double)(-1.0F + f3); + double d30 = (double)(distance * f1) + d29; + + GL11.glTranslated(d0+0.5, d1+0.5, d2+0.5); + + GL11.glRotatef(45F, 0F, 1F, 0F); //Rotate on planar axis + GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis + //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically + + double offset = 0; + + tessellator.setBrightness(240); + float s = 1F / 16F; +// GL11.glTranslatef(0F, s, s); +// GL11.glScalef(1F, s * 14F, s * 14F); + tessellator.addVertexWithUV(d26, d18, d19, d28, d30); + tessellator.addVertexWithUV(offset, d18, d19, d28, d29); + tessellator.addVertexWithUV(offset, d20, d21, d27, d29); + tessellator.addVertexWithUV(d26, d20, d21, d27, d30); + tessellator.addVertexWithUV(d26, d24, d25, d28, d30); + tessellator.addVertexWithUV(offset, d24, d25, d28, d29); + tessellator.addVertexWithUV(offset, d22, d23, d27, d29); + tessellator.addVertexWithUV(d26, d22, d23, d27, d30); + tessellator.addVertexWithUV(d26, d20, d21, d28, d30); + tessellator.addVertexWithUV(offset, d20, d21, d28, d29); + tessellator.addVertexWithUV(offset, d24, d25, d27, d29); + tessellator.addVertexWithUV(d26, d24, d25, d27, d30); + tessellator.addVertexWithUV(d26, d22, d23, d28, d30); + tessellator.addVertexWithUV(offset, d22, d23, d28, d29); + tessellator.addVertexWithUV(offset, d18, d19, d27, d29); + tessellator.addVertexWithUV(d26, d18, d19, d27, d30); + + //ShaderHelper.useShaderWithProps(ShaderHelper.beam, "time", (int) tileAltar.getWorldObj().getTotalWorldTime()); + tessellator.draw(); + //ShaderHelper.releaseShader(); + + GL11.glDepthMask(true); + + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glPopMatrix(); + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java new file mode 100644 index 00000000..4bf6de31 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/MRSRenderer.java @@ -0,0 +1,22 @@ +package WayofTime.alchemicalWizardry.common.renderer; + +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher; +import net.minecraft.util.ResourceLocation; +import WayofTime.alchemicalWizardry.common.renderer.block.RenderMasterStone; +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; + +public abstract class MRSRenderer +{ + public abstract void renderAt(TEMasterStone tile, double x, double y, double z); + + protected void bindTexture(ResourceLocation p_147499_1_) + { + TextureManager texturemanager = TileEntityRendererDispatcher.instance.field_147553_e; + + if (texturemanager != null) + { + texturemanager.bindTexture(p_147499_1_); + } + } +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java new file mode 100644 index 00000000..0a54d29d --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderMasterStone.java @@ -0,0 +1,30 @@ +package WayofTime.alchemicalWizardry.common.renderer.block; + +import org.lwjgl.opengl.GL11; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; +import WayofTime.alchemicalWizardry.api.rituals.Rituals; +import WayofTime.alchemicalWizardry.common.renderer.MRSRenderer; +import WayofTime.alchemicalWizardry.common.tileEntity.TEMasterStone; + +public class RenderMasterStone extends TileEntitySpecialRenderer +{ + @Override + public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) + { + if (tileEntity instanceof TEMasterStone) + { + String str = ((TEMasterStone) tileEntity).getCurrentRitual(); + MRSRenderer renderer = Rituals.getRendererForKey(str); + + if(renderer != null) + { + renderer.renderAt(((TEMasterStone) tileEntity), d0, d1, d2); + } + } + } +} \ No newline at end of file diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java index b1f5b4ec..3a474a32 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderPedestal.java @@ -1,5 +1,6 @@ package WayofTime.alchemicalWizardry.common.renderer.block; +import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.entity.RenderItem; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; @@ -8,6 +9,7 @@ import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraft.util.ResourceLocation; import net.minecraftforge.common.util.ForgeDirection; @@ -86,6 +88,25 @@ public class RenderPedestal extends TileEntitySpecialRenderer GL11.glPopMatrix(); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_LIGHTING); + + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glTranslatef((float) d0 + 0.5F, (float) d1 + 1.5F, (float) d2 + 0.5F); + + FMLClientHandler.instance().getClient().renderEngine.bindTexture(test); + GL11.glPushMatrix(); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); +// this.modelInputMirror.render((Entity) null, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, tileSpellBlock.getInputDirection(), tileSpellBlock.getOutputDirection()); + GL11.glPopMatrix(); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopMatrix(); + + + } } diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java new file mode 100644 index 00000000..bafec76d --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/RenderReagentConduit.java @@ -0,0 +1,70 @@ +package WayofTime.alchemicalWizardry.common.renderer.block; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +import WayofTime.alchemicalWizardry.common.renderer.BeamRenderer; +import WayofTime.alchemicalWizardry.common.tileEntity.TEReagentConduit; +import cpw.mods.fml.client.FMLClientHandler; + +public class RenderReagentConduit extends TileEntitySpecialRenderer +{ + private static final ResourceLocation field_110629_a = new ResourceLocation("alchemicalwizardry:textures/models/TransCircle.png"); + + @Override + public void renderTileEntityAt(TileEntity tileEntity, double d0, double d1, double d2, float f) + { + if (tileEntity instanceof TEReagentConduit) + { + GL11.glPushMatrix(); + float f1 = 1.0f; + Tessellator tessellator = Tessellator.instance; + this.bindTexture(field_110629_a); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, 10497.0F); + GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, 10497.0F); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + float f2 = 0; + float f3 = -f2 * 0.2F - (float)MathHelper.floor_float(-f2 * 0.1F); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + + GL11.glDepthMask(false); + + tessellator.startDrawingQuads(); + tessellator.setColorRGBA(0, 0, 255, 90); + //tessellator.setColorOpaque(255, 255, 255); + + GL11.glTranslated(d0+0.5, d1+0.5, d2+0.5); + + GL11.glRotatef(tileEntity.getWorldObj().getWorldTime()/3.0f, 0F, 1F, 0F); //Rotate on planar axis + //GL11.glRotatef(30F, 0F, 0F, 1F); //Rotate vertical axis + //GL11.glRotatef(tileAltar.getWorldObj().getWorldTime()*2f, 1F, 0F, 0F); //Rotate cylindrically + + double offset = 0; + + tessellator.setBrightness(240); +// GL11.glTranslatef(0F, s, s); +// GL11.glScalef(1F, s * 14F, s * 14F); + tessellator.addVertexWithUV(-0.5d, 0, -0.5d, 0.0d, 0.0d); + tessellator.addVertexWithUV(0.5d, 0, -0.5d, 1.0d, 0.0d); + tessellator.addVertexWithUV(0.5d, 0, 0.5d, 1.0d, 1.0d); + tessellator.addVertexWithUV(-0.5d, 0, 0.5d, 0.0d, 1.0d); + + tessellator.draw(); + + GL11.glDepthMask(true); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glRotatef(180F, 0.0F, 0.0F, 1.0F); + GL11.glPopMatrix(); + } + } +} \ No newline at end of file diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java new file mode 100644 index 00000000..46641497 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/renderer/block/ShaderHelper.java @@ -0,0 +1,184 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Apr 9, 2014, 11:20:26 PM (GMT)] + */ +package WayofTime.alchemicalWizardry.common.renderer.block; + +import java.io.BufferedReader; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.logging.Level; + +import org.lwjgl.opengl.ARBFragmentShader; +import org.lwjgl.opengl.ARBShaderObjects; +import org.lwjgl.opengl.ARBVertexShader; +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.common.FMLLog; + +public final class ShaderHelper { + + private static final int VERT = ARBVertexShader.GL_VERTEX_SHADER_ARB; + private static final int FRAG = ARBFragmentShader.GL_FRAGMENT_SHADER_ARB; + + public static int beam = 0; + + public static void initShaders() { +// if(!useShaders()) +// return; + + beam = createProgram(null, "/assets/alchemicalwizardry/shaders/beam.frag"); + } + + public static void useShaderWithProps(int shader, Object... props) { +// if(!useShaders()) +// return; + + ARBShaderObjects.glUseProgramObjectARB(shader); + + if(shader != 0 && props.length % 2 == 0) { + int propCount = props.length / 2; + for(int i = 0; i < propCount; i++) { + String propName = (String) props[i * 2]; + Object propVal = props[i * 2 + 1]; + + int uniform = ARBShaderObjects.glGetUniformLocationARB(shader, propName); + if(propVal instanceof Integer) + ARBShaderObjects.glUniform1iARB(uniform, (Integer) propVal); + if(propVal instanceof Float) + ARBShaderObjects.glUniform1fARB(uniform, (Float) propVal); + // Possible Vector2, Vector3 and Vector4, no need yet. + } + } + } + + public static void useShader(int shader) { + useShaderWithProps(shader); + } + + public static void releaseShader() { + useShader(0); + } + + public static boolean useShaders() { + return true;//ConfigHandler.useShaders && OpenGlHelper.shadersSupported; + } + + // Most of the code taken from the LWJGL wiki + // http://lwjgl.org/wiki/index.php?title=GLSL_Shaders_with_LWJGL + + private static int createProgram(String vert, String frag) { + int vertId = 0, fragId = 0, program = 0; + if(vert != null) + vertId = createShader(vert, VERT); + if(frag != null) + fragId = createShader(frag, FRAG); + + program = ARBShaderObjects.glCreateProgramObjectARB(); + if(program == 0) + return 0; + + if(vert != null) + ARBShaderObjects.glAttachObjectARB(program, vertId); + if(frag != null) + ARBShaderObjects.glAttachObjectARB(program, fragId); + + ARBShaderObjects.glLinkProgramARB(program); + if(ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_LINK_STATUS_ARB) == GL11.GL_FALSE) { +// FMLLog.log(Level.WARNING, getLogInfo(program)); + return 0; + } + + ARBShaderObjects.glValidateProgramARB(program); + if (ARBShaderObjects.glGetObjectParameteriARB(program, ARBShaderObjects.GL_OBJECT_VALIDATE_STATUS_ARB) == GL11.GL_FALSE) { +// FMLLog.log(Level.WARNING, getLogInfo(program)); + return 0; + } + + return program; + } + + private static int createShader(String filename, int shaderType){ + int shader = 0; + try { + shader = ARBShaderObjects.glCreateShaderObjectARB(shaderType); + + if(shader == 0) + return 0; + + ARBShaderObjects.glShaderSourceARB(shader, readFileAsString(filename)); + ARBShaderObjects.glCompileShaderARB(shader); + + if (ARBShaderObjects.glGetObjectParameteriARB(shader, ARBShaderObjects.GL_OBJECT_COMPILE_STATUS_ARB) == GL11.GL_FALSE) + throw new RuntimeException("Error creating shader: " + getLogInfo(shader)); + + return shader; + } + catch(Exception e) { + ARBShaderObjects.glDeleteObjectARB(shader); + e.printStackTrace(); + return -1; + } + } + + private static String getLogInfo(int obj) { + return ARBShaderObjects.glGetInfoLogARB(obj, ARBShaderObjects.glGetObjectParameteriARB(obj, ARBShaderObjects.GL_OBJECT_INFO_LOG_LENGTH_ARB)); + } + + private static String readFileAsString(String filename) throws Exception { + StringBuilder source = new StringBuilder(); + InputStream in = ShaderHelper.class.getResourceAsStream(filename); + Exception exception = null; + BufferedReader reader; + + if(in == null) + return ""; + + try { + reader = new BufferedReader(new InputStreamReader(in, "UTF-8")); + + Exception innerExc= null; + try { + String line; + while((line = reader.readLine()) != null) + source.append(line).append('\n'); + } catch(Exception exc) { + exception = exc; + } finally { + try { + reader.close(); + } catch(Exception exc) { + if(innerExc == null) + innerExc = exc; + else exc.printStackTrace(); + } + } + + if(innerExc != null) + throw innerExc; + } catch(Exception exc) { + exception = exc; + } finally { + try { + in.close(); + } catch(Exception exc) { + if(exception == null) + exception = exc; + else exc.printStackTrace(); + } + + if(exception != null) + throw exception; + } + + return source.toString(); + } +} + diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java index 95a6638b..6d0d1b88 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/rituals/RitualEffectFeatheredKnife.java @@ -88,7 +88,7 @@ public class RitualEffectFeatheredKnife extends RitualEffect { entity = (EntityPlayer) iterator1.next(); - if (entity.getClass().equals(EntityPlayerMP.class) || entity.getClass().equals(EntityPlayer.class)) + if (!SpellHelper.isFakePlayer(world, entity)) { entityCount++; } @@ -114,9 +114,9 @@ public class RitualEffectFeatheredKnife extends RitualEffect entity = (EntityPlayer) iterator2.next(); //entity = (EntityPlayer)iterator1.next(); - if (entity.getClass().equals(EntityPlayerMP.class) || entity.getClass().equals(EntityPlayer.class)) + if (!SpellHelper.isFakePlayer(world, entity)) { - if (entity.getHealth() > 6.2f) + if (entity.getHealth()/entity.getMaxHealth() > 0.3d) { entity.setHealth(entity.getHealth() - 1); entityCount++; diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java index 5e7f1d3d..7bb7c70c 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEAltar.java @@ -1,5 +1,8 @@ package WayofTime.alchemicalWizardry.common.tileEntity; +import java.util.List; + +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.Item; @@ -7,6 +10,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.network.Packet; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.ChatComponentText; @@ -60,6 +65,8 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui protected FluidStack fluidOutput; protected FluidStack fluidInput; private int progress; + + private int lockdownDuration; public TEAltar() { @@ -81,6 +88,7 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui upgradeLevel = 0; isResultBlock = false; progress = 0; + this.lockdownDuration = 0; } @Override @@ -145,6 +153,7 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui bufferCapacity = par1NBTTagCompound.getInteger("bufferCapacity"); progress = par1NBTTagCompound.getInteger("progress"); isResultBlock = par1NBTTagCompound.getBoolean("isResultBlock"); + lockdownDuration = par1NBTTagCompound.getInteger("lockdownDuration"); } public void setMainFluid(FluidStack fluid) @@ -221,6 +230,7 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui par1NBTTagCompound.setInteger("capacity", capacity); par1NBTTagCompound.setInteger("progress", progress); par1NBTTagCompound.setInteger("bufferCapacity", bufferCapacity); + par1NBTTagCompound.setInteger("lockdownDuration", lockdownDuration); } @Override @@ -527,6 +537,11 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui public void updateEntity() { //this.capacity=(int) (10000*this.capacityMultiplier); + if(this.lockdownDuration > 0) + { + this.lockdownDuration --; + } + if (!worldObj.isRemote && worldObj.getWorldTime() % 20 == 0) { //TODO @@ -541,9 +556,23 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui fluidOutputted = Math.min(this.fluid.amount, fluidOutputted); this.fluidOutput.amount += fluidOutputted; this.fluid.amount -= fluidOutputted; - } + + if(AlchemicalWizardry.lockdownAltar) + { + List list = SpellHelper.getPlayersInRange(worldObj, xCoord+0.5, yCoord+0.5, zCoord+0.5, 15, 15); + boolean hasHighRegen = false; + for(EntityPlayer player : list) + { + PotionEffect regenEffect = player.getActivePotionEffect(Potion.regeneration); + if(regenEffect != null && regenEffect.getAmplifier() >= 2) + { + this.lockdownDuration += 20; + } + } + } + } - if (worldObj.getWorldTime() % 150 == 0) + if (worldObj.getWorldTime() % 100 == 0) { startCycle(); } @@ -564,6 +593,30 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui { return; } + + int range = 5; + + for(int i=-range; i<=range; i++) + { + for(int j=-range; j<=range; j++) + { + for(int k=-range; k<=range; k++) + { + Block block = worldObj.getBlock(xCoord + i, yCoord + j, zCoord + k); + int meta = worldObj.getBlockMetadata(xCoord + i, yCoord + j, zCoord + k); + + List list = block.getDrops(worldObj, xCoord + i, yCoord + j, zCoord + k, meta, 1); + for(ItemStack stack : list) + { + String str = stack.getUnlocalizedName(); + if(str.contains("fallenKanade")) + { + System.out.println("" + str); + } + } + } + } + } //o,o this is always true if (worldTime % 1 == 0) @@ -726,7 +779,14 @@ public class TEAltar extends TileEntity implements IInventory, IFluidTank, IFlui public void sacrificialDaggerCall(int amount, boolean isSacrifice) { - fluid.amount += Math.min(capacity - fluid.amount, (isSacrifice ? 1 + sacrificeEfficiencyMultiplier : 1 + selfSacrificeEfficiencyMultiplier) * amount); + if(!isSacrifice && this.lockdownDuration > 0) + { + int amt = (int) Math.min(bufferCapacity - fluidInput.amount, (isSacrifice ? 1 + sacrificeEfficiencyMultiplier : 1 + selfSacrificeEfficiencyMultiplier) * amount); + fluidInput.amount += amt; + }else + { + fluid.amount += Math.min(capacity - fluid.amount, (isSacrifice ? 1 + sacrificeEfficiencyMultiplier : 1 + selfSacrificeEfficiencyMultiplier) * amount); + } } @Override diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java index 897b7857..1255a7dd 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEMasterStone.java @@ -2,18 +2,20 @@ package WayofTime.alchemicalWizardry.common.tileEntity; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.Packet; import net.minecraft.server.MinecraftServer; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import WayofTime.alchemicalWizardry.api.rituals.IMasterRitualStone; import WayofTime.alchemicalWizardry.api.rituals.Rituals; import WayofTime.alchemicalWizardry.api.soulNetwork.LifeEssenceNetwork; +import WayofTime.alchemicalWizardry.common.NewPacketHandler; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; public class TEMasterStone extends TileEntity implements IMasterRitualStone { - //private int currentRitual; private String currentRitualString; private boolean isActive; private String owner; @@ -21,10 +23,11 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone private int cooldown; private int var1; private int direction; + public boolean isRunning; + public int runningTime; public TEMasterStone() { - //currentRitual = 0; isActive = false; owner = ""; cooldown = 0; @@ -32,34 +35,36 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone direction = 0; varString1 = ""; currentRitualString = ""; + isRunning = false; + runningTime = 0; } @Override public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); - //currentRitual = par1NBTTagCompound.getInteger("currentRitual"); isActive = par1NBTTagCompound.getBoolean("isActive"); owner = par1NBTTagCompound.getString("owner"); cooldown = par1NBTTagCompound.getInteger("cooldown"); var1 = par1NBTTagCompound.getInteger("var1"); direction = par1NBTTagCompound.getInteger("direction"); currentRitualString = par1NBTTagCompound.getString("currentRitualString"); -// varString1 = par1NBTTagCompound.getString("varString1"); + isRunning = par1NBTTagCompound.getBoolean("isRunning"); + runningTime = par1NBTTagCompound.getInteger("runningTime"); } @Override public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); - //par1NBTTagCompound.setInteger("currentRitual", currentRitual); par1NBTTagCompound.setBoolean("isActive", isActive); par1NBTTagCompound.setString("owner", owner); par1NBTTagCompound.setInteger("cooldown", cooldown); par1NBTTagCompound.setInteger("var1", var1); par1NBTTagCompound.setInteger("direction", direction); par1NBTTagCompound.setString("currentRitualString", currentRitualString); -// par1NBTTagCompound.setString("varString1", varString1); + par1NBTTagCompound.setBoolean("isRunning", isRunning); + par1NBTTagCompound.setInteger("runningTime",runningTime); } public void activateRitual(World world, int crystalLevel, EntityPlayer player) @@ -101,7 +106,6 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone { player.addChatMessage(new ChatComponentText("You feel a pull, but you are too weak to push any further.")); - //TODO Bad stuff return; } @@ -122,6 +126,7 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone var1 = 0; currentRitualString = testRitual; isActive = true; + isRunning = true; direction = Rituals.getDirectionOfRitual(world, xCoord, yCoord, zCoord, testRitual); worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } @@ -134,6 +139,14 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone @Override public void updateEntity() { + if(isRunning && runningTime < 100) + { + runningTime++; + }else if(!isRunning && runningTime > 0) + { + runningTime--; + } + if (!isActive) { return; @@ -156,14 +169,25 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone isActive = false; currentRitualString = ""; worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); - //PacketDispatcher.sendPacketToAllPlayers(TEAltar.getParticlePacket(xCoord, yCoord, zCoord, (short)3)); return; } } if (worldObj.getBlockPowerInput(xCoord, yCoord, zCoord) > 0) { + if(isRunning) + { + isRunning = false; + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } return; + }else + { + if(!isRunning) + { + isRunning = true; + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } } performRitual(worldObj, xCoord, yCoord, zCoord, currentRitualString); @@ -202,6 +226,8 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone public void setActive(boolean active) { this.isActive = active; + this.isRunning = active; + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); } public int getDirection() @@ -232,4 +258,27 @@ public class TEMasterStone extends TileEntity implements IMasterRitualStone { return zCoord; } + + public String getCurrentRitual() + { + return this.currentRitualString; + } + + public void setCurrentRitual(String str) + { + this.currentRitualString = str; + } + + @Override + public Packet getDescriptionPacket() + { + return NewPacketHandler.getPacket(this); + } + + public AxisAlignedBB getRenderBoundingBox() + { + double renderExtention = 1.0d; + AxisAlignedBB bb = AxisAlignedBB. getBoundingBox(xCoord-renderExtention, yCoord-renderExtention, zCoord-renderExtention, xCoord+1+renderExtention, yCoord+1+renderExtention, zCoord+1+renderExtention); + return bb; + } } \ No newline at end of file diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java new file mode 100644 index 00000000..f8e52d79 --- /dev/null +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEReagentConduit.java @@ -0,0 +1,8 @@ +package WayofTime.alchemicalWizardry.common.tileEntity; + +import net.minecraft.tileentity.TileEntity; + +public class TEReagentConduit extends TileEntity +{ + +} diff --git a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java index bc005c4a..a106176a 100644 --- a/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java +++ b/1.7.10/main/java/WayofTime/alchemicalWizardry/common/tileEntity/TEWritingTable.java @@ -19,6 +19,8 @@ import WayofTime.alchemicalWizardry.common.IBindingAgent; import WayofTime.alchemicalWizardry.common.ICatalyst; import WayofTime.alchemicalWizardry.common.IFillingAgent; import WayofTime.alchemicalWizardry.common.NewPacketHandler; +import WayofTime.alchemicalWizardry.common.alchemy.CombinedPotionRegistry; +import WayofTime.alchemicalWizardry.common.alchemy.ICombinationalCatalyst; import WayofTime.alchemicalWizardry.common.items.EnergyItems; import WayofTime.alchemicalWizardry.common.items.potion.AlchemyFlask; import WayofTime.alchemicalWizardry.common.spell.complex.effect.SpellHelper; @@ -288,6 +290,30 @@ public class TEWritingTable extends TileEntity implements IInventory return -1; } + + public boolean containsCombinationCatalyst() + { + if (getCombinationCatalystPosition() != -1) + { + return true; + } else + { + return false; + } + } + + public int getCombinationCatalystPosition() + { + for (int i = 1; i <= 5; i++) + { + if (inv[i] != null && inv[i].getItem() instanceof ICombinationalCatalyst) + { + return i; + } + } + + return -1; + } public boolean containsRegisteredPotionIngredient() { @@ -615,7 +641,6 @@ public class TEWritingTable extends TileEntity implements IInventory } } else if (this.containsFillingAgent() && this.containsPotionFlask()) { - //TODO if (getStackInSlot(6) == null) { progress++; @@ -661,7 +686,55 @@ public class TEWritingTable extends TileEntity implements IInventory } } } - } else + } + else if (this.containsPotionFlask() && this.containsCombinationCatalyst()) + { + //TODO + if (getStackInSlot(6) == null && CombinedPotionRegistry.hasCombinablePotionEffect(inv[this.getPotionFlaskPosition()])) + { + progress++; + + if (worldTime % 4 == 0) + { + SpellHelper.sendIndexedParticleToAllAround(worldObj, xCoord, yCoord, zCoord, 20, worldObj.provider.dimensionId, 1, xCoord, yCoord, zCoord); + } + + if (progress >= progressNeeded) + { + ItemStack flaskStack = inv[this.getPotionFlaskPosition()]; + //ItemStack ingredientStack = inv[this.getRegisteredPotionIngredientPosition()]; + ItemStack combinationCatalyst = inv[this.getCombinationCatalystPosition()]; + + if (flaskStack == null || combinationCatalyst == null) + { + progress = 0; + + if (worldObj != null) + { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + + return; + } + + ItemStack newFlask = CombinedPotionRegistry.applyPotionEffect(flaskStack); + if(newFlask != null) + { + this.setInventorySlotContents(6, newFlask); + this.decrStackSize(this.getPotionFlaskPosition(), 1); + this.decrStackSize(this.getCombinationCatalystPosition(), 1); + + progress = 0; + + if (worldObj != null) + { + worldObj.markBlockForUpdate(xCoord, yCoord, zCoord); + } + } + } + } + } + else { if (!isRecipeValid()) { diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/lang/en_US.lang b/1.7.10/main/resources/assets/alchemicalwizardry/lang/en_US.lang index 778353db..a377343f 100644 --- a/1.7.10/main/resources/assets/alchemicalwizardry/lang/en_US.lang +++ b/1.7.10/main/resources/assets/alchemicalwizardry/lang/en_US.lang @@ -172,6 +172,10 @@ item.sanguineHelmet.name=Sanguine Helmet item.itemSeerSigil.name=Sigil of Sight item.itemFluidSigil.name= item.multiTool.name=Dynamic Mace +item.itemCombinationalCatalyst.name=Combinational Catalyst +item.sanguineRobe.name=Sanguine Robes +item.sanguinePants.name=Sanguine Leggings +item.sanguineBoots.name=Sanguine Boots #Creative Tab itemGroup.tabBloodMagic=Blood Magic diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/models/armor/armor - Shortcut.lnk b/1.7.10/main/resources/assets/alchemicalwizardry/models/armor/armor - Shortcut.lnk deleted file mode 100644 index 806150bd4ab973a746ab149163fced1f066eb7d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1926 zcmds1O-NKx6#mAssF0c|3lqyh3au~{T7)48BV!9OX|!D2g^xFHbo7mHxbM-B)WT(D z5JU?hLdgE0MVn}qNJN_;q@pkiqE!?jE`kVxzVpTzXEbo!_8#Z{^PO|P`<>ejAW&Vw z7MSx}#I9fqLL5(>4Yv1Odld+Lt=)9LsP{LyAIP0Av?DyHVC1|&*+=6v;8u9q4c!pX9| z6{GjjhfBXHjL{!Zhwc&|Ny!Jt%f?O?A_uCOM=?ifGlOGgBc;hnh7s*th2m;+11K(e zG<}qT(pXYsmZ^=ThmH+IBrI9P(=d=EYd{TpOK=U>wLBMSD;w1y|1MEIw!j|t#he+o zIc%j|8eua_Uv>h}GSH6$_vn7k$W!fRl@}i8wBu!%Z(em^| z6qma0{hHr3<0cz^axWnVBo=`!zQPEa5T%3_`h96?w#s)eB2wt&*u^NN>aau=%6Yz2 z$)i^K>?l9Q+=HhWi4?w~2Ps{duP!@9=2nVEX6wsb_?2((G9hE}nQ$`SQZl?=Rtr`kS$u=L=`n+ZUj}>V{Sq diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/shaders/beam.frag b/1.7.10/main/resources/assets/alchemicalwizardry/shaders/beam.frag new file mode 100644 index 00000000..82fccbe1 --- /dev/null +++ b/1.7.10/main/resources/assets/alchemicalwizardry/shaders/beam.frag @@ -0,0 +1,12 @@ + uniform sampler2D bgl_RenderedTexture; + uniform int time; + + void main() { + vec2 texcoord = vec2(gl_TexCoord[0]); + vec4 color = texture2D(bgl_RenderedTexture, texcoord); + + float gs = (color.r + color.g + color.b) / 3; + float r = sin(texcoord.x * 6 - 1.5 + sin(texcoord.y - time / 3.0)) * 1.1; //(sin((texcoord.x - texcoord.y) * 4 - time) + 1) / 2; + + gl_FragColor = vec4(gs, gs, max(gs, r), gl_Color.a); + } diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/textures/items/CombinationalCatalyst.png b/1.7.10/main/resources/assets/alchemicalwizardry/textures/items/CombinationalCatalyst.png new file mode 100644 index 0000000000000000000000000000000000000000..dc14d2dcad0ccf24b6788f708678864f585a5e37 GIT binary patch literal 548 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 BzG46X literal 0 HcmV?d00001 diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircle.png b/1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircle.png new file mode 100644 index 0000000000000000000000000000000000000000..ecda29fc8c3e76e482b00e092eee77e3ae456d74 GIT binary patch literal 194218 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%0DEe!rli?oYj^T6Gct%)6wi16C5Utco z*n4!rt|ZC!C5-qwIQVC2FxTT5HVJw=pg+zoOgAfsB|v^Y6{sL8Jl*8Z9673_0x3{} zm9bfybfLvGh_$@N??^K3X5Wp}-Z1;!3tf|{=#M>409ro*wp_vlU<`4bX;2An6CRCj zGUZRCGHJqA-BXA^vsC-1t=zLC65(LmfXX8a~?ioAXkgYa;8XcD2@xLnp}R!CKj?-2amvkYNLZ7U2)K^)ncHj#dOX5-Z)SWH{)>Z zqeQNjVml?6B3z`?d@NI7BKis7`8Kb2kO!fq{I*B;%$E(1(Lb~z6KHkue1v5{r}qeK z=jzW&g@KJvuuraicB4^^#}harFQ4=RzbK#S=aQz7Gf3nOq zPb1D_=_PBt2^V%eA0*|2;?ih}!$|XUqs+K@2as5cKNjN7@K4S<+|u)z6qThe8eE-4 zYs&`qyZI{_?G)sc;q(xcDsgsg4Q#>&z7=S;%r8}9(FU3||G3P&w^l6c2j;Cm_4X#< zN2#MHe?n9WKq3As+QHS)gH-XWUSn*JnxP>^bHGap&bhQOrHgwYSkW)|H}tIc8CBI= zoY5H>!wkAS!gS677;dlzsnwc|To)dCCLZrGDYpc6nuCW?q}fv- zSa2e|na^gLIPHM zn|+8sfBn2{rdfVvWo2i_FiyfA(LAceh;i+aIa_sor>3nc^i`g(fhiSDoCRcZ zQs;blI8zMfF{})1|9G-M+h2%$@#{&nr4uUyxJF^$6==aklc7TMva66L#q!}O4bSCc zAh0aq@Hju2wBKj;0xfJL1}TEPzdUS z18ECUM}G4Wb~-YAnPBw9VNcyPx48mR7@mGnYb_nS@NhR@<<;fA7#jGi2YO$bve&zd zGOuvie(|k^bdD3EhQs<7FT_M&#EX1d&9*(6Ex3fNxBG2vZQ#CP9-YfcCk#LDIas#x zKC0(rxJ<_Zj@aephf1fl;GS5vap{UITA@>(r@pvsDg?G#PU^~kOG?uK#T+KX;X!6; zdYjN`KM0Kd)yEnh2#SB*EbJun5tx_8E3Ga&U+k?=L~9jEyiRARzSU}J{vYjJ$f|A$3II4N9m*BMq#o%e$A)} z(GV_Q3P)!M@>{rlD#I|dp-*3K5dDp><_JUQ&*anRwZq;t??T{hgRtA#D_arsqI)|O zzwH@MN)~dMbX=Ofzx+Nz>D+Clk)$4e@T9^4x}rDdbACR) z7Ko(B;Q3)mdkH{CjwcjbzF|-m#qPh7%;sA`mVc0nnjyOVl#hjuCtj!H_dDW0=SzQ( ze1-6FAfy8|Ly4&=)QoO&wa%yc`;T}aTIFsU@2;QIXPo~c;t16cxx*+k{rkCzHgI`h|sr>35rbbcInFF%YP zoa52~1BwaSq9>`t`wvp#Szg|7YCj2-h1&}i40uo3gd1YS!*7Pk0d|vkL08JZ6t_ z50a*2m=%gWw<&i&{=uHf zMsddxxolc<84eM9w)x;^o~5q!=)))8&2tg%T5YIt)VBlE)5E8}yq+)R6!oQ8jHFv9 z4mPSoe^_@Y?s{jzCBdvmOCIieut`&#=Btb6i*Ki0?YnRh+fCFv5_aZxrYrT5Y_Fvz z%X*TP<=SM|5#m#E;9bMt3Z?D0@e+D?dmnwDwfFQa(+x4EQSwLJzxf~LS<8ubhZ=0w zvH%>(eA1GWfz+?r+1n5`!fgOu3Csy@V5Ue2^))_&q}Fk5TU?N+_rW6hNF*6tK%Grg0sQV|amJ#RQQyS`ucKHEY*O zVg>?M-~*s<4Zp)f>r%*OddQD=w$U*$Ei?uGQs3+eig96`6WFp?E)gESNLB|WBSRON zG88|l#Dqgl4K#?Saq8y))Hr#1)PcihfcL8YuX_*EAbCIF3#EeP>oj)iLILA=+wou9 zP2s75)vwfUTom3kJJ^Kpm+CumBed%@%$Ewl?e3htQTT#!+~Ue&Ocm)iDwdgxF#bBD z2yQytrcJ5{Jx{PGsN@NMzgG!a^oGWy!w8|_5g`K<6*5qE8)ZFgUY9uAp+o4x)32e& z{Vn8_L=HtC5#>rB2C=@29W;C*YE0##!@LuOP`Ou%eMm#%>@N|y2^r`9_ypq4W@llh zvarwH(>kjDl_S7s(h$?S7G4cZ`cQ~PO373&9P6d&*RN+;!15(g9`oKKbmJCkZfdOn zAnPiYL$UM7TDDNii=Nd>?8AY__EC|M@6E_05dkR z$neoYj5|!1>>b$$&;pm9P}}eq=%`>}!e)cO_0ZgcZgLMSLe1;X4-mf0iEMK@Vnzat z9irF`q824=xb}1DJ$RJA8O$&CEh<4pQfrt5}!70Tixk%!Pbmr?Z-xgS?pNg-u|q6mWq%kSak7gezNrc8xV7SjMRK zA8fu#i;M6WP85zv)S!JPFG#aBh#qC|QvrL?<8>vtFJeWaY$%m2gdFb*L)K~R#n0a+m|)i5hP zRi2&wm@f=GIzV9)w=}0$J#`56^4DhqJTOky4q=4k^bR6K9(wIuf>EMs2Tc)MzS z!8t&7&xKAfTxKYQ&<;ua48j_ZjLc?Wr+|EUNg?iG*+QWEf5;2}b1As<)K;}`^!c6T zDF{))B<{C<(V>E6oX(Sq?1O1-+{Ir9)zew^$c$KDTfSY4SLd6R!Sw;&7ZK zL{Gk0o(Ykfz;=+qVX=)td8Kp(xMBeTG!sFf7}&Y)_L(O?-!QQg>k?Eebhvw>JHV<0 zkcPZWHsK!S7UB+LB3s)iva;@As53C2;%R3FJLj6eg&0T34#nLXcYM{9-eQso$#!*( z>bEf$Red%h$-#VCLHQx|4WjEqMHROX;SKYy6WCS_E|?k^vCc2k3*gTJ@bewJxMeU# z6aBS~ZxfS+WSfOY)i?`<#{HNv=OVrggerr8o{ZD;5-)gLAuq>y1^SCRoB zs3Fikc=+%g=8|AZ?iE)r|GQI_^GSsU7h~5E^1lr*U=Z3GFgrpyx%N)uP~bq$Dfcn{ zaTNO`1Hu0%t&L2&q8t72&!9|udGbg93?m`K8v|LzZ>Ua0;Y7q&@O(;CE3y7PBfkAke9THI*-ax*q07bT( z)@yTYPLC@%Pu=D*P-^i0@9m>pu?24mmLWL*H3$aqkO_vx3^NN-D`62LcVj4bj}(Oo zmUflU{J0LsTyV16T(%v_p^hwQL?0zYT$U)zJQCmt0;eBX-gnnqX?Os1M_~E^w67ov z1^$o=)3D%ea+|>ELT6U(m%RVNby-M=L9ine1C50jWMMnj+Mye{jaUoDk3RM0Gr`!| z8Ay>^Qjyn5J8qJ7Gw#9{oM0?k!Nk?K57+_53*eX&J;OA%z-a`&x$6&1rwtRFJD}@_ zdFZuC!!U)r@A&cK#LVVrXCV_n?);B9BHYBQ!!k2tyzSsQPa|d=<}Uk#;SV1Q{qOOh zlD&cof^wt&tSUMI37Ag+ecu7y5vfH!Uxavv%Y9+;9%f{1C_Gk@K40{z=J+83N%!=w zEn?9kuu^0#{t%Aw)EHovCA3UPI7y;-aj+5D~9Pd*mV%kzg|o8 zg_EYB2TJpx-3F=tmKy1<(*x!Q{*R_J0n0IM`}i$IB^04Vico~4v9-{y5fwr+S)y!{ zt!9ulNu{EcrHCj*_OfIPm7=1OnKV>V5+Q9Os_%E1_dAaFonsdCJokMq=lS2xpa+pyDz0_- zXnOFo?cVR31`N+hnx9@<8mpi^<$%YXI~~FaTW74dBk^^ApLW_|Vq(%baX)C$F@dj; zP)DEOPli_8?c9qa{I$?ef>6cjHs5h5s%U?|I_JlFD7*Ul`s^9EE)bjII;uhM4;aYG zj~~w$m0y{wj}erh2b3`3rDLfH2TC;VaLE)w$2ou3dRq1#zM5S-)n!FmKtMq6>Io^6 z*9WjJYX(%VTD6L6e01C7C70`?U?wfl5laZAD=R82aoM_L)*~cpeEsU-EaiC-Cx*_5 ziLp-M2tMEb7JT)5=trW_467?xH=#X`jAz?HJ=_%@hCVK1_=Jb|d<3YEkhl z=l!#sAJ_M_2nuA>QEgfCvAfrK+M*-+w9Uaq=sik@MCiQxsL`*VJ(T>di(3e|IlEet zjzJ`>(MX!>V=oK`N#BYf?PW~&ob=l~%aw&}dV45G1={k>Tb~&C7`Q@i)~rtw_I>;| z`fls_-KrcD7_WS9-MV!&Bi-Gw96i1@Pfkx;dwZm1r4|FatWmXT6W6t!#vD^A2X(c= zoHo6P2fYH`B`&X4yz}S&u!k{G4|*LvqZ_<+DWgT-m&ZldOkaKok+Y;#@g%m!?AY)# zyB{wp98fWACgpWo>b$!{y%oC7Id9GUjl1ir*34n*1W#E-9IIdzy6{|OC z%L0`>=;RS)5>V52><{mYT0{5geeUK43rEq`SW*IE*C6i}Wg-INm(dc3>nM;@fh`Uw zyspd)G+^{14ge8G!(=_8S(z@&VMi})OLhMw=IpE;HNeu5 zR&!=$-D&DFuUmA@pqX%;P1PKnU|NR7UE3RrH^IY74KSaG(>(wUZcXia+Ma+pYnRED@wn59`#y@z@{Ay*C8rGvVuAtnpn`)g~5dL%LrkKbj-> zeK#wNmJ}#Ex4C-aaR~-K*!RBljg+_m2<!Bi!S^7QQU@&3or*8TEvHHu0l#wpg;M+gHtbe)eZ?X2Tz9K*RY1!e|lBMsyEfDh_P@ zwM&1yiIV`QNZ%O(opHR+!8y*ofM3#pkm~S>yXUynzP!;8Tl`JZUyvHp^|67Ee9@r= zg+?1TY|zrxJ-txlgx1n$P~YkZzek&&pVdNQH-`Myg=fjcUIQK_i-wm6v zJ@BDx@ZCqs@3W1*9rHYXq3mqpunt-z^LnjcUvzgBcqq!%ec$az?k#+$M0ml|?>iqX zDtN(wrO^*73L>)2@<*VN~?Zi1Aw+@m@~@ z6B?8{XkSAv8L^V+hw)?DAV;wh1LD-EfVt5Uu3xQrmetY@oNY22m`3VT=3j&x3u)`AjBDf z@+pKH5DJv``0=#vqhlFqi!NaZA{EUW=aIWzxO?I66%=Q~pI0kIc1CzcC`Mtt72UMc ztCa(L{n-(;pe96ST473~YOEXN&dyB{y)WbiQqQ8^la-S@j&x9rytz!~QbtBb zQ2Y10?LASSe~_>00puWb^!EV-ekKgEp~x3A5qAe%a%;`C6)+Z3_2Dku*o)KItZU`R z^z7R=+eWY2_5|_L*e&51&3<+K=pehN-@pQP@qdrfrjvxK2@4YEyFdZOJV@F;Z6cOvj9e5mZl!*y zueYFpcT94(+puX<&vRNkV4IYie>n#^lsBHT4qub2K+vdU|$~^g2mA`OyBx zy@jD^@k(2eKPPq(njjUPA4t$8t`T9T(eQWk8jb$sS^U)hFqdLoxspMpNgg4o#^(}; z37yUQX7NsWl$hHnHWj2T$dMY|e#qVZYl&2tj$wtW(E~Gf@h%KatD=DjThe?HE^H>?63`Ydw=@CQQjWRbA;?^Is*xEpG5LWdrcS>%ejBQ zf3TaE9)D6iU3YcERw5i|$97rEm5h`t)n+1vD(7XmJbom8dt9L-P?0TA=9JNh0isOJ(v9$|*?Hrk_fO|SGNB9x%&6^ffcx=eVqVy#?D zF%V`3hwNJ7V@>t)QMQybv>4*VjAC8Kj{Fd z^B=)4Y1#p0gQ;usQGLokOsU8`-;_sP))BP|tPv!8eNWT=m67*vKca{eiXf3!4ODoq zu&^g-Rh&Cq@e@#<2C+93B!IG3ua;IK2laBAUAOwVd5xk@E}YuaE+RwSrdaz&BnO7Y z0S}^^2c~gQJ{KQ$?TBl9B2{bisuKep{Ah$iz|2C#akt~taw@iP4|QNU$^vt=!`~ke*bG>w9NY}IDaUoU`FWNfAK;CUC(xu$8ZmqNm3`&@ZxHH zwcVMuUM;5J`0od=08K+45r_w*q2E1&8{zy-$A`Lo2KkHj`?>B1Kka=+_>1q%>(qA4c18M#B8h`uq~JbsjX`}TIC z7Eo4-lZFqO5p5EES47J`!?({lG_QN}%`M-@il_iizr`47UN84w!Eno6xM@51&c7Iu zZlgYAy%&oG!#j!C0~ZB`_fMOo_p^BRLxC>2r^aS*al3JhtM@#pV;*rLYer~WSw1#I z(oc%(5EA9g_+c_(f;zgn$xP}HyYz#anJ)>XPaz4katsk{HO?yCG2DHhrLA|X%pL@D z%Q@Y_jsRe8T7r))#qQ9hC^NrM@o)SI$w%kf9Pl7<;gH52H!tlAJuO5gLuI(rI{9`T zLhERqczM#AHj@RdZc#5EB3mH=nzIaS8~Nb(XJwHO7Wr&L3$O^*jhu#uUKiK!PeH-K zX*}`g6)AzNON&AyF6nrYbMt&)?hfS6y$MX~gUzkzh`Cn$wO8=6m(i-bu1$K0O{v6= z=oO*A$1S?;b#M2mm+8paA33jn309S!-jM^ayjpdg{1~VVRVbI1&W~x^)}RTRe{Zz? z$VEtn|D^qEH5$sjA@0CmdVV8JKLZ=DIFNb2NcL#}z~V?&)BrqwHQ`Nn)?zj2Es5&Y zf1fRyY5e!v5wGU88{X)At3>l}nE4j0eep|=gQ>Ej;f%6);`!`H*TOY?AQgm7$`OC!ahoZts@uD=`J zV_cARodOE=jAAMlM1GATxnD}^hO$sdy|}#}{xx4{2GA>uXm#=m*oUj^10GqsKT#QI z7m@m9>2vL8J{U4PNQsFuk~ptz+@f4F*zb~iOcggVWt;Y#R0p<*sIY?o$+{uY;S37A zb<3DFAv!9N%K!l~?9y~MR5=bTQoqMbEa8Nm$kaAFy7*5*(WY}rXMuRVs;W9QbhChb zMA-wY_~zfXr^hWjx4z${EW=5W#@Ri=(AUjN0sTtIC#4=LvC2u78z#|mbPV5{eKcqd zWY}26^vWKT=oU0s{|xm431CX*GN)Br^AP^@2CcC`;;^Rq(>!(^JR<&Q>Z{`{MNwYM zT%XJMz3O`2R~*uu7Q12TF_X3(MYS}AEhdHU{j5EBupDFotLOnGVFByk^^Om~ur4=| z9Bz_7C$9beWhL&`-5Lk^px`0Wv7y_~lFX*DvwzyTeIw`fB@=*qS4?FM$m0$ehLfV$&B9(#uf4m1y0b@aH)nz)XV#nX7AwGSf1SBV!_Z1 zd>s?iKka)z3zZ%bPN`EObY9-}={eNlXr*KKfJbu7Ad|I_CwFJrp#yI}9YHJco9FXO z9e@}7b?j*W9i4k&#SlTrHBIfvzm zGVgzkx`Hy@$JvlwaoFvsAzYBTmzSZcbq8tWxclA87tFl8$XfEfzmTv*L#U5z7GFZH z(0THscoR=b7=jCtl5(V|O{i}|0AUL_dg;sQ3DXuD5Lfo|Ap{49Kz* z{>NIQz9*B3Un(e@DAP^rQr9bzUUf0NivgFFus4=}E>EYKCasBO^0~1w17d760X|NQ z$uiN%Mu9X&SyYf*vBv&NkzFtaaIJD&NYogaHg18R@6+9rX`<)K#ft|Hsu{Xi3wnB5TyJEwgf zN(Dr$;>JbMxlO;S1$`-qnO7j#dKT)saR}v>8Ei>I`9cJ-kRM&#AQ0~!V#;*}4 z8pvPQo|9Qd8-=1yr_BB}1odl@WYoz0--1AqJD8RXLYP^lW7cpc9inAq%RW3<8f}ut zrZ^2%&$l31=-D_6o|?d)M5IqyW5cUgudIOtJ>R0;k|auH5yI-UDla12;M;x#+wER$ zKYXS{$RanuQ$~yF*EO9Nf9AKVi6T$$K~|P!gbo*5Co#1K1y`NU6N9jO9LdX&KRjoM z6A=h&shwy5|7%_N<$yb7*Vm5k#{;L^+tUS+L}DTU)tdF|vnU!x^3gth7sCa+v&hg0 zf-x#2y=4y{CLLQxkhs=vqw(6ncm&;xga28mICl2gtFZ;kemrSvr7&79GGK9t6U~@#4J?SQ5#cbv1BC8GB~148^xVzc_^-;r>@L3Nq&Z{m z128#~Wj7__MC@-V>%OW5_>AWoa9ExCZHQdw&NDek4aja6M*+K6oco6l|DIVn$d0wh zTcyHiIieAmz8znw7)QdGR+XPfk!YabE!^5Aelra6&#)&3A+v7>0xz@b>B2}CRO8;W zq8hD8SwGsR!@)68L>(eMIMLng>*O+dFORQ(Ft3hU?_h0=c^_)&P7>XL`7pCE%prox5-=(DJ=0Cc;1%dyd_(i| zNKU1kg`sqI*3L1+rKfqJt3=rn0IHJH!3zG!tfhL8PzQ)4&{{(?6tTPbY(d!Qh{Dw} zHSJHeJ%9fExdiq>p$9?^?Jq1ET7(z^b>ZG!UE&O*|YhU zC8?yAPL!yUud)nbM)~_4-$;0CODVvFB?~d=4INhM#yFKC! zaz&(RClEhvlq9_&yz-CS;+!WKXb?}9q(5E8wIt5EX7y;)|7!ux_)#G)q-xbA@NvS@pxzyim~I-oV8kV(Xzhr;ZKPmsCQAV>)45D+R6;fhK3C5v)}$g6`a6HcF6m`EYHs#PD2B*CW1Y0w|;pc zH*nTjz<9oBOQ!~o&=hZj+?nFg)f#BJ+?^-)T({Z6>YTmE1O6HQfP-5wCy){u*W4~A z4I^)WCuRf7BI`><^(YA#VHZb>g0wRr;3?z2ms3oOP!|0PT@no>WeGLM%mcAPjRzWj z8X>+a;h9PLHDM!WoR9|>k(rDgHb`Yq{hO}@r)nda(B_GN@k!O|sIx~NG4Y9bdopkq zF*f9HTgb~CYdeaq)CUW!!QB~#&rfO z@<#0Cxejx2Sqye|wsTVLVc|#?(1w0ylRf=ASCa`g$mIa(I?9rWLs_rcdw3-GiaF>J z5j%WMPWy@nk00-*xv<6#@-=5I%7xl+9XlPnh)<4BqQ|@)HQ+9aNR;I9so~@L?&ja8 z9z%y|wvu*l!Ja}PHhknh5O@G?=&ulAT;O7Y1N>*!|8ymNo+>1G#XjYuoj3cge*4NO#!K z84+F_r}Asc?~St^0fHSI9F&-MDtJ$hQX+pdI;N)y{vA%4i;yuT1&hB8wU6>8Q$1F* zF-8D4g4zJ^KL(`6(aC|6q>nW~Tm^TxjsMLs{tkxF9Op;JR|Gx*MeO;v~A z!&_dj;Tg46f2L}T>&s0-x^ow6r|_5!D8S{j2He z1`bTuR^w8z%UeeLw%I7jSCjfIno6mnSZ znk!;xqIaoUYxB+_6;C1|ic|*tGNOzQ+_;;LrV#hx*}I*K=7O+cYe?Q~JfD`xL7H;l zjef#eEFA={sT@uC>Th6c8CBbQmm?>COrD8llKxCIQ!EaVmmvu=`ZYZjo?YbNm$wl9 zdG_JuB!cL=RJGFc*Q-^A7X*fld(!WMq7V;-E6!B_{yHCiW?d4vO!r& znycSPKI&)J2i@HE3^z5sQ^tK=d+UXwuZXRIn{nT?WCny9yz9HM0&{&4_+X<9uczhF zixF>gHLKKIVL;+KxC@c_c_m!f9M+- z&1$SI8(<-ip}jZ#$DP{wFBkNR$JTZxXxA=tl+gallmwk6aWINx9@|bkw9B0RzkoCH zc=|v#J*yc<;NqN9w)iIt;eT@1cZtr*MnNlPi%=GJRC(9DVcL+MsXywc>bs^m3Tf4) zlS%d9_caR++Ydn>w+{@&K`Q!pUZD|N>BcWkEOahGkwdZB zbRA268kOMRwQjILfsx%93Hf$}nf7M=jc@kPfwecaf5rlSu;@6zo(MT8-nuPbtO7-O z`G+$CcBI?5oQs)5-`KS2F$Xg6|Av=!3T|IcGi(Ul3n5&bt`MSW?9_8)pk7d^&)fbI zK7K@kA~}^C_sGX0ArVHwr$DAm*}G$1AWGVPUw!9f?fb`3qX+#y)Rl6qH;dDs_7x

b^;nsqCRlTI>3Z{G&gsCBkM`a$wZ`isRtCptT<5Gs-&q&Ba3=)OslWYLq% zg_?Z817u;#bZWBBFpfjvyE7B~w(STDbJ)vK`2O(cL#NhWa|(FmCS(8{ez_?FIv)d@ z7oK~K00;Txi)6@D8*h}7_J8nukX=I;6}@$$yf3T#$CQMXl*I+f5!7St17gd#vt=fu z$tk}1wcgx@*q+p4kpwv$%oC-M;%)HgN#z20(O!cC6$M(*SuvC8!dZtEJk zj^8PS`~=~-M|g9MP{T=&la7OMhU@3F#9)nk@@4U5FGrf^r*Ah|JDuj{H>nzbCO7^J zo3bSiNn<{BRQi!!&RQaAbjz5GH?BhMzqh3wirqmv&9}nl_%-aJ7|3Mmk{v%}!B=AS zlHCW$O{NRfQ?6(hdSWyy5juKPmsm<-FplcO3Ayk74CrUNai35)iwGc;u>T@w6a%)_ z)s{}Pf=pp?Rj3|CraJXTNUx zX;+tNTQ+aj{N|p@Pi^^rP-hpuOaeI`$2c|Z9#@+0aNoq#v`KCY)T3gkcW!nnMYb)s zVBxqO?k;3ySw-jwUsgtI)q>M-3@xowt({=c*Lphi9v=7%zxS5g3fk2qoxHBg>{cGX zoU*SaP+KA*yT|$=vr~(3mL|n?Yx(+>Wa+d)OXuj>N^s zH_3LpaA_}XX0OwuZxi9|_4h)rBaN@ZR9`aqrTkmye(M2S8uykuFg!rBzp|>Tl^_%s zXj)e8thwU%bF-E7qXG)jeE+Gc$_Dja)z8l}oJk{m4{cf8gin+*vzy(f(e@0aBD(YB zIUixbnY>$uO^Vtg4Xt?VZZMp8#rFlkasKVCPnusK{LAuHEFAf-XO3-FyO}zD%9LXe zbML1guQ5xg`P6UQlq8z4$$)1qCBM#@=E#jiyLt-LwKZ*BOEcM2J-&VYTCG8Ww<_ka z?}O|PWUkaS$JW`FxL@mH?BD(?F}M~7E;*GtFMYH0@e$)WcSlhmp&K%rvF$EZBe_8; z!mHFY=nnA|8}9;6Px4Y%j0^SZgA#}N0bBoda!enLWOT9V=4QZ=g1aMOY_9cRHM^|< z9{n`1aOn(7SCpHB%RX(HGVjD$z{#tPTe)RXW(>)N=D3b(p=iE zHPX1QJ5ZFo)Hv&fVBF&kz8&D0sBSGOU-Js;VC#vZXgE>6zC=M3+V_|Dd*>6syLBA* z`IeU+*OlZXe}DfVP$yB%10qG}xM32KOIkSzxu#10{<{f7`oYOfF+^A<+>9k#!NC2Y z@<=-;-=C!pDb8X+i#GmeYeUTwlArI08Eljo7xZcP(BsR0lmET8fMTJmB>EVM0iAt8 zsZ5q&1tlb4Q}akr%Fs~v_%+45wk044i3|)3)by%)`?lFJx`)fT+o!0=-X+*j{lL8t zb}+U0Qw^x-5DH7)najF2hJmA(*aC?Um2jEc;7`o{@|~8iAbmlHaOUiuOh{-R{&1ym zJJwi#nAd(YZN>Nox3>Mz;o1W~l-xRqSZQj6j>nDP6Lqr(4Gmvpy7`#}rNm!{zqhnJ z#SZhlO8=k5Pw9J;TzBibBrFHhqL_v7GPeR~TXgvq&4Vin1gl zbi@4b33;8z-k;Qy3}yHwfF`6o7w12=ajWl7_z|jhrYHB6L}Y#Lmp^`R@*?ZqD6cIR z2f6$o7C58{XEDkVITaBFnMFUA^zodPwRH#IPe0BPb#U+cdQPGTu&8w}z4P$Gy`R1r z;Rmv&K!!It3TW5Fu)eb(-XQg#QsInQw_~sZZ7`@4b!rCS_-7)#>f_!iafM4Kmz#+WiJJRXKkZ1kJneLN* zC__V`V4~k-(-3uOi#Tf{(GGhYx-{qls|=8=Y;9-qFPRg{8OI;<^3J9{tbjD`2W$GX z=jxj+XdpZDGh0m4D4r`=@g`5yszzU;rIptfRupR|$Aszq$7ZMBTbtbd;OK&!oT+zh zNj=cKF;XLB|L=dSy7_6ZU4%%U&tBKg)Zg1%2P_AR4&$D|S+H?P2IcwEnkLdDn?epA zJh(ON5-Ek1Hys|dBrkDWvu4eKryV17L>L-GX8q=awj$x}U2Cc5*qUbl9Bf@6M{n0{ z`PHjr_qzT6MANNbmkVi9tKa%6%>G@3j;YtFKT|CqnuHU%6vVd@vsUD{Gd>fQP;A%q zN)2%!0a{u+NfPzj<9`||Dk_9BnnY+z)&v7;USw_k*ML*5eB#yIRaG-ajkVSvpe3S1QqS%D5N(U65bF%SDeygvn@eJET3W+ zf(|ivQYE67R$#1R5pAIV9?Lpkwjrn;cwB95D^^edgC$_+P?%cV1Mi_~}rJtLW zBxry`n|0IASy&imClIGbJqqG_M5FEJai2kHB3v@y`gd&RSy;%Bpcjg3qCV}HgY{x= zBR=j>K#F?|J_nYQ#Oz{@w1A#jl|4{?SW(q*pS`bA^hk1}Nv8w5|p$?|@{B~BWi0-x9lHb@Lm zHtAf|12O!s;JGL9?PHSwyb`+?WKxKi5If}VTI{9Hc`p;LQaZ%02T_twfCp{e;VUiS zLOa?;OtvB{YV5BEM?Ut}H1-dRC5E>8)*Idt%Xty+!;hQo{h8_x)$2dD?V?`J=ffbC zBn~}4YsQk-vHb39;)l^q3~@Lb3dn4-ZzfG9be!cCenfiL_U@u7%RM~KLCCD2SGlOk z!t&G40n@W)R_ZARCQL7%StXK*#N9u3Y;SBq2xpfh-$#~61f@vO_i@_SWjUSWC*>7~ z0yxLZS)Q)@!re5t<6D)a|G;%3_8&nH7%W}0b2nVz1&_?i;YQOshC7}3O`y^(j(Hl! z>-2d`l(YqWv!U0j`vJt_;ZP(hoU7IBnK$An(fTa4JC^=q3;>KOPr?F%b?>1=is*B- zWm)&)R-igoDciQuE9JfA{M#G$GJ4Sx>vac}`|gG)M>vwXT*`3@cZTqI@MPi0lkjJ8 z0O%s+ZEf9aYtPc#H#+?u;FgpJ&%gv10nbPzlJycaT8wBCA$$FmWvu*h>xgKw+wzO* zO;{l)gB?mzQM=mZ}*TlnADed90>f3PwTb+UrG(~2*2_ny%af8wFWJn4Dgqg z>;cH80y3h99ljfY7y^-)nB0T+qBolZ>@>xFl-dfkg=J2}DuLrxqcH^?{gUCJUAnPm zgcH#?$|`8qTIekqyAsu?qhKN5I$b-`G;>e?;n2p4Xpb;)a)0qx(um1oRvfVTa|h#{ zVSAZcyVk|*%HVfD?rraQhL)8Z`j0qd>1B6q4||aEA(;677mWYm9gJ1hKMqQR!}(e{MOlrD>KvUR-a&EhZWMYB(jrAL&Qio5fUN z_6S-fNo45J`Df4k-IqA1`NCfUSND}c>Tuq>?*3`P*!!;W1*exPc2iQS3}|0}Sbh;# z`XZcUK(cuss;a62xRr!EON?%QuD979jm{1V)G+qc_Vg(>g5 zo#IA3;6X}X%cudyt6q-hKA6RX3_7f>?`yYE#6sDKY2+}Y^#{X*JtasUrxbPj&7QeG zj8V1gim72NCP8MMI8mMOm{hQ_^L^g*!lU989h-i5S#ibAKJ$+Ocv{GJ(3WLKh|4}6 zeU+FYvJqdwlZBe6IH9=fINYW2ZvE5UcTgd|0wZY&0BpG`F3Y1mi?wro#OBeeFp`r* zXe(EEf}V4tD#NlGm2T4E3n6~3aY;0@zE%R(Qi6$zMNAC){A_3m08wyrSzb`$?{F|k z^4FGq-?MAiaW1O&2|L(yVzBzQg(gGTaU%sfv$3)Icv(4$D^YV&qwj)#@_hJmHgWcNJ1FN~1=Nf`O6L*LQ+n2|_y*46frf=}CnNfUWT4wEQ5TSNbP|GWh~_XBdgAlgRncTayc^;tnoXxwSoe#1y#}yvjdtQM>4vk zuD%`+IQEa;apW2I#o0ra@3hT?{WZ7p3oEF?3TtmdZg|DNm8d`ah}=cmp$_iu>zd$> zxzELXDUm9F`{9-;X5T7%a?PlS0Ml!Hy44H(6T=#%bJ!Zgunt z!R!vBW%&|UEgYa^Xjs$@h5((&(6fL48#bb8;p>VDf#@1}RZiKm9o;da52(qqZSylq=*LQ&?*IPewe4Z7#QAkg>nR9=Mv;qoE8Tp?7(% zYk%|UaOS;;}L(l&@cQ~DpU22&5nm5 zvlX%+Fs>dJ%F-~J;LG#o`pn~Zqa77Ifqu>vZ2bcVB6m8>N$ay|Qz7`6_sRteE-#V; z1(cR?99dZj1xg1k33;wazsP#ulc=V{Xi6uq#)5Al;eiqfF)1V3@{Mb6$8S3dfm|{l zF-aVS&ZQ%Yz9O{dC)zIM^YC&$K3UYdlQ)og%kK$0G&r&}&)oQ>pz@@)3P7h(*}EbdG}?eQo!F8ByU+x)l8 z32vw!5+P!IVP`O_7qJgoy0j8t*wWXPs2Y&wu!GyQ%ZF7ybdNlCC{^Mf;A0_uQ+Z=@~t;u+5a2%A>66#tox&g@ob^6f`kn2!DZaWbTRynf~mSx?nD^$5;T?L zN|C*ev_@5!EK#4|D!EY9I|jge{?>0EpU%oDk#8d|KfrPnlr-`xz`CuzZl8{$)DfXR zv`ZZ%>V*)IBbOy8EuW7sZ$wJrpy5R50rR~sQJ8&{a{NwXzS$hzfExe&zk=7Up8KNk zK+UX%(rq2wziBWn#Zoig!37CgJT=(MVfm$ zA{Y~E$|-xjRqCqH9R z5>vtSB&a}87g%vliPxN@Z`xdZzmYm|h9}z+u!RmofB~O+Dn*JR#D!Bw-4Vau<$zDj zX9c%UDc*1XE$K9wns8#R~B`Oj<=$|eQZ zD_+0WB~{g7zKobEmr-GO@I93m^CR{TzFj2d#Xyq`p2tk0yz3=MFhx2*v&V08laaN& zbsRdo_Z^@{*~t!R8O0l1&Q0n?VkW)c#@S22R-R=1P|NsBzI`wwURA|8r>4YF2Z@zV zXZ~<)iv7_c1_qAe;)4?A{R4mkS%1BYs@S#cdfA4Gt|;}yNM!IFA)3OwnBwHE$Fl9g zm}O-OIFXs4EJKhgzZI6piYtKE{ocelfi^!DslyIFW=BbQsenIHZrmuRea>XTSp(*e zf3~Z@=hKb1TK>L;?_?!7y8|$1+XOs{a)nwa@{vFAgOKyT&EKX#v$&mGll&2sXwpO7 zeUA)$ju2tFix4yg36-8CiGVTi;;29RycO@BteM`(4nofGbw!#?MfVWbC+H5WP!MqI zv#_~T=)So43fM(x>GnyJ3$KK~Y`Z@9{6AaQ-7-zw*51|#l$*XJ`DgTWI3jcEUN`ol zm>8R~z_7W1Fwd{x=j*Ru5HlwV9ZrWe4on zVwCrJpV}*=X}vI40sNcR9MQ3ZX8!D2bhopTTKM2(U1=i)hEKn$`ybYF8fm*6zz&On z_UVhO!nj1C;#zhJs8@7&@7BA9>uIb4I=bPI)aJy^$N-kcTUTieslAA!!}o}YrlOdgSIFjWmJGM z=x&b_`(Tm)#rCOy`-bP?FbRs%P3uaeShF6oYsqsGH7Q zKMzN@+ov9*B^TWaLAqjuW;bW&@;7gG(lH-r0Y^>R*4Fb~jSyzJE)e5dR8>^ABcMVs zW$pA?l=}Q4W>opJdCS)3yjdv%388ZzP$2-QP;^T7a&o#b>eG@%9*Ez)_DtD`mx#N+ z0pIf~|8q_9a`+o0hii~LIANnJeXvBcFOLiiW7njXv4XjvZcKKIk`dyHY9y016eP9- zi3p%jqiQr7(#3HCRbY?P*Kh@MGW2_WzjC;!`9UoMxY1cS+Io5l!Evv^Rs>V~+ci%+ zQUkJ`vho*QzI_*$fp86TB@W==;D1)Kob%uSVpwUvA&2s!jFv|TVH@Qh|Dz`C3RFT3 z9>-%)8?yv4$)9b@Z(m2X=1V#FnaFhz5MW6%JMNR<%+Yj@XJ4%1uDJ_+0s1vl_l*>l z$O-QCfYP~gz?aF1xNkA0)w4^29HK>+Z1=f4ipISNTA=Zw<5;O!>q z3eQQii))nG`e6)GOn`{mQr~H^pcLI)zD?)uXnBK_UI#JuoehSDy=II({CF0~;~}Hv zJ(wx+eQzd*suDud?p+6%ndF$7|JeIZb(`wfkxp^4=V_6$Tsq+Kifl}Mb@TcNyB;|E z^MTpDZ;uk_tH_Gm;+^KaY(B|pq}MfD|Fd`|OPiALy>}^_J!RWv#h3%co)fvUU_s!{ zodsYyt1qwAjFnYc;JqmZa50c`)Jy9hAP$<7Cf zV}C|X@E*eQ&1~K4<4Fm)zm%a2c%&+T*ab)?eB4_?^&D?A)kXYv`WSAhMdF(D9sR?)K*=tzaysdfoKh6B9@bC>$6O%>iY}xvjjFaeVn1k;@p0n zBEF5j&=MG(9868fQU9oCQ}x^lXQ{@V$l*(R_HE41-0CxIy0Bl8-%@a&-u$gz$F7Hh z_QR5rdF^)q8>&(tW~Z@@h}cFoQRG{K?kfd^dYm|7L_?-XdpYNsWBp-8M6ve+h|P_LJFHR8))u zuAD*YR~S{th`E=1iA3m;s&Cih#*G^V0(ZLjJx7dK;SXxwIf9_peJqf)*1h}V69Ie` zv>SI{6VYhj`<=a4O%?D@k&JYj*6wBdjSp6($53u-4WvMzom)sQi_rc61pYD_4~9TH zLg-_TC!RaexXC6_SsN=Pjw0s{9kc1kRjgh!h*YdASrtlU0hJq=Q+6qxLiPAbTMvlwC+Jb zj2@{W$}Q;uUEfqf>*V;RoG|b?IMAI?dDur8bij?){qF=O{@PQBrGZ^xg{NeZm0;tL zb}!sh;^ZFH`Me$i%^hqjiDVy%4b}Z8vRY&CEt>D-1kAvn+CdEP5Gaj6>Kke+0>bRP zZ73}MDg4~=7&JmqSPErJjlwc+H6fBPyC$b`PJ7$@ z{?E)V8h@3<%1jn%P0g0*E;iNPNjRu3hQyIp{HeL0;i2o*=p6l(!%ryn9Oar4PBp01 zAWIJZ`SI+c?cnbnCHzXlPR-_BjOt_==I$e4Z>gW7xFBYbh>81E3}prf1Lp{i6Ri%c z(A(|M44|5XVrF7V56R%xw{j~Mhi6i_q_m!G!sU`aQ;xVuEdnr8~ zF>6%tQ#m=kIjXXN0UA$aGjM?2uDVy5I2Z#Gdq;1aJ5GX&v z_hdi!NGN%1@(dmMGY$YcuL@ zD5V?Z`4a8YS4`?KSo_)vIAai2G~NW(SYcGjr`Qx$ahup50x1XCyS%A+mAs!|6R*F3 zB@@5v2ko^?VD)I1cgpX(s7k^Ti}j>I`S*ZF=P|tm{U_H71-Fain=XT48};xq5T~x= zF<&tucY}$hvI@~W7z)w@+)$_opq%*i`IY58Sqr;q^hAqxzynNK>{>O`jYdsi9^7aC z{E=x?3jqAEPI@ytfqXvzq}tFU&0TNQoyG`9B2P$|0_nv5(TnYT{>cG1ui+HSHoyIL zXzf-8zn6OAI`bYv@_cW26v1t{p->audTkFwrF0WZiXVT#C2<%iTdQb>b;i-Ad1cy@)Ldf=ueTL zvNwbtF>}iw=--f^;4X2C(tnNgNm+=+C4SnPTP4b}9VoW=%1F{SVA1e-ec#B7BElSV<(wArOD<2o{DsJ=yt66aPNpWl1ZV|QbmiCv}@hAJ;j zJ#qBWN@9`DEk>>_Ywnv>Vb0^YUwnk`)$4yK{^t!QSel}^o-}s4sa2^P!fey!Chr|z zMcqeuia9+c+=$}!7nEm4DJ83fR|>_FP_z~6xhM6agZ0m0hE!_)6k^Jx zF7n|1J^_{}Ny){c-Ux~dLc4to!tGBC@}Dk7dzvFq@Q3YStC=gW!N4N?2Q@<@hd)O; zz7mNv1R@;V0S|sdw0O{;j**d;#yz*H-=1kxr=|;P-9UVfz4RwS94kJZtgI~akoUJL zL11I_GT|x{I!6m-*`PQe*E(W_FS|j*%_AqtUPwgt-hKtb&2y2{U`tggB$0kDkW_Sy z%D@kFQ9FOei9H}wbIsS!ZpS&E+EZS;A{{TsRwYc~#}gCx-iAKJ&DvSaH{c{#rxdL( zI;3fWR2}$q=+p6-(TePb*d}uu3wHY69sQf2AE$8^)OJgAzdeIj+j+R+c1xrP-8~QV)hd+6%V4TTq6mhz822tThy*-Y96EYmS@% zln_$N^~CEQIlafSKynwad6V4>=uKS=BcptUhNmw@B*6sfiS!ENPjaWJ&tLwjAU;sI zGoM{tFaSmg*^MON31PitxqMJHbosgb>|^B2@1e%pyn4pa;I*Fpha_A^s6-SYk#rp- z0nt!U)_>A6_P=qEQrA+|nz!e2KqPm-ZO-o`&OTXc(USlKi&>X!WG*u?$A$_wGgN&C zx;{((<)AU&e;}@vr}kDR{X>E4h_T35f71>g2nru0Bd3_pH$JekUpnvXU$!tOaxnUU z>0%Je`MH<ayN)g^fUIA1Sl84T0Y?2J&#Bk)X@{#EJ*YM6e}tMDwl;U}(2;e}D^8A2ay3h(mpab*!RpvZ{4O ziLAN7?9ztHM?2W!ama`^Aij143TF^^WL9jyDS*4ss@9*InjTP~i|nFMjd6Q&A|5#j zODh6z8rsQLB5{fO+7Y7eLQY-}(@Ni_58wdihfeL)4VLvqM`DlZAmqWXvD1&5*g*pi zGFO(DcEv4gOb~Y^W*d{MW=(7hCJ1zwnVgs?uzN|?7jQ>!`Yfk;1j)Gu!8Y>QgRRQB9ikexoI1gElU|Mp&U|dsV;q z&G@UZK~_#W(+cG!kq1??ws+9(a5;{HK4%hFD7{>g9L-03)D>0EWzFNX!!yYA=%B@H zQFlWXDLZ!3B$|g;(M|C}ln3Sto8ov(>YxR6QB-u0E!mz?R>9RRs=`s7pLvdj*D%af zp?^ByG3u@3de_?aO-`!Vc>q$!^;4A4qJq2%@$%yer*4kiLL!O|Q;6h#^*50P?z-+= zzj(1{S|g}O?RxY#*$`f{rZ;AqLv*zC3Fq%!%VE;WIw@IOIhmPW;;xvFb7}T&BK<*N(Sj6;%REbuCDpkgfwJpC)lX$c(TK=PMEROM34cuU(S^;V7^lmYb^{nxgR(fN9vPo@w8`^{ zNG;)#&1yPmX%jnu0fi3p&u%0#tltH^k8`^VQcENUW{!+WHJ0~9ysjR&4Lp5CK46dDO3Y_C0Vkc{wpL<>l zf{`xZ!m{NwI!VNJ>&kIXWh)z-n#8P_&nf$MU&TAM`1)LBS%HBb>@(a}cjU-Dvz(jW z7jhKj{`|bchaMtpt_3y5)J3qX6m5>0f3`gN2mEjM8e40phgn&HR!%2C2MW1clBdOf z6Voct$tu}8clY?^@MCh9LzV8lWgS+d2p+qqceUG*oBc&|$ApUn>`(i{zL#>qMiS{| zNpEMA=G3&l$QdXlc-OA-Iz5f|V3C!zwGMH*5&AjMSffTJd-;nYO&8m$_!Fx(=5#A> zxRaDHP9%aC0MVzIUz&UF?R@szGv=7bhh6#Yd}b_av*kK_E*E>M6u&v*aAcx2^q&se zbw4dNCoSnTcItQUUr=mL$6TjlH_%*JX{gBEN1(Z!7vZonR5)Kb5}&NGVsgyx=I-?4 z_{JK(?(6zDB8J85`$!PvyK{E!|Co1|O;mQav<=|eb#<}!=B?t}Ty#7l_{be}K6zJ# z&yDN0Nim&hL#EMlKbX8|-V35Xc3l%{fY5pAL_p`W1KR3Zv574lzpbU2k+vigPUf5V zEGhdAZFmwzK;N?ad3kxdA?POR)%HIY9Oy-Vb0pm5hKoG@*aEk3LO1wwwKGDu3(0WY zWi6DVh>g|HmQnM?k?r`%Q=@lClL;P6x6F*$wHnq=Czwr=aMSq9iK|!}hPkF(s+;$z zth^s-$z`cofdjTy@9#Qm((rGm$3##O4`)!0o|)NE5s=g^FupGS$w$DU0vh>uG@jkJ ze4%0f<8~O_C`0@b6Q5FBY^Xo5n<+EXcmlt?4@Dr2-||3C(EgRqG_n8U*MkhEwMS48i+iTgTXEB$O0zJhrdZ2g|-G=1Nw)524B^MA57{VO=g%3EOLmpH}#(2@M()CZLNjU=?5fsK*dIbs|ZE;J{4Q%ywDYf(Wilo5M{K7 z#ZE$EDxxpO=bVWRt4v-|Y|956J@Rx>UUAaAxy4Q!$KOmu<3Gm!Y|FwzT@+Dg3>A&o}K(nF4hGnP3y>2sjim;(!?*6UQ40F)zmev4#nE;@0d&z7P?(s!d$vvLq6m|_Enmk z!$ti!G?!g%#$oa%yUpQlvSW7*PL=s{OhAzWQ9S<0uT8~koUZqs@REk->-w5*yt4Q9 z5|k0$x0JHu^j4SNCQ-9omDp0Vdi{Yl#i!{j*c46);Nw|u(z0h$szemIGWht6t1Ta- z^{-wNbaXO?%dK7|zn^t??(Tb}sDlASxv!~P*FA>3IvUbH0X2QW8s8?R6Vft3n?~Kh zBtS}8Urco0Gd^IlvmA7$IDXG?#wQHO^q;<7hnD&AV&}2>ptHNJdodfCI>>e8InQ{U zpK1-ia~k>7S8AL3`90{SU1J7r{PLl4CtsH4!y^-T9KQsU`#>tVtgCR)ZP4x1KbP`ZExwX)Z#e zOn;(xhfxPu<^?3p&6^n|(Ns8QB{k4!B}ZaQ~h zTr_Jta1|d!QRDnYl7uZGUVC6aq4&hajYt!StyGC%IQ6vAX z`KK#TMud*MpRe#fh)Vb}z{P$sXOvc1B<3(MQIfbl7?5=z0l;YJy>g$+SsW7Y;7@?v z{$o~A&c7QpNkp$r1j&$&fo3}VxFfV!P#;J#PSw1fgp7zXg4$EM$FjLh^YXfH>{VfJ z368_~#(((m@70jqY3>tnXZpqI@`nQph#{0B5&V)zQg@=5#t_3STKk%sE(0w=XoIjd?SytVnG@+JVqE>SM8jWECxX6#TAvPD$w~B= zYs#7qlJK4cww=qWP+(4RJQ4T#%+?Z_Ct>|85!rRe=u7tjS7uWG7NT5Fi9mLmI$9zA zDxl_HV;_hoO0UkpkS_7ye?aJudv0hyTLiBNI*vLEElc>g)$@NK;S<8UhbEzv)rutS zYO-tO_-06fnOH13r3t~jl^MxP9*g{jpx1YfXD&%TPVpt8fj*a^9>4K>|2BqyGD)ki z74m>xzP{3rng#8@7A?i3-HrSSb7eq>mh0ObrcFCyg3Inb-uwM}GlyJ5XCV+`uqFXn zAt#Q3Ah71dJV_^1(E4PML~e#GPYa(B<>R}J2@FzF)t{?O+lPk;L-fYpvxbDoR|kYL zWLZnHvofF6wd)9VP0en05rDFyP5FT0G<-z5doRvQ0c;d|c9KM@8@Kw~67zNP(Y6IN zC9<8`7PM~xg%HSHXBX7FrkY_xuK-ry65j9$`YaQB(=FEzOS>IXwT-GE7LI=phnEBS1;r z55li}M|U$VN!faIHwlObxqV{dS4=I1HJjxH(aw7Vtdnr(`e~TYp8noy^aZ%h%x+f@ z^$V#1pW2@#UqI%GR`5VjPa+Ch8sC8~28P>p7bC~eH!t;{?PH<|khiOAx`F+*pI{W4 zx?3bWB8cd0<&W+U!bU(7V3CnP6Z_vjRkz3O2LB-=@fiR!sK=kS`p|ny1a@S0D}?|% zLya#qZ31$HZ3IcmAX@LU!0V{4FkXou%F*36@{d9vr z*VWlIZ=&G=-W)^{0}ESB0ifL&wQz|xe`;gmnEyOzE@{MDmV4b00x}>r$Xt$thEEIE z`H!h_cX*JI;W&A+?^@gay1_=Q1 z|D-r-N=&HocsL|0Y(N4kmKmx$8R<7wlp_GUebvvzpzdvIN+uO?8cQ7afMW_gjIr&HP zRp6gAN=$zcGlGA_ixEp)i1=Iyx#9ac%!xSseL4CV9Xlif%CbWHsbSN*kT@UOF=1BW z-~E)8n2eb*bLLRtP&sr8xR@_;yXl|bu@%25x$miH>|Y#3AB05g;gp*GV4@;8@8>EM z%#P5tu~{`FF=K?K1!bOl=$9_=7(0%|I&CVQKu)5SlRpj={Tv2NN+f`GwTrmK z+C{dYO$k6i>M#FZUmaU+H=B-bC)EiTi$JHuSQFn(MZMkkp>+ZIthgogcU??E#P<>i zA0Jm_C@1eW%nPMr75beWTJjWo|{OHSKpw( z(ifBavN@f4$lgy`R!X-dIdVt8gP4D5Taxhn`CMvQ15ebe7OSos8^z}p)5ilV_`8W2 zMqw-8wtL9^a`YCv*WNT4=uSsoM!|0~?wvnLBD>Jh4iW3D2zbPu$ev1L#Ry2$T>)hoWp8O6F^h(2+oe~)P$Gy( z4Cgp8&bz9CDosY170gqX9zaT@HO4prT}BI*Ia2Sg{87}68ghfD@%2B7rVElKNS?h( zHTdM2H?tKL2VyN0h?Tv4rC;76bRohHU>6}t2n80#8#o-Hb=f249M`pT65S)1crMCOzQSC?o5n@=9{_U-VwQb#(v!e zh6rqrej-Ufo+~MO;}b+r#y3k=vGT}CYTI?E3^i5wPzOy`sT-;1(Hm_j8M|hsbM|sv zxPEpKLGlbj;arn7zsDv9;@3#_h)S^L$N?{t`QJqd5x33p>STSt=rjNhyzN&T=8xyi19Qx8LpcOtfWr0?3+~qDCahQz!s(%V3R*)_t z;qEnX)Ob?CFM6t1EvK+k!lLVJD66Q_d-*G$>9; zIkGaGARj#~d`vYYg)p0;loba^2Z^Kg0XGBe!XTq*--FL*801E}b0Z0l{(t5;9xMD7 zZ$#uXkzt6^H`1~CAb5l1@z}GMh@y7GLh3#ElPVIeA(?qj7 z)bxvwHY|IBeAePi1+MK>1zurU`?jX0rfJj688cE|C3oNy$)cB$3(M;0>@23HJh8lI z(hKrB5cHat%U>~a#-lGau@S3dISYCZPw{6oqKK>F@y=kG-MBwmsUZVu`ZzJ6T@XV1 zQBa`f7mh8~HeH1qFKwEtb#eBAUk9*%);t&Z`58k_U1w+LzzRa*Gr7Ze_rH-lkQTV* zkLxdLrzyIt^P?YsPHwEFhQ1t<>uw6_@k3ij=fq+}l&ow5W63eHkHxvHqEhz52De}bD z$qYu)#8 z<|8yE95q5dY1<@_?2-Yj$#@hF?j`4+Vl)`Rqro7O;|iOO-RX3 z{o%q{!wxVE$BYxI)$J=$B*^6PV-YxJa71(5Y;N2RU)7t}haIF6rLMLK&a!RuPUAEK zT}7D}33<<(zD?kIXm;Y>h@fna2q&WWrN2Uag(a&bN=&v;~&>T8zJED@9%^NPD&XRhqD@!IxyGS@x8>CafgnJB} z>H?#J8v$S&+^>Q8G8kLNfU&cr_ry;JzFpV)UILw5nur=3qNjqf`L_(lHYy`h%SJC* z(JLZ-8}6`j9Il=$iM28$X@K;S@T&+S_@u}e&wrnFJvjw!p^9HGh>{+vcgU7@67dDE zVui$N4G^a+tgttp(-?6p23bE=ENYhLm~e&YP=DTc+YgeB1~ut=3hs7%<)+<VbT^{8C$sq)$jjUr$ER7;7ioJ1bILJS_BkyKoqcogd`-M)84-F8v%C_ z=YW0z+{drQv50ArWx>``Bo1{1eG1;YRNl55yb8A(Z{(}j*b(CcGa$MUP}oAV!$3sQ zVQ~&#YHWkt#(fFYh!*?VM0OH?;WzKz#PI~uJh^>M-LFKWa!M1X$EqH^hMjJVdOb@p?o= z20k%~mZuPC0OM<-}A;6w;m8eeQNdJ4OUp)Xcx==lm8rEY|3y#>(EfwUVy z^+s&;WDqn^QW7jL$g3 zeLW3+BqNxn3YZ3{b6H&cU{rC=gh(1J7feQTRsUUdT5~El*%l)XLo6}rG~EC^axg0q z$4zX>+n;h}hMtNa{R}mUhq-Zt2`uWKy3LfJz`!OHP>0CX0M{64CWsLWRxT}||My{l zGlsQJ(iC_VqU!2xi`8Mspra%n+(x}071F@l_{f)#NN&=M0e5q#1;b|}>citNkb%Gs zlW8I#1P$MAPCE)bI5}qSx*ziQUmgPnhfp|Pk2&!#t|UyKg<|{Z(HU-}I6&}1%rp}m zc{)H2Z=z;?R#}LKThY{OSidwSB_-EZBuo&xOMrqVZ=9@Wrl%#V)@d3s4xL9tc)xq0 zy7W>Zgmo9k_MW+;WtttIemJjy%xA}1(0Z{SG&XqIsQQRsMBf_&G z_DTm91Oj=YN9i1dk_<9F5QQX@2It&RDB347)D}v+hMGUaE(JJT4NI?Gg&mZe;36p; z9|U2J5g49-hZRC8!<`RAKuvn-11@^l=gBx&PANM&0Kn9^+3^=@b|}C5ywk94$iT#^ ztHIzh#6}OGZA$gzpL|0(PgW<5iZ$LrVOmF=WEB*g7|P4aQ_#pBZX2z{9aK-|J3+ ze{s0)hRWbI{=1lG6AQdK!ZnF9j5?s+Z2=<4p^IX_a8chUad{|*9ndAefPO*VXQgO* z5>MkHRBY9cSs}UEMnNi~Gv7EMkrRzBzHkssT#A~))z#->t7L-X_i5XLy>6@nG?FJS z%G%wG@9Znwb4Z9nUNiABY1P{d*x+S<;LP}C$fwFoV%SJ#)rHme7bz&4u?w*5+tn3-uQa{@uVP2KJ? zS#t@J3qmxtnfIW7alQ&%Dn98{e!C!A&xlScN-KhlFT4>q-F5TYYkmq@VBfBG6?qY) zMZ;}(w(xh+%VZuG=rJohy0!ZOem$smmOvIKdiftQjij4}wiouZ+PTSWWRZa=7vIl@ zGo?C#=OLg)ug|48BV4)i_%hL|+bU-* z^pq|ZEK!1@DMM&7dK^UL)n!D=Zw~O(GPCLAquX~>?9f6_5_DamDL{vm&<4L?~ruqs(2o4{MNocznPw zl%|FV^r7?Zq5H}DmKgEAdoZ<%Ju9-g`N;B?kXA&Elew0b)+UNK(tr8>v_lVs2U_pu z@DnIu#1hl5$|}4d=cM{~j;)z7ET?ls7;ycD*2kS1jx$i6)-x6X4^jTf9EVw6;+(kC zVqMhZ$BC9)r*n^*XTzgVMz{V5In1}2-`atsFBBX7pK}&EtQz#blDP@#&u$4{r%@$x zb^ABZt|2mtj&dHOzb>YX!+QL1Qi(^=^LfvcpYz9{l}Tp3HQ)pyqfV^92--@w)wCJF zR#0$WBH=^dU^pS78k{X!&~Ds}jxIZu5`GC&!3bR`uK-d)RusATVWJHQn$waAQC7VOSzmCTN;1OR$yEX_3INE3 zD;J=-r}2eu>gN3wmA!j!fmt89^mo63pet-9dZ6LtI|wXW1jB`VnJd9-hWq+#Wf@VC^t#^*$8=3~Y@vPS+P|V#aiE?SSuf>ox& zS6TFKNMVggZ!#ZI__k<6MZwV_K{P1WmT@X>kvj^yV@m$Jc$nZ-G&(09k`I3%Gcnn# z74RDg{g1p`Sy%N*{qG#F>eczobM1L#mcoV70z){K2ygd{{_LV+zcgyow~^fCLgCP;w2H^*=@Hv?m(e{|R#dk&+NM3>+hMI58x`|BLa(IMtAh6og{@2i`5< z9^9KG2?dND&>M*6sVD#u%Yni*p_I!}kn`Qw-ifY&hU_#**$k(giF%9ZzlLDbqb!Xa8#p1038Kpn^GkwO`GPd_0U+FG8p% zmnU%dERaP@`vm+9QqLq#GYQ0fCqdxkS>jbN(?D5QQ=@ZJ^hlW5HO_783*Z;QnS7bx zQb58K`EKO?w8ThyNEEj0F8L$)x@9N=AMr^bg*T`RRb>Le8Ne0i7b=v^wm+ z)3_BtU|7PMQ*(FUZZJmQ$7xvvK$-yhuE6EsjQDmUHU*urFIlKw3MCb~Tl5g$#}SFL z9_3Xi8d|5$`ujvG2Z%Bl*iHGlz5nLdQz-Ze)#y}q6N@;B3|Uhz3jv6{+psURsU-KW z3XSVZ?k)l+5{W0SV}f?z7tC+F<4-}G285hUkpe|Auz2$$T2boHP*FmDv$yUEF!rM; zL~pZCV%y$D54jD0-X&J-1y6l+(yAhdi3KmU*W?Sj9Ch7|%RnfO#!G>w?rpj3%;%~;%( zBwi0G8@cvDN{c`OQB{!)p_m|cv*Q@wnp7-4WvTD|Fw~PIf&S6avsX;J$2V)nG-jM4 z#=rVuZCt8Q36OIAHtY6y>jBfJm^!0jG{-PbBw_o!H;b(&5&S#;OMJP;&ygwKOlT}xomBpKRO^$5UG!ju%RJ1T-2At9fwmHSjMNp|=_OcwNVTJ4V?>!I5nTHr@XoxG0FOUS+Ucn=XLbb46P7?%)=`Zm(Gl522B zJ{lNOU=X+rXHb4SKOHsBRLrmlgPYe`!R}KeMroi}EGvRM7C8A2G`S=?1q}!6DgXgN z1ptOIg!cuL3^oCp(nO_8rc+$n$w3@(j>wk;lD6)D)0Kb(5wac6=&FPHsCiT)9vHq& z1>g~8W@cY>)z(-+G%pvW4}v6)n^c)b57C~H+%?p`Wv9yR>C77gAPAql6ih>j+@g|f7IgHHH_}$Q$!g!`(Je){pWCbEI=2@cp~?kUc$jiqk)F6ovsp~W6UOF|iR0MI zeK>QW#?p%N19qn}H4C}r%-eE7adC0=t4Gmr7jJSvXG)TK<^viHLBvWnJPA+JL2rw* zxquP)n9_~6h-$shaq>#c-{s{Gv`F(n4o*coyD%*T3wOdeu2Vo1#LfkyX)7{9PaLG}mKz7QI|bB8c3a;oSonsF^X7bTN^l;r&l zewB3@zz5Yxfktbw%qNR>00ni=E69eEL+6%u{BoKD{-HQ?P1OP=AQ>(pRG1;G%QcZQ zH)Yhx^|7Y23g$kH7O;|i0Tcw?%^RO9VPL_9u?3zj?I3EWz4p24HE$n*S$!66i$O_x zsG1)vsq1~!7ypt@LLIqSc@PoW*NFY}07i(JvU>8{5ixERc>QPL<&ol28C)%RD5{hQ z8mZNVMjxrqDkDAV2)1R@ypPt`SgRyJSU2ObD4+%WA@mnD%l(Iqj~-26`MKVg6v`zo z!9-8BdaoEz3aP{y{_9y&C2qPHD>=;i1ib}U+U?)T6e2+*ataep zrwunZK`uogWSQW!~WVAmAL{`@n(+Be>7&-rhyZ!R)Zkd^!i_;dR! z@!hpn2}_t65fve%jpp0oVlw;pH!CGRJwg4WBxY`I{i|I&~aiv&xKk%jNp;HrulibS*$#xozvfe(PJ$-s?n$M=b zpio<}O-sbXHuR%j8!=C$g@ELpyYJAG;AAuuKQEOOV{yJW3(dtvRZFH+Y2$PPnGFDu zFfDVVZ5vVYp6-)qWCvc7fvH810K%FAM`$0`tS8EAqCUojM5Yc#vV)oZV#7IjhExJz zpz#+$>(70i@>98;ke~w$N7clH4R<_LQP7M?VyrV21;{oP1?&wJWW=IQL}{R|VSYpV zqZ2!Kbn+)iH%`t_oLhv3x%1E(f~ZVTx?`li-kf(7s^R;P3EaGQkGSR_Z6JjU3jZJe zjr=5~77ZCfR{j@{gavy4%r~=hyus>P=3HMuf2_XhoyQiM4dWdxK!EX(PU+}@jeZyd z12_b~fOxSBc0x*T{}6yPw{`rsxDmg$Z^T(ZB%ijg#OooB6nT~cR_-1PACW9S>bjw+ zp%MMraZk?BnWoftYkY=?Ss_h?n}rh$V88O-fJIPj#qL2=O-OzJ8ucVZ&+c}D7c=Y{ zk`!3?%sCZ3B?!p1W)O3@%fKOAfBL@v^yXbBbWnF!p^3ux!Ja|1i+DYP0CrD7kxIXo zf$c}Y0;D0*kgPBmvHf!9#+fp;IIn_`do7e*L%hmYIAQ9>-XkRg`kUd;W)F~Y6D!ON z)~EWg&m_7IdMtIkA6ga?FM|Mk$xhTI1IsFAxcXol0hUWa3J48{H!V8C=t9} zxM^*md7!3vDkdAg+BC~gxVf6;`xhb6WW%0BR3;7)`6NzxHxWn;J|e<$lq{L0xe;|7 z=~@tX{44!JQ2n8cAVcIaIVPG{6_OD-oT3z`-8_en9D$BtU-Rlt3YKFJJdSH4jCbS!n*{(7U{o+P!)`^Z_Bgr0uta!-!&jkZupJpH zL^X*;jdKd}jWiVHaMw()9$M6tjM`ZV+|%w3$`)=h_cReQ`-phjNfK|s(+aylqQgXK zHiB(R2C0&PCxm?gM^giG-L6srk5`}87tO7x#oM`OKxBM{bwP#^F<+Vpr<{v0SUF)5 z=1{(z0*cscGof3F;DG`H6vD7Qn=isjoS%mmLxy1B+kk_GlrRW_#y@@ysqN=*Z$W^I zp0#mIfgt&6|2NJJm=?~>;|5miDB!jIG2v=@7A@qUzrl8pit9vPI5F#4LlYhK#i%=>aQ$ zXAQ9Xuyf%{gM$yd7~wJb?TWjFh3za+Qj_slMBWI2ljqMhcPeeTtzA`_iLD)-YeJIhw&lq9%DS56z(3vAr9w5iSN-mlqjM>m3?)B!AqG4)q6M5OC z?17699m8-6yQbu#EsP0>1*GZ8&Db8?ymWZ^n))(R<&w|76%PYz%vFx5Ij}`~W#kUS z7p14>`Bl&3uXS5t8G3fuOe+OGd6bQ({9jU0*9gYcTvtdLIsqSTD^v_b#?dzLo&twc zb>{B*jdP2_R6ezKVsz9nb8xdF8wgkw0|ujDMf|-kcLsEBIzUeE;u}!zP^IF^a7qFQ z-TsqFtvCf#C8`8H5Hfpr@o{Lz5Hvzrc_rp*8}7{&ckR@bbIa6A)tBfdPtLJwHrG>C zp4^q!#+!)M-+cC2@#!mCM~>)0L09r;iyMSqq(3vi73qSgWbWN|d9w8)vvcO~^@2mX zXeXcFevW`l4arLNx~G%X@9Eq3p{ZuuG+Z-BH7MNF>R*e41;Na+m$_WWO z@M9Ak5w#5wRi~tM+lnD<5W*Q89600wV-dL<8fePv@8>&0hA~_bJu1>i)nvV9GGYYc zLU9CI?^;*~p@jl`y}qHC3lR)q8E%S_{W>~yH%>B!MC2uxz~FZ7$?p*{U%y?ei83c**)PeGkrw4w|~u4HLK!5iQ*N_0yp zwYXE}d({%>x{rVp1XFY>_@@Q5|M5GI-y(~6{)@-kLbs9fO9@!m2T1nU6VvS6I5SwX z(o4A!s6_8?HMR*eFymt5;>=cB@==Ou|1%@u$k@J^A}wdWamgok@@c8IvGJ!3g5`iX zG9jL+x^N#TIhmSX<+0<~i%b@-UW{$OI-`<#vAaZzE>~H(;m)4$@k*3kU-CcWzAaK) zLDPifDp&hC9uf3aMBP$h&Pwx+?j_BBV&?`(bJ)bBRpmpPCBU5%9?5$OG`NcSd)CC;Kv#4>a_w zY#`2A%d1}!ByA&tWGUz;$9={Ev?IAs1@^0ihmTBdbiRT?M8yr^aOZvgvy4ftGEtl& zVQNry_FY?``X{f=-G{mn=LoDG`A-Rdou>uzWmb$aN-GGWjv}Idq(KK z$ZRqU_W}Iz0z1hqewAqCW-(Gv@@8^v6I4-IxOKE_gsuu;-uGjuDlz(Q#;*}Og@GV? z2_hqtjJ_zN52EAfl}B%ySBzWqlz92#($ebFNgkkjy0LcRU!a{D^|PPCk$HAZ985%C z;+)STgOrCj?>v(>ly-9o3qmYWpKySZ3az$F_g@ZV7IcQ*YUbFB>gj{K4VuNeZ|wDi zirmUPJwN{lHr( z$%ca!4+}WGHin+fEf$cBrYfexkkF(odJ^}8s8L#=`SV9l_hvHQ<9x&7~I`_jae$m3_L(x>c?d+TgGvtNyVk3i6_L(~kRpThlp+0F!a zMW*`l^OpD;XLv;S&WD8Z3-6~3=04^dD9r4&M--!f@-AQV`O~%3aBgqme_aPM;1=FZMea~3XIQl5sy>9!MV-whQ}+hJwtB)QpVxHhsS_X3!ZVYcM`4F(+Ya4RTNX&}yU=UBf?D z?VQ@|AZ}T2Cl#c)5p>&YHi|DO7#raB0@Bi~NM52)$S#q(tVY7?f_3CbqT*{ZXY)9u@W0XEfI@>lA1o^^ znT3+B- z-XR`p^F$5%>u1`=beSY3Jm?MY`P6%{2Ui(S0gP2ute1s9PFm98y@bL9J znW*zl5A52ti<6Bl5bNk25L89?G0ycNo|=GL*PItQSbkMl*L$K17DwK+g)0a>_sq#9 znapgOF`Kgl`uv|PV)zX-?d`7b%gUx+S3=*)cBr$nqeCw!;LZ@+jG}@1fRLadCiwx& z2&1-mzY?oBI#4)V2}zvrkJ$(H=(k$=*=`X*>J6jR?moF};bnawKJC6IPgJ zJoxa%-CSJC0nCqmdHNp;0gl}#OP;)$2mAG@JItgy3e(+xNB9jeOPPrG4-Voc1~_}> zK66?tHdz#zPYtI2N7XKXS{H;I$>{kB8v4P&8i@{iTmN<;k_OL8K|}W z8hpcFEVy^7v_W$XS$e8TpyAA4gTW!y1F5F zh)TP+CQ-u6=+hf#+k;5RjOs%e1=iieo-3m946TlPC=^^Jfx#IGDj`6OquJ4(WoFW0 zS5hct6%}hpeh)gtKtPyzhSzTkZ{$-f!@XYt+H}MoOrjqiIhh`V&+=4K zyHR;pqX%el`U6w}fqoH3miIy#dg8ei)s*5!tY;X+@IR2>1?ZZd%y9Yp_X>6lg_8RF z+a2b+2M7H^iMtVyFd4NZUt*dagi`nD2d zYXCtYi?XxN3NLk+1qMY(nH;sVw@=5LJv6$9J5um{kf*TNk;j2}Z0`X6*r2p{j@yE` z56&TO494HIxVSjMF^%-*RQR*fj@bc-{Qk>Jm#}gS{=VMD$==t{O@(K4($QZY=`Jn( z+@1PFG#OtZ-EsowuX4-eS0sPQzs7SH5-i6L&T6~!x8Opj{O@}b5)yxfFcT>XxqEK6 z=_zA++5A1}GZw`ho$h4%b45kP$gXseus^6&+j)F&rPjjv38vm6&Gj;-w+i5^eEKEjGbu2s)~^)yph@C+ zv{5j_4M6Q=VCNZ!HS`O@bsw?3Kn+lWByJTnppK97{h+x`n1mWsG3EJL&^83}H~x=+@bezjO?O$Z7cJ z&oBz{h*d&N^8*jV8GGJye!}8z-%E#Pe`VIe0yZf69_|*V_(H2c#)aSer<$a|gfUm( z=X`z8O)6YfN|GQZb1M`Br509QI}f4|s{ndLrgGMUW|B3_GyvX@(0T4G*w z2`>2YpRK^J-AT$WVA>q{d3jByXQS}DY;eFnNAdJP%}Y1x3Pcanz>mGgR;ktq1v0X4 z0(AWj9K_O5V%tSYef@eLAC8^ksZxGmXol$xvx=`A zn#+5?;mV0y>B5|sT+a{077X-lcyRDxjhTQPd%yI|MM@dY^j_cq^}@kKe49LE6f68z zT0~n*i+1tPpC)^aXKl71sK3s>!#RDU3@eD;%NuijAm$wVQ zNF1psFK5#%B66IouPqi@9H&$4a?J(TP$qRh& zXB}ADFr#>biHWI|>gU*41d4S}0OzM$I5`FEGLMq*PI+0`CI;*GXGbtWlFlHvRilj$ z4%WL9+YoVuIXyBwIHW&utU^`Df8hBwWdK4!CF0CC>>V8)6HEWwA^d)}D6Q$>>C@XV z^)Mt@CdQsb!pg$i$%Bjp%oL;pUKI)r4RD2vxa4a|K94_wH2Pr4d|4%ZRLcW*Um2Ev*Uv= zPD2g6j0_CMU%fAj$=lo8lc6nH$%C>?(48Oa`89{8zzCmzk8oj5R8$lssd}-2Jk{;& z<2LjFI3AoG>F?JV7xCIC_`wtH#CDdvRCBZMO)obb>c%*;;J=%c#m#~<#s-NTE zXv`=AxTiHsls8QdGQsbwtHtW}t@rmm_H^?;D8$+NT}eb4!^LrM=?<<+1ksB`)@8aA ze#B8wwTtFRaU<7D%coE0qAo#WL}m}+^|f^G#l#FO({RAP(4iVJ)7(So?#Eo*3I|gD zi|R{WSg^ISvdVNI@$Q$tu{;_^6Fc^Wl#Zquv}B5etBcF?B0C9`S@JWoQ59hEzAIJ1 z5ymd?5VK7hJA;Q$+2TlWE3RF{%LRt55%8|*Es+5pLizUl;QS2Y!J2;wH}52&x^2R* znp;{}QIsWE*jfcf_k0!<6I-vYu8zg5nOOr$H_Kn%>4&diuDqOF!HK$hD~T7|yyz*Z zQ+!ar+;%$=8$CWe3FAN8hMfuNlU|9AekDAQk{CAfpvbkr zXH^*`sDbL@^`T4f=(sPJU`ZIwy>@eQDg$u;+&;k1uV)L@Cu4s$XI2`jjlA+EyNpHJ za&ct2PdXw(+7_tVneQSL60OxSaTbR1LAd|;fjWb(DrVs)5a5fpK zyf1?qKOK;ilQW;T%)i*JEMEmZBm43tO{4cf9zHZQoOX}&V^Iq(<->0MhH+#Z9NNW4 z-}94l`vKcwpvY(LC&C96f57=Fz($!lg9pYv*zxQ`TV$Q~$9&j8;oQ7A*e;6kcRH}q zuuDA3S3C=@iN#(fCv8_(7a4avUm#YAea`gq*v^k0T#BAf1%pH*F5<0-k!ML<`q&0O zG>o+Bqd2VCX#6HV;Yy6JpO!!KNw{_N*Ug)I9Gc3uy{oCKQ^Sq!=I;LRcY7DLR45&q zwv5lx^b212U}7&Wl;G*ou3LBev3m)Wx-yNA@KjR+n@v-6UKsufVIDw$mhsRoB*^Cc zCols6#)llT6{Z|Xx|-&xoknc+SK7BRMD)p`^b<8J_rwX4IRiQ5jmlZ#Z&z%@@$;~& zs`TvP?`A<`W9P_^4+6Yfj#|2~Z3^_V2F872n->=spB&cjz){y!S-Cdp-o5A8F9Qr` zQAph`U(XBiMDlv_of%OmJgDh*b#{J-2K~0!b|;7sO*;yEJiai>o+x?!{ zfljW22M(m4mv)oq#nnAAF~MFEeGmeg9V6RfWKMn79B$9wZc&e_vv5*u`}UC7b5VUx zfDkq}E+Zy*SdlI!1!9Y`;~f$IUki|bo-u-1>hDXE6t5ebNoAB}VoHA$$2XbrD%t`; z-`59k@V#}G7M*zPKaa{?{(X*nQO#ZK_4)5rY#B*kVZ&J7iIBI1gantT7Eme}J~d6p z?2BZu1wqeHM0_8q4|&=Z;)3CzOiXlisZr}ynWwP&#tN{o2q$^23w?kiVczDgT!6jq;X+TENE+DZjL@&;SbV6{IoGQ0M~kNSL`PLNZ`8c` ziw8;!{5ZDph$o#ME-q5z`RgffkoNH6c0!z@s+pPDi&vW=D9N~=g+kTh#EG%G7JDnQ z=Y#H}XbNj82ZnH0&jC<;Yx=;zz$r7G^|}qT6yO)xANznC8{BAfkU^KC{*Y%}105S% zF(1(N3-jNuVyDb?fTu|-)>0zJ#Qj5nhthX54+tbd7?!b9#xvPxP{W6u_F-gxS*qRx zniq&2$!(NBSp<~v9YmDEiH$0^N)6QR+8b}7_6Qo$0a6S$1^hP_sy#jq1B?}T9IOI zay@+3?aE?!Y2-A88x~gBV90 z{`42H6=sSAtUpj%ooCZz*|!XSXwA%bg_ka(B+OcqD9h`WT#Xjv@6L0s z7#tC~i^|tUGl5LP!*jvSX_Ec<)VCTG%wos%t{|Az{bV|dL=@S${;|TrKwtgcQ1S1P zXyWzZ0^6atYm0*WlM{81fabI=p;DOWETz+B*3PxP%+rij~#+4P$JXKXyz4_64_|c9$s1)!de}J@^QdwQt__na{@Fr@?z|Sn< z#s~bfH-)o0##t?CG1Wm5*FWgD03sO0Lg>Rz6xCQw1oDD-%Cs8<4dNp3;Wur!N!akD2!{SYtfrX4wE zNks_`2@yMoAvg|6@$o@qm@qNh!=Bmo_7eH%hjaX8cdth=8g}XOtMdVv$&82lff*jPb^O|(u5k8u%I|4`19q(Pb zmQ(_vcI(21yiNdfl#VQg-h$hu&Y7n(a#76P@CJ{ZKf@Z@V!FOUIr&2 z(DK;RTiypOEG#5JaoF10l2$?%EZ_;~u9G3^-JLiOA&nuMrsJHBHRtg^5H}3x*ccnf zS_~oBg_??jptX@{)E1hQGJN>&d#WH&L^+LH;`v=eAJ71;M<0LwX@Bk2zo)qiM9Vt} zHV-f1;n`H@K;|e5vs;kzD~&KL0{~P<6%mFX{1*|w02-Vymn%=uU!zN`5z*(Q7RE(Z z4zM~6tq~Hk=y3)b;a-DJ&LztQi z`Qb9tw{Q~ZsP(PpEDvC4p+p{D-f{gxiE1PhjO-Go{D3^5dh9>arS0B`Eo|ob7fDTz z>`moS4q~#wN#qGkO&JEB0&@Fzar9Y=*BGo(av6W09i5;e!R|%Z^Eecv?>2PA=9^l0LwO|t^K_zA1Am# z<80W8TZlb%IkI;df(V=`ts`#kll*a_uQL*;vSsSfxm|n*uAQ;CS`pnApQ0x-^lp*x>@wj9gy$hlui^c*X~i4p^wR_{ zY8bfloo`n=P(7u11NT%lbl)2R^c{VyR27~#Y1f6`<;bBef9eJN)U4aw>j*ukq{Qo)jIbVT$4m@hn}5=WOgC3KIXMa7 zWCwM0D1cM|?pPwQ2J#WAz@Q+d*{||R7i`dpY_qeogP`2d*q9pHBB+pNI!2u)yOcV> zzY`@AnE;95F;FA}l~rsE5D6=rRRjuZkfQuxh~A$9pp}B@U(}dC6ROkLC(FbfbIo2V zasLD3cK~U706RGiHwgf$0;3WEI5Y%#a7a_>OCGWe3lBe@ZSpvsXMRXx>(;HQrrGb> z+uL(yw`VNpRxlJI>2Stsz5qC}|>Oq(N-# zCYapum^dS~C=~B=U>1@%{=wrfw}k4HO25ty>tv*msklV71H2cH6WXRKY*AIz9RlFE zE_dxIgckrm;D;=ei6}dK-lGLoz)Ab0q@>7w3v0XnPu?<|q$IuMNdMm4B4Zc@8i>RN z6I=ZG_oIR(*(MOR$o-y^&ei_<9}8>Y03clQeq)9G-dTBG7|`h_Hbc;%5r}?=I>ZV9 zP@^X8bqx)TGAIar`(*L(KvS4rNE2QigV^H@xE7ovvcT@3yKFrQd@_^{GSx6=JQ94| zwI70__uKGXpB7rZC9JEwn}l4G)OHlp^aRvG2dau{U4Y!OXSF7b^aqh@r`M@%-rL_# zgJ+KlIKM zG4*HK_RZz_T_mS?d7V``oj@Fi7#2N)0hu>wS%YC51r8?k|#?!GB-^$9`vLNu1F?550OZh)EdMGY0IgLl1Fv?1R!R z0a<5cTos~dREdHLcw*c)@m@AzdA1)0+C1%@Ee2tqOom&3( zq?=nV>h5Em(N>PrZo}hma$e8Ckh%Qv<|Za{ zrCc_B9M5tL={a7!lg#=|^Xs+tIpMI@q3}jK;w%ZcJ>7UTKK0(%=YoxYL zI6qzKwBjU2g|v+P0Nl6Ru7u!XHy_~DA~eIJuyNpJ{C!oMkH3X8`C z`f@YUYGyv_Rr$IaTu@WH3mZO6a5?USfj-UkM_=rujBF1!#7v%(la(dQ4qJune1N)C zWcCT_6vJf07_?q`R;ZDd_94h>4aB85&dF#J?3~wLhfr{NVlJZHsZ-WKKjbJ70ZmYm zAtJsOZN;ubOjl!&Mi_0OPzRW(Dk6gM?KOabV=8+PtiJMj69-2%Rs$8K40p{mI&dc> za}wvxUtD=p{k5!~bHgkc0aI95frJ`?-Mep0aBfmC#n-ze<$Pt66pHO0z$$p%D0bEH zbT2(QCKTY$f3!p3rh?gk{z)$rIynrz;~;q&kb9NEL;eoO)A+0K($$qh!L-Vjmf3=? zOa1ew@FUnXot&NhP{pPfv+Vuy9%FQ@tLtYQDgx<+0uR=ux3V#GcXi&&3l!1WxN+la ze}8Hk3i;~8zZN;9PUgjF-Q3;&F>foXruU%E-hi&(bIgvhw^LXv^zU()!w##uuSXD< zo&JR~if{0p*h%_#!rgH%w^dV7if?s@D1({t-tCpVuGn%T3aTJ7pcu^UG*lwb>uZ?R zZSV=fj3R~tnnW%sY3Z22lY)YKB0}koJ^igHS%X7qYN|&))3W&O$Fl%$k-&lr?mqO% zlqvh1V17FHN%=>Q9zo9Q54nIJ)QzL}FdHw3TTks^B6yg<+7x4in&n_)PXUIDU)+Uq z+x|lW6|P+@nvX2v_#g2$`+3rZpDp2`Gkia-Khv+^`@V#-f5(z;iO{R&D`uatq!bR0 zxu~jA;Sk309fVru9qMmquxm{)(A<5Mo0{qyHLp0SIM^(YyKl~03CFg&wRO+>@UYl8 zSC>g_RkfP_p!L&qu@<|e*D%jKk(}BVw?iXY+Fr~qPm$&pvuIwS{UM@*1C2=Rhu->l z_29|5dozu*hIjEwvc(GTaG&{5o1dL6hC}i2jG*o&d>(XO$;ww578VxBldAdn@j>Bp zyXt69IjR-L=9oA`8;#o1LvXlV`^yPECpab&N`X>x10ZBNkYKMJQRw|0UZ$oX8LHV07(z4s0&UAL-rvDk>*?uHrU)tK`tcPj-c@g2Ea>5_-6^ zX+F?zWFopT8{1#oTtL0a%T6aZP{`*#1;Tsh>v=K3<2$D220<>XYs8VHaao3u32 ziT@ZIV?^Ejs(#mIcJ>YW1_mcF{NoUbF#Q44+X>lUZ#*XXwua1qYO7eq_dp2fK=~;xZlV24s<>V})M^ZmW=K7KsZ9Cu^bI7wf7JW4D5e)XHT zZ*9PHzGhDM4Xe|7|bxJ?;;{g9_#Cy_YZ&f;~)_M?Gu=PFeqv zI;9K+yp%$98F!0xktgY?0YJI%fcpOd`KGB}J7O?5dnG>#YeRQ^`0(LoOSKy3dxzBi zfH@>A)2BYXBNDsxpn(gfz%PCG|%%DtVep-Y` zFvP8}%3nCYExNDhtXy|DJFYQQ$s03SodC)D6kLN?Toid-OiD^hER?3&+ANd9mtP(` zG@ijv7j~IMa3IIPQgU+b`px*=tx-{2(zGlr4C~jgizD$+;gtR7FTmVBI56g!}?;vZ>wRAhctcYYr`l+_GRDHeu0&aL5iJ5e_?PK zFKL9DvgzerFqpT7`0CUj6K-(BWz3Q29D=a$fNBKP_l=BO@oobc$$^Cf^sqt?E|S$< zH&SDSb$iZT0uzQaun+4>G|&=2Fstof|6S@!SBmnXbccG{fMy+TP~WJ6?~~biUR5Qs5**P?`4VT^yp@1pylbd z*e!aBWHK#3gcN*Rb&Uh#q9^INU{Nmvk!+$f;N4fXfk(oM0&Evc_od`^e;{Gk9yU8X z$0bW-K;8xzTxL2Zk1u#@^cqnaAjII&qoD%=AIYS>;@cq2zbmak-P6?Fo#O3<0{Leu zz+|gGuZb#-C@dzpn_s$wh*Ud=`DB}j!rRVoS>WB5Ob!B4_q&4{+K3_{zR% zm>gAS8U$WncYOKwLv#~(2>!-dXblKOHHyJ}Xu(cBbcmK*{`KK>B;`=h}{C9 zF0oRw6w2R9XPnLdP}VRqiZ50%dFTvX&{i_qKBfX|_LQ?(HJ=&=Hy*2g|6Zgj|0b&r z1S$HOOcuCyA<05y2Ta7@{~eTz_?lFCTtI)QMa|Z z6K&yX31j{YgZB^e+>IxM1X2u?<$W=bZ z^AF5x>jQZgnZ1#oKKHR3F~e#`9Y>?G<6@dp;B#~aVG<^@{(A=<+H#U?ZlA*ut>aF+ zlRZM9Pkd$PBlllfwvge7ehJ0{uGSqt4O&)pF zvLk|Basmot8IN9QIt>F&K`%F6NVk#UR)-N>r~0#l%o|8xhW6^AYfslO#o>mgs-Q}^ zu+B~i2XNKD&A3L8Oxy-q{rGu6AmbellQk4P!1vh9MH0M=pged%c$Fiam>!>I3U{q1 zw6R6rzaD=!tg~;Y8b`4rSgn7papopVuMEVAqA<#zoHjSNP9KyD%J`}elj7jeP^0Ab z%l*etvpo2;4RCZQL^5tU*wEm6>WePmaM6Q5(xG8{weug6%53W%^>3|(V^!?XsUX7> zj!ff%(#ln5Wn;^j66cPrVlGgPHM{$vu`xxxhF_O%3;Z?TL>1L?DxG;icvu6CHj2$K zmUEx+VV!|~<@X7VDp2?&oqY<^-7BHAvjSJw4D{%icd_6_RZE&GsEE)TMdGHYKuyyJ z;Ak5EX;ciEn{&GYD?M9qM~9eR?9c1BXK;9c{LGX{@GkC}a7u*~^4QIg{$$uqpw6zq zPl;c$+{DT%3BSk6F7%{0C~<0xfl;>T!!#g6=Td!r{e+m9cjP5hl=7W9b7mOFHBWVX zU4Gp6^)opA#*?$7zX6HESe}ovu$>WQ6cSWqZog+{Vsg`e3=CERmmXo_l~DBu0VXkI3yI+{lzb*~ELqTYu+RdaQ587#J5l?` zb_@8Sw)Bc_I#iHI(;hIzKs(X$Iqv1Gg&I96u9%wsv;Mb)}zO z#f2YVa-#MuceaF|&bt8}$4COyWH0{I!}kRBNnDN}u5=>j7<`F=O%4uOTItqC6935g zOAEBvE+$3?Vgt#vkwa@W7O7)7yz%&;G#3#LP@13>5F8VttQfGJ>*A zqsGJ94ke`n{QK4*)GdoVSpb4v$EK=48DR~cRZ>)x0itwvR~+Zn;I2-TT=B}9Vm^lfL3r=sDcCChR``>frq;cxNz)h8`+r5py~86z;=Keo?!1V=WXEw9+Lr zAm0w#^l2uzV3574-&zXE8RavZ-hom$)*i>)hXTD96C8hcOfM1jANb2&q?|^+u;W6k2mR&64T6GT)|r!%k}w$tGfU7I>y4j9 zwjv)g73I}y6|TRemZCv~{|ip$L?5qj%90X9^V0!jrV?P_;jLM1qmoimpK?0IjIZ7l zQ3mYB{rXwUh{GCFV`VQ0v)y;R!T5+024-e+b-2kq_Pa#JNnMX^0crSXW;Ah3ZxiL=Vt}G^)L$RO*SK_v9wBrlKwfD3m zIPc3Q&wUasy^2i*?mGN`r`aBz7`9E8A{Rdjd!%9v_YbUsu`h|_JOoUZF05-ZiMhtj zj*>SySf0uNuP0sKA?xN5H%<-?vt5^Av@~(t-EXAnvgA;kc*fux^~%NEy_=}E(ouVR zdN%Qz<6B~$+L6Dsx9&6?ckyKn5wCss1ag+oHyLUFmC_7AiXTi#QB(eHnS>QUuZPuz zFJ3z^vkWk9M)Bn76jj%Q$%={GQeMO1_t?OZW~awCepKf<&$R*C`=8gd$U@zCzPchAY5M-hA;zn_N0uG?-;DFrhA$8Jv5ft+@6Y)^` zKTt(DA$JW{1OrU7-9v=0IFLyffIJ_29{9ztVSF1Ry7ddQEgE6Hz#W&las&4RY)6F+ z@U(kowbCx=KfXs7`|@y>31}(1!m2Hp8FnZ)W>O}WE(`H--}mUFWF0Py2nYzM6yf@} zELU8}gf`LCz?&qO!L%VS81Gihdo{*V1&LfQ4-{q?t%(*FdU@gDNxAZ4!j`4Yp< z^lI<$(;=aXzi?s{OGM^qx*wccpaqt&#G})_2EK4KR66{9y@|}gcC334OEha6WQQR zTW{5zf7#)FJg?`}K-1mHyjbO+K*mjK+G!WhwKwByr<*j^;D$Lp^iNaG$*Y);5aA#A5Y%_j&~Mpf-EZpznE8FFKq%J}(-++$ z4W%>6xQAWA9gUU3 z-8FKk*{MAls~ldV{i&7v>K}feolW~IOhC2eCUB@VC!Fe!ai|2=!)D6rw3!WBV0_EZ zhd<1YW9lCPR*{6^F%nszdg~eXD<<-{T?;7~2vp$>48qiV?~x<7yOrccYHw^iZNvT- z<#jH8=KTTiH~PjdfQ$|pWnfq`u(wTk^B&%XFJoiZFfysdG|uQnGx+QD6latxb`Bzd zj~`f6yk16W;|M>Dd>2xTYpcT@<WD?z;PNR;7uz+?I# zGOT$8XQg9_JZ_jfxlf_g&EMAluK|Z*``O20z%hnjE+C~5=)5U-hl-loBcI`2)U6ZV zjK-B$CGYD-98idZ42E4&;o*KP%x9!xJnSIBMu%ojwHVz963?v)p{UB^!yN72I6BAkCXgb{j zDh z3In^!qgoxOrz~Q(dbwPH$U={CH5u;W?6R>2%$5Po5rS?`P6>^6W5dc4r^+7?igjNewpn(={3XZqh*Q%4oW2F zLr}WHc}`2yIyP#*m$jN#&w6N?&{`^`3v}!Y8TSHotii+=eXtvLDcZu^J8cdYvjG)1e7T!@yHz7mVo%2BOPUqfO+=a8ZzD~{TbJ7Sl@FJu^c#a*wN<>eB`~~0VDvJt(plp9MU5=;4Ow8|Ecj|paVDAZUCzb zo8t`c!Ty}7g#B5^VO;aNas?wV;*}F_crlk@Kyn7>Ec3S$rW@*PiPoA zCN;o@$wU%>9=OD3fP|oYHqiX8gi{Ms7A~GR=18dj%=sr@N{EJXiK(GislQCO;h$poM>pa{HEx$;Bn8-HuRV$_UJ8*;}w6b^jo2wdGZQRYIU`m9IQLZczqoz1MI>#n1=kA zot4K(2xE)t)>aKkMvY^AIyv@L zWl=j`$NYm?Nv;x#Oo<=64;*0G!~9_V=FP_`FG1Y7GY2c~5H9VY$DA`(Xu<1-S;3q> z4wzms7*LjGl>3q=;0;#Te}bx}PZ9yvuh$$&j`|kce`9vX@t9bP^JW5M!0ERgk)R6P zhZ;}wD{~$&^12G_3v3H92?-`VROVV4R95Rkv>{YUh>Fs%_%TD;mve%`g?FNgZy{~? zK}RX_d5_PSTJ&>kLZyUTt<{hr3A>qKRk^S=VcoIg2GSZxcL&f^KgV!C$v@e|Dn=n3 zYs{u>i-;I%?X_7p>EXgyJq>Q=4#z@KG8Wf(+KJAYG@|iG(ADO=f245yc#kmeUp-6I z)1fd+zJrVbJ@l#}ItAbba(cJi=Uv(H5UQ>$S0dw~E zq|VPc;tS(r{pb&}{Wp^XJ)nl%zK1!S^S~S3J^s+qD!Q=GKE#+-C5DN*M^}My^*_u> z^w5S|7o}C2cZK}itxz4q5OtNQ!UZQ7+AE2HdLHKeC|fP|KK-skeAjM1h8W8N7E_Pf z?n#{0%Jh0uTl?@GX1JfIkYW8UB@beE-}FxQw1>;@7ldvi|eiNuDeUbRoW^0XJoG?_PNgU%YVy;KVn+fCJ_X9Qk(y8 zFVO0*jlMA1VPN0{4v0xI*zRE++3~^#^7T0xcQp>-Gwnwj#$>xz3c+OK z5lzkRkst*x@aN*+uDf|P@D2v%!(iw$*D^!)#dr7%nzMqgPxDU|08sE=CBg*aXmI;U zJ?y4cn-aBm?h!hkOrpN>^`H9R*VgAs`ZszIdp=Sn!6Vu%)d;T!0E}dCAbx8O$>(7) zJe;*I88l|z-bczxN>VVL$IGQn9~_nRB%`_pYd_E#ez3ZowJw-_?AvzvY`@f^6cm5Oo+NUyZ?3wizpq8@{``GsjDZsd!YJ&BM1 z#E?qs(|Pu(e84wf_g5fsBk>Fx%a@jq7!1yihqZf+>q3Xzw#N$8>W#L&~n7M5VHq*3Tdo# zr*qIdWVrT^PIDr>%eE-`-;r2Ji)uSf$$#QU{jE9t;x@yR+rP*u+`b>1RDuIPT`66z z(9pzUmP*-AR$l8|kRBON@T#B)FnVir`|jOv)DJY2LvU~ruieWQ&Iwe!K=qNAAM`xm zAtz}34rEqLo1X9pLggJ^XC9aTi~W@I)lthpLQIUl>GyA9`R|o{oJ>F9Vky-57aLW% zn}^C@M_id`IN82fPECLyD}q9YoIY$?<(4(Hil@Ev-i(;M)^%Zn{*IPCL2POJTTFrB z>;OVLxYWD2V5mi*zzqc*k?vS2YHxp#r2Vg6T}_V=!W$&me_J6o#|NWv7sWhmA2x`&(Isv3auJA!m4nlujLjxg(#2;2dQAr4ehwxAiMO+2-5XSISS6{uH z;EJuxA>7IHyGdSgVj|K9A%0NJfDs5G)8WhPf-7^@t8Uz3_^!C2uc73qaY3yQbp}8i zIoy9{nQgz}Gvk5*Iw9qQ`WA?mTV6vW%EXOruO&6!$080;Qrd=2Bdm~$LV?QW8nK=| zx9uo#pQWO}SSawx0>F%q)pf);hgktFT1IQ9QhM}P=j3rtKE4NyZV2AJf=f7kL|KF| z?qKjkEPX(Ic;4xNV*uFSC}5|I(RU?yAty$ zH0_%x6bOE_$5^o*jPVF5$o>t~@*{!>l0iOk)(T{HSojzaQ-bgvoC2;H#?TOpw=@Bx zz`;q#;)sotpXtMpXa8Tb4e zia)-+=}aFc0tY%u>|JT1a2OUX=Azur7ia2t)qOgf$XV1~-@Xg^i{7z4#bc&_(6r1Ax(-@Z6E~ zoV>eT(`)DceK}m#4N?cOvM~_cj7&XLQp^LBFtwm(An~#II!_xvH({ZosG_4#07yAQ zR&UGp5ZDQY;*1d;p(hs_6X_0=S|C&tbywmzs1XTsKYsj?v3@m&2ZB#Rp^#K6g2%7( z;Uetgkq%WSClS-i%O-L(qY5=ZCBUfEdSD{y{iB7Z4VIvahE}(arlSRgoR|o*BJW}=E33YU(N1ROnvO@Bt8swfP?nuB!8ei1?x?~b*RjKZZQHiY zXF(%71E0r|cPSmEjyt+)#99rc4xI|A6~9O^&9^{StdrHMc4X^hKltu`6rZ#f%Mf2_ zmj(Azc~FZYfTY1+Y+Z10us=9O{_*jh`=Z~0o8n(yE{S)Jjxu4m9NBepASc7hR34)C zZ+UMX!5wj<43{Vi^g$PsuY-ZTrv2T!^1R(KWKo#rz#xUPJnpxA{p(pSs7`MvrFYaN zf*1Pg^%K-IvNL_)9i@W#4?R#SP>QFoHND|-LiBEgl~`c7hs1IqIDDqj?aTYjEu7_m zhE{(S#;ty2>y8~8C=}ojB6EKLB@tB=JaMF2R&xpVA6NdoXA2*YG>chAUYL{#S}aZN zQb~J?ODJ)i443g)u`z^>%0Ow}nUu7HENMpjCA|hz(=Nc8Kr&ZWwX_^wH$S$)kP)f? z5sU^EG=&vuP;pV=n6ADKSBs$Ow`}RCkluf+f04>VEwFE2EFM46W`yzz2{jClzg9Bj z4n)(HO=5F!z~P&#cBxaIu{r$`=arP)4w!%fCPqq!y#?Yo>0#Jt{Q3ug3~D+0K`=g? zan;v&f~m3!d}SWtLg8}d&>WW?dS6Wf1E<6-{yPFx)cH==t^8?Op>PG%TWP)ien*|} z`~3V`GqVBl@ER~RURjCD;pk?*Hvrk@4JB@RVHF9s+g@zhidxmY>1Tf76=dW+BsAm!e<%ojG zTa>4zk>lUxEDG{tvJX!yeL&(>V><&$)t*IAfNO1LSJY#Jg zMb!Se$kdqWjv4U0igt;ffh-9t8=KkdEG#U1P!JxA8|B)`L3huB*~EaIQ%Jlz`Jq4l z^YSW@gf9;7T)jmoG;NoZ)N}qyS_)E^uX}LL;{3RY_)mkluwIMjTMxN^rk7q`{6wA) ze2L#gazv7W%6k?EPEyKU!(azd`HP4i&a4g2d->&g9{K@iWFH~n^P~qA+B;N<`x&9t+<>FtIIjDHk=dY zXjhmY>wc?iFT3pMD9ofty!<8@wUFXMcc)4B{-ZN3u{pkZtqD+?K&cBbCR8+oe81Ii zU{CaBt~`;|N@gn)ldRFM#%;n2tzL5bK|F-25)c28Vd2+H%vTB135+8ch>O7|{`u@% zp$xXt)47(4hjwgwCNH%ChaBAQN??vYCcvaJkh>@57MuE=frvUx78tS{gOn z^ov5AyLTVglM5d$%x&F>eS#MVHi4A^^v>%*iEy6=JiC(;>V7*T916X5JY_0U{8Xd8 zQ9jf>YlaW#!lv@`XlNmCL_ZE+adhauo{AJc76AM<;&W`ThKEJ z2W8&ba7Rs&%2L(|_y>W77GkWSH!1{9B*FO;R%?+MYrsWV*tmrL)X^oYOjr!Ol*Jc| zS8PH?1ZDAz-Yx0Vo~S8C0`C0uvRVb3mq^j0bTof-c6rd?i=m)$W4KBwu{e;Zt{AFP z6!6uz7vx>7$M1wsJpa+IMgs5f>kyeTnH(%ff!!+xJ(R)WMSNkn#=786k#F%lnPA%- zDZK)*$V>*)zs+VIy|4KTQ@3eg&=B-kl;uatU;lVRU4-KzcPe4sdNI`lq1emOp|$JKukhFi+F?Z>9P0)7-7zS5TF~FITsr z;FY<5m!rowdNiTaOSTv1yKK)wDY=Uax#K&qd&+GU9d9Uox{TjQab9m>G079^YAnoA zGvxevmM4K?8%qzS6V;V<-?raflls91bbYQGWNC=h!ZR-**u2mXmDJvErV%S>N!~v= zvAsfQ0Z>aCK(2+xgW_iQVq??qF*S%Ugexu`OmF+lRl%z=eDw695)~)S8tN&|1hF>V z=k5pUg09?sn3dJAg!@jx{nU+;>Y-p88JWL7-W8y%f+ICf7ZQ*QBEf>hQWCSji^n|H zu*l&AMd?%XjRjtU%^Ra|vQSgA-#BkI+)}Dp_Th5*RYck9=xn{P`tw$5W<`}sy)y&Q z1H+1j0^j3(06$W*?4!?dsJ;_D@>{IDF9KVrI9kCFhgG(Q+-KuU+W$RIt!r?$6u+_e z;KAZLw<|KbQ%RBehB*}HQ;e^y4Nk7}2L-Ve?XsqZhCkM5wVedl;ltZNYJ*Jng>72Y zsQ9y9nw(=uPW+Q!eiea8v8&D<+TiA)cv$`4qy4=)XO9O$NZRB%fW&WUIktgto zF@_mmOmFz0ZGMl~T>LBQwQIRh#O4W~!8HyGxcAaO!?LoV`bKCUFj-y4xKASWG?s&?uR2rSNCRf34qm*!mAdCgaG(_ zP|$}41Dg*kQJZJnGMKS;T1WY|6*}M{Z7<*J7Ks6Dpz848KAc!3!>9iCg z@Ig(sD9sR5`Dd1H!lS$=s2zYeE*&NT8iRx!mdC4#b=B!;{@oFqHHsV!rUnZ}3lsGP zvNj^gTntw)Orf6`m!|nd{_K%N<&ha#3ZTSz1FYe;L0uI?8O(f`978-P@eJ=je3%Zf z<`DV0BbCTOre}cJAogU6k0`WkFF87t=&EtXK5pQ6e=U5KV(}9G9X)-CUxlVadg5K1 zO3B|+d+@Cu&aK~oepo8t{-eu%j$G+{p~?B@7|_r=wc_qR%4m@@AWM(0^(HD=f8H~X7u`- zX{yresHy##^(_>wSV?BmUAePqsHqFkA=l;Ic$n->i?gm{j{yE=z1xt@@~FrIUtwfq zBr0h8W>L6#;v#*~y|W7Xv=30L`M)xEW(YMjF863Uw_mSl)#T_XZ^cbSwyxUD`dB%1 z?g{hn7yJXPY;3p*O@2)QMVv{qYQE$+t-ArUykVSMIPRdiI1ZAl`)ad%oACE})@l&y z5ehczK_}zP&?>sEB9z5+j?}qtkn!PYggUgx?BkMS?#(6nb4M$>99aT1{@ss0>qSMM zva3JORW(<5U1Nby4$B!+XHO^O1#5$pNO=hom-}?k_3OvttWgWZb&Hr_XOO6_H58J1 zfs4}Zjx}*VRU`J4!VToUX7~H!f;S%jmi1)PAu0+#a$+#*Tl~9ET>JnDV}mU3I0`{p zX&Gs0lj7CcdyIEAh<}_TXEgmqXHpJyIVwS?xRtN_dmCE!t=>-1=ix15W^sSc5B%q! z3Fh6EetwxZ+(3bOk3c|jD)So^30M4`H^L#?n{%FYnv1~biHQcLiywqk=~t~}pTK>5G59RLee(dae@KC}`Q`1m4s_MeR4s7! zVF6Fr2HnM|aWw_}nfp^ep~*xZ_#g^!<&!5XzU@U08VqW>sgYW@^1E`S8rC?b_uWVU z$bBRcup+(#$LVK?m`ES`Xs)5YUO+Qo1#cCBVPN;9`~1cBuWN2bGUA@RAu$KTr;~;E z6*bGl$O>7tunyS1l-~&>^=s?pZ5sMGK_mrOho2t{3*HbZHA_Po1VHC0{RVa8X`*a` zA`P}NYasxW!^K1QGh8?O!U(Ro`{1QORE$SM3%BPXlQ1Hu8b)&+glCVRyj#P?q$sDX zteiUj@c#W)lr?KrVsN)E&Dppy0!o?*Vxq?)8Z-spaut%4Y9}4^jv)#l2-PXGw-Z21 ziaDkSC1A82o%cq;!5gRc(&Oh86aH^Hh(^^z&V%6x`(L6SQ7h0|Y*!Oi!Hiu2o#xgc z=%lq1(uJqIA(G*Z+dVY#16&R&MNN8k_6T$+%ttElqb0$z^UuST(m!(kyW45#w{5FW zw<+)noEXQJ$45Ygm4P7+X%|`%Mk8lhS?(YzY<2VJljvlR0 zsBl5oPT*j8lNp_V5rnZ||1Exaw``>B5);#ag9J7QNtc-Lkc4ty2rSv(C zx9nWxb`4S7yZ(QxMiYWvh~=^RObRt&_JH+(BMBc13l^^$D>)Egy-eDrryy{_<6`>( z$C6LEH5d|LDWzr!LKYo?QGNM^i_pa8^u0KWIRRGAdW@8a&nwasoomk+;Ie`>LA{l$ zixU9V)%aX^K02S5@C0AG(igTQ29dcu3k=NH4{!fh#+ieKurWl@(Qd2CHtfzT=yFHx z8OD!65!6$3V!<1`2D{K7w=&GdrXt=H;h_5pFJD~TB$Wb`$F)E?_qZrqgMVIt)&Cd6 zvTJGl7a=T~wtt9Fnx;mxZ>9qn5!({*iATi_yu8$LxU!+WaWi`~`O^q@Hl|}?qWAwh zaM^GcwChy3Pn8y+f{|}Qo^I}Id7jFZWuHDD%qoI-R1WzqOM%(p*3#Lv+}3zfC{!NXpVA6bOZ`Vpkb85Y{8=Rn z51qE1#g1L#PAm9dEz9ysz(7;gK+8Wv z)(#(qI6`wh-Nw#-lA;`EjX(@PrFkE3@3QaV0e*)=ukTunAK{Las@lo4?~S2F2^OOK z##!XJ9s@p3?T_;!RniIPDH0g!ti;>k->v;vQwFODJIrnG5#&W^U7#kJ?=ZtyC5tmj zsIBna0i$mK>$Xs`pf`k)X!qFxzlq%1k~-n9N3iC3RbrHNbnd=8P2!;+;6T(pB#rs@ ztLuT7+B@fVBDbW*lG7kA6LJm3?g{L0dW!u(#ft_P0JS{$=Qx&l^L~?v++{9ETQCLE zw_hH{PWYXr_q17Y2-Z=m?vvO~c)cS-LvpzJc6&}|W~pKYKTKmWDs5 zH8p7DF;|s4D2tZ$Uw`w?I;DygYj(0eOFVw<2Ckka9@|2;XQ%voATUWO$wtmFJRzs6X z{7w^kbHN?=Qc_X|k1F6TAz4oj?Qw9sayKfZ%#TCd$a3~3c!CCYAFaSg9JmGGID@1@4)Us`;qKi+w<0X;Tlg$00XK9qHV-<~w@po#QlB{>%wT0` z%j%r`Gc6f-XjNZ`ThLJ}@E1RM7=GIxuEf1=>x<7!`mvxiZ9M)MHo-i8c=&8-;i#YHKeFZtsK^^+N4kc!r@y zq@jSlmsK}|C`Qfrv?^-OEe%0U+o;zB?P6kjzD^zc3v-gY)$iIJ4{R+B1=XI4q`Ocg zV5{rO;)A1_t10I&^L%sK# zzTP`0=)Pq=tX_m0YL1-1n#Rg%@%#JDOk`Q3JWR*<<7cF?&`_4Zy~U9lyk3#33awWu z$3;+Wji1axF6_2qglds&E9r$T7@jcUGL{(t;k&ng-+==~tu>ZK-^Qn>Pl1OP6yXK% z3ZdZcE$^(vUG|cZF<2_h75`h(^*9K=>l`^(!r#;3jl7gliAJO@apBdYE*FXT)*_gW z{PImZlnuvELoGjLb$5<_YCq8u%8bLD=t=nk#t)0CXQ5~?euK7i*Hi)gC}?*s0Omyc z;nYY$no$hT?EL%#%uZ+@?#5xZ807-Zij>q%6vjscRT%Mlalg_t7k+%pq6R+5h^sO1 zH~eApr_giEEy(bXf$H709pQLDkNdb~gW@lzx>Nl&OIKhj_ z7mlxA^OHs+37F?RoeSw+T1WW`iPQJ60C{>^+Wzy+iTkcUZ9O~3o3L6K6Xoda3t$Ni zF0r&6{r$MX1tr5Lix|Sw?{X~qfK5bBhZvq)-c*S(t^kq$xOskQ57Iw$3fdhS3gEYL z?ZZ9Dc=ft?F-o{WL^5qEiM?UPTnLP*Xvr5S{Dyu|BXx;G3$V369dnMI1=mdJc(PFY zwaQ;#v!!0YFBSg`7N`K+f+;ZCVParF?rGE3ji7J+l+AL)XglF;yy&UWG>t@YYoxQ| z5?VwDu=MfQ!t|-BuMCu3=g&`bx$Oj|3M-%+EusYiOpcpoJM_%f5AgF-r=|@4wb9jO z3A%PI2B3z^pT_lYJ+4q*Ee&6}DdB?byY~gys`G=ehFNbe4qFeIizGnJ8bZ z#8~T~|00<>@wud~qiEpN2y5Iah4URI3NwO_CraV2v)mOXXd*&xt3~s}XWMy-8Q2?- z69PHhkLe0OVJ(s<;TY>g&}T+mdqbIp>KqTmzB0!dw~OS~i?Nb@G-~l+a{x+;6dVxv zSr~eKh8@Cg@PfoyH#pJdk)gayJOU>)RAv|N_K0Dj;>JZrp<>CS6#Bq`fX$(+*KTOd zX-!n;>kG9DqGb-<-wON&Ct?jW7noeQ*FMb1&_n^ToFU%H(T5gAOwbSt7nAONXU`V*q+>Gk z=IO&dMQ`}C!f0vb@B%2MXv&M<7<_vKqw-j;jiBvjm(IDzAA1JkTxdkZSo2T#J$R*D zyT`i-uKhQ`$E6NTm2iAOz95hSW7kc06XW8PfZZ4y@6)VHe#)cr17D{6#TzhnNgO>% z{X#kM?$%LH5x*%s8IpsEY5r{%QB!r8Rc(#X*3kIQ(Ev3niBJAH*%Qz1HNqfhRPtT@!XO1^vG;Av7Y)n{z`3$6$WE-zDA_gm%} zmUN*ZuBzx)=DX6{9`$%x)k1Bj1-*wIdZnsV+;YojN>H+W?aF_s7JM|n5~22(O<06< zhsHJX;o{4JMIeTZM)8}Tp#(3!G+QvvvXw6p74_pL0^iC3p* z_h&fKhme06RgmK^W<09+`_qecP;k)$$rdl~-^aOky3Qn18(fT`{Qp)3D+!Q@uM$@m%VnWOmRQR0Y(EBWi-)0(zHs;`+*>oz zDdk5)KCaGJN`CzV>H<~ERRlI$~e7+G@nK}^@e zWl+g?$L`Sehlo2!t20()VdEj^tKJX}5>nun1xZY{s6WOXbQ+&S0Qr;2m*x%FVCMi9 z%60T$NJopq8R|ZcQSa`M*7|o%L6U0q$i}un_v#D?KI+ z(SLp_dI9}x0dzONxo(o^*M32uQeXSZ50=g`0DI&`VU&FEv&c>D1{{}Hu6O0xj`jAx zHEG)^_us;zhi~KSY)A3vs@H4X0)gc6e{d#MFM!44s5ZehOD$akXkjD`^;;IUUT$fq z=N9&E(5%t<4{v&L_T2-KHO{Ogoo)Bpn*AxZ<(C?x^E9}|xu}UPK8_;SnKwJQx08$b z5pY4g(Lap)xiS4b*mPGi9#Nc4iVxHH(N5Ll0>cQLlvE&Tb0+1Wt~N`?qRznOBf^I| ze1Q{;iuds4LZ!*J6G~|PJDwwT42EUy0_0H^`?sh-ScNX4gZkB#7*T!w)_dkjy4Z|c(lN`5&j$JYM?Mt>a>({${x!{hMUE|pK7$kJ# z4He(3=xQQ}=Ya1YzSw%j4SBzHA8A}!Y1EDDvH~CHYMiivYwf-G(ew7Zg(rY^nf~Z@ zc)I>NES?tQN1;D)4?EZ0cO<<{-;v!&6GkPxsNbAqx`x@xPk}@49=)%dMgH-@)OssH z-2zfTfvYvzxyRlXgkCQMP-UpCyNEW=4h<=9mX-+<#DR*axY8jXGx6(1t8f}d&pi&1 z^dv;`^6=dMXvdi*1>3`S#dK{=|y6ewP-7f0x#@Y(I zuoj3h?}vyg`$8521sl|o=&g5~_>5d)5TawTc@gP_^wQlcCQ8UuEV4lX*^vexPuR&2Y(0dp&Gh8fr8zZ;8_1%s9eba6q^e` zcO+j{x#~}IqSpdhQt`kX#w`3;hk<|`-2c)iK0`sC3bslXSRNh7Kf~rYjszf1V3`$F z+05oP`H485LN_XcNDwf!4`xJ96i$A{48zsvx&H|!CdHw9S9sfe@KG@lhQVViw24dh zZpzAaJDERrRb2YP`(*n6xB%rM&+Wj9C1bSyv8$7Y$jdt={qv@C1z>Q$_1%;6pU0DZ zBBn+5mc#hrEOw?lc6P-e&C7E}*M}2s-Ktr`M?rVYVuHGkkXFOS%yp9cm>;$MYQP_S zqHtyr53#9b4&MkTVzk?n7xRaav=)g!^B~Nl?N=!d5foJqP}ph^tq-Uo80;wED{AX> z1a+=T!IysrbifX0bWp?s#+>id6zQgnxVgF2nD`K^VhZrvd42W;qHhS2VPpzG?PQVB zWaH43lv42#a0n}dNt({cOSF>PQkis&rHnU6@y*xK0GwBxs*MVtS=#N|wAaBwSg znTu&+$NV_aCQGCG`*CmO&vh8sWS02WLjRR4L{=F}SApnQZ*-LIsfp?rOS8r7bM-Hp zh8CsBIyp_z2}g6tMoT6H&4lbu9*j){pX~b_Ochj6rIo3yrrbW{lIC26r@MJSDDScG zugDI|!~9$uV5dn0A;gt#B^eqKJRT0qyQJiY4NlDf0EX(Ib-rt8xoCFQ1G) z(Y+0Vt`m=UuBN*u{3KW%4h~HTdl5waJ~3q&%DjFah?t&EP&D06CGki2S)0$L!O#stkY7YvQGV1lqHjVk{0Ej?3# z=oB6<7!9}K2vEkH>OK~5+kKT-Qgx@0m^c_s*r69HfXKECWSEYaU(0Ac<|G)xYUD9n z*fX;)JS^kHqi?t1?Y`;MS6``znA+WjV0~md+QQk$|8Ch9I zntH6{^s4?s#l)r=laPRPIkYw>H`s4~oZlzm@uFu&2!qmLi#R+i0=VLwuRMRr8t;10OfK4A9E z6aE%6-sO{(74yoR-(&nKYARn#&3293$bvSZO2Hc|X`RE+;1yldGe00MTuFHZ4y+{+ zu@<~4j6s2cOxsRWO^8cAy#L}is<`TN9-2cBFtQK@b;)RabzzW!enhfc7Wi#~nv%5V zvJ@bYa6ik2wM+Up45CMTaHbq$OiqSE;P%%L%3G2GT`LY0WQr|3y#<-wqf z1(}T9AG8$r+`uJ9o&)_HaQWA|W`&Ac1$&tF4=KahA*}C$>(sdd$Z>$^W{KQ<-`V-^ z*hc}7fdPCgn3@ZHPMiU#^fZAPUcl%MH>cMtW?lb5fE9Z*m($}gBX|!&)f4}`012CX zgW`b39gZ%%Ww5|eMuHm(aDh;*w97Y8(0n=*93H;s01ugWl=&*9w_WVaktR5cS}aJc zBl873VJ0^o$AcfYM^kYW!|o(2gR#HnVc8y~=z*O+8B`kNcRk*6ZQ{bYlKVg*(CnO6 z`4e{_!vbfiRK^t(6g53HM==l5t|>+7}MXxtO$pn zB48av?;Js4B3pLX=P?itbkR2mj~HUqz%+hLpnxnXNZ^X;%jWR6nt&6d*(0Gr<7`o$a#oz_**0@G3LIJLm%VvF?r z$1{JHao|^jVjlM5IEt;a`07wC$|9x{S6c)?4Ao&H5j+C16woxuC5>JL1xqTrvX9Tb z+;R`tW9^cpC2;2O&n@tBaZ`r(%xP(9Jp%EY7zl&?knH_c0F=(kk3P@myB#Eu&G6Cj zz%wt7{5eBE3Z_z2pty;OZdM4STD{hs3^}YFVC8rg(;$7!?V!!xbiJA?tR?`IO~OW_ z7u0=B19m1rl@w5`@N}cBw_#pPEX45WBY<4+?B2~SB&0UJ)!N`1%(78_Yv)rA>DfB&k;zFDJ4H=fdp&!DeM9IC0E=Bx zKu!B1eFh)tG@J_DvmZ6z(kr}09I6(ZQ?jy1y}>&vlmO5MBkMn9=nk~?^)=CMFR41> z*i%i~T;ernV`3Le_QN(80y_INVYfwf*pEhU&dO@vEb~Xh^7oHA?nq}2oeJM2dAdg2 zc)EJqet67|;C?EpjI~b0e!ZY*nK)P;&|Ms4>0}t6>)9_(3e+-OPomR&e#tv$dAUM$9!2yV}hQR=FiS&XzgLq zx(@B%qI_@~VlB)2n)PV9-kJj_0&%aPr#sy34VVP{aAyGSt*oY24T#)%Y1SHsr&~PA zcY+RYnfuZ*7xexOU}ZzEFNYx?J`=-^9lo^-u(do2`wUhj3yeQS-vXFn`S8w7>v+CI z8o5vR@5F3{44iSu5v~G+?;IFBd4$vw;Db>9u{rSXz9X>Q5*13>9L&Mg0T&DkJ%^!* zJm_#C)6r2;vSc`H*0DTzb+Z`e1iALeN&hZ8Ln7V4Ad^!7EzxeELK^$OIBAbVQQj?`a7fR37PB+#%n7*LUHTjxWqKrZ0y z{0R`_Rd5M#7+^wPZ#69GMM=pL#HWSVZ3rGx8aAJ&qZ?@RF&Nm2kq{wb9~BKf2I_)A zeAnanv)E^7hC$GS?J+$YTPQ8F;4b+10J2elMtyp*A6IM&Jnrxh9uF?J^zG1(v%Yxo z;>#gta{$wyKjx<2-&xsVzf+)MW|if2l(C|3Awp9sE+2Wms@|hf-&6_lGq_x*MGM6* zjx}y0u)N4Yk{zXY;-rywEfx&q%mTc;ihBBQ-o2ZPnB@hq^+2upeCLy$=lY)~;^`>i z;NUfgQ_;~u*_=Y$35uRp!ge31|MW#*>?yCy!4wS$SO~?9Grr^rSPkd2OV9iy)a38> zXGcQS3TIOS+hzhaDC?a@t)+xGBi8Nqf78_-s1L@6=NiKK$v^lH2>EYJ0l49$*4GK7JgZ zk>#@DzlN`pJMk(^cz5sBe5JtYkV|=J^J2mb{WBJE2(abxECM5bnfU$KC8m= zD~=iQC&UmekAf)LEo>9tu+zhJxAuX8L^l72oDzFa4){R1=(T)Lv`rqm*I_Q!3ZhKl zCl+9`=1F_cTyyfw0RZo59Sih~J6`HMpZ=6hZp3H57j}ta?GZmQ7{AbSna1h%$9)5g z%wRgIsQiO9Hose`$1=_Ycg43+xH5LV$)s)DRDhC#0+W#es1IarTe%(?rJ49-ihQvS zHM`vAv$FodumDRpzqdd(%{_QeC_>U!R-rkyqj=s8LxukSevypUt|#n9RQ+fSOfFSm zm$X8w3;ZoO>=jtct*FDMf0e=-OJyq~*!UVl&&iaB6%-Haeh<(EpxbCS>A4RPwifg? zCDS1{ZV2Bp$;SOTx5}OZ`GaAZ0~xZ2WHLXd*(mYXr?9FGuJIUIkda5_r>cD!HQ*J! z+j2@OH7w8~hr575d@A%Y>81gb?EVw-4**%=0R?gQMnss=(b+Q8P{++pvAG3ci=dFb zFaLX}FRZr+yHx{#Pkm3%9c=BVs~+Yw1JmZnj*N_SQj`D}0dCyKn0x%^X< zpalzb>dFr3Rtfj4&WA@2|~+#|vrOE==_%!nw`l&6u!dVfNkb@2r&fz+c{?1l!gF_^@Q(I$6y3 z1qx>tKDS*R@Pkc2hHD>g^l#mEDCKny!M^|1x;N-DTz#_nRWtXC*|yQ+-cG(a9HN!) zhC+Zhy{)b$sa$FTJOeG9Tz#RkIVHHh+Lx3)o~Q9Mq17hb5a7k{aD1qqOPv80^ed*fZChpo` z{DoWx4|a|w;8HvbvuJ%p5n$@J0V>h}U~8_fuKLs)D1+!)Da&@Q=MUU5s5lDl56OkV z-G+?-QW%1iGSJqfp&SdoaYF%+68d9=3J{WcLerQ-R@Q^@krAn?qjOl0(Q$Ft;O^I7 zA%H3aRf`aAL_BrQ2J!RZ(Xp|s|MBljIO46hfoY74f~>6BI5v_KkIOpMVUly#_ftV& zCa+vXG5dmk%NFh&vr2aKtPg<9ZAXRCn@U;vrc+0qz@yTui3%OOKoXdpl0qT1Czgr} z;3=f?Xz#WHX5DC${}lXo;Ret+YcY><-_&I;_TA^mj!i^P7a9Pypa`|WitGo;&=bn6 zq!FOVf{B<59cX64`iyy$wI`Pot<5m`9 zolv!1hE(0MX4jU$4eHKuX&=X0Ufbl~db=N2aBcqHycLe?)eL(o>ao-pwzGs;%NV^r zQ}hFr`QNIay4B79p8cfiIlEvxcflro|I>$(9NVE5BFUWX_z{M!TdzYsQSnWKWlz($vxMOhS4UmO_(FHJT5y^MSsvAvqEQUfMd$Hu>9tY}^}nK7^_e zecjgU6VkRbcEvr&;A*-zp0M|fGpsaKg5{|G=@LQ}pvd_FGKm^a_hZOcDcxr=#D@kb zPk7E`KVDzdyKA1^lOAZY*pH@Pcs=1eFX?6}eB5b*Hche1%T z0UCNA1mIhBLwmC5PU)K@3JU@hATdto$_# znZ!&I?HiyEr|Khg)i`4XK=~RTMhr@ZDyVH7zm~@DEnV`1Zb~<4Ek!knuNA}Ovxu;4 z#~DZBN$);7GaR+Y@QB}9zLAfX55bq+PTLS+-D#QFK1Z^Z~0@1)YGa&YCbM&Ao5{L5Nz?lWu-BRa@(vR26;O8dLosE!(OS zLt8!0dEA)4Jr!X)eW%IhD~ytJ4Dzo{{g}%Qg{i$J+9mhS!|>oiaLp`ZKjkw}Lcz8d zNK_?wGA0nPm$~^l2{W#_`+f+-1!Jmg4(RTMjB0oYp2gTVjo%-o;-zsY)oOcIo)t+0 z4{YyB#})r=Vi|-46E2_qF2f3!Pa>FG)xDWqyCyCLQBm|qpwpb{g}`h|hK#205IwDA zfV-UpU^BXWwadyN4&&@Ef^O+iHVYYY9wr8HUcWcvGhiA1Ky#ys!Oi#00Rd@mAElUo z*K)f$bqu2rvD)3oROtG0pEd6@4EU*7I+r5Kc)$F zebgInv!9+Qh3`WgQeL_L*v=|iHbP~aC}lAE&bfRVG?>vMfv>s!?o)bmR<4?xz$vEKg#?4zIfn8+` z|Dw-x@Pw|V?hGOzGaaOv*x9G@PS>*)H{><;C`;fL)IK+YgVYWnn)bt!J4MtJUwja` z28bHl*y_L?6Ben$HvaCh+2&d?Gw>ra!Ss}XcbMwQlPm}DrV8#th9ZMI`X*QlH&9^{ ztH=TvnoS@;18lD2|JerJ0BrE3TjZIP?73uip#z_iY#(L`;zj}sFa&peDo`U*_2AX` zo|@&rIq(ePoa8$|l2pMg*78(`_vn4Jp{IR)rQq>S0}d_xR%s602`6P)@h8i}5s)90 zJ!iE2fss7WxW;=mXCkGq;XRZ|6W5A%9YgDmNit(~>nl39y#nOvz-!mizzrZgnRI+B zE>8t;n~R>oblDI?QsS}?e&tKY1J$r#!7qQVAD70DnTb^7In<3JoqH42^BcEbf2pVZGy zB}|H*KzOkkA&*eZQ3()+D6y*`5>FB15`WZFu72Ya90nr08unS8dH?Hpeix>dG}PxN=y-3tiQkPmtBVsCqkbM`RWyrB8Ko{4koZJNaS&fY#>hY%*5>_z*?w^8}^)P}&h> z_JOx23^e5`%HMBq6QBhBJ^)J(+%K(g=EPsO4pp%H4t$%E8XzHd&|55i&3;NkA547_ ze6|JmMwu=>1`V>9i#`K@O`;qAut8oO91-E+U<(LB34bSvtE(O&)zw~bN8-;AM@nMp zMt8UdpVv47?GEimWUaD<{eu9(-avGt@#hz?9#z5NX;8Qi z59KZH6MpMde0;0N0LTh6tz@E$c?b^|Nig3^JZi9-WCTw?*sxgz6ukRcf}3k=?pZu1 z-5cmrtzh>lUW`U#AsW;E#6;3WlLaR-8a+LYMo_P?lI*}o?!8=K-w}%5^B)lcx@P&@ zp&yM(R4K69DBU4rQAK^(%u~@CH$0dj(eNih2ac8Ij`bivT@EfAsDRgRAwjluB#e%h zHgtzP8Z$pJ6n&2y_I$x*7`^2-N_H~-JYmmwDp|cbAZj!~J?T(%ug(_hHCF6C6SCyxRa?v4c-#Fy$?)R|g3ztaqCg^FqQ!YFVuK znkP;$8oLf0Uk=YwL}&WrNI0D0gW(XZ0^BQOVq$`4<}N+cpWmS`fh(QX*H3V|61;xj zxhpx?x!%i5<7e?`YC<0($<6c?NN!+F*oP>jW@Q-%9$n~lyWhuY^{HKV+g*&#i{GK$ z2SV7#66I1f-93CTG_4iH;6PCBn8-L=L!*TZk##qr#6k0zyX6|__NOt#d*XY@LFE;7 zYM0{!6fE(7BZ`n=!L zy7kGei76QW;^r~H=7a60zY!9n$1n_|1+p|!S8dfrtyZx(Oa~&@NX8o!*lNeFZ5Xm_ zZD`0=ut-w~gooDmkUN+{zc2VXnH;TV zqq;h`Hmp4sQk4OZZ&fso<4b`ky0oEFJvxM=;l`80E`(yYaSJb(`rRY9PTAu)P)O{@;7r9J->YjCl_M08=hg*3@b9TX_7B_G5V9@%O-VOqnS&^D&C&nG=g(97F<_UNU?h&%_Neyy0} zg}sP$EJ~rJ21RqPB=s_`HZyATl=QyX4`e$*lu!zhT z73>3r7A2IMKN6FY)JZrJ?q(ubC{3{pZ!lhxdUyIr|&7!;Y}6>j`cm76V`W9R%3K zf9U^eUcMW|o2vrpU~tb@?`EQ85>ZeyvZA7Z?ekb6HX4Gr8IvP?ty6s3KRk#bFR_)t zl8THpyJH5y4#;=QWm#F;;I%?!M~})#^``4qrsvmtQP^BU=ov|!>$kZEY_gQ;2Ce|Y z@*vmVxxTWW$vu(K)tx3?i^UX$@SKI_`#s8~%fKBdtE0BL%B0ANA=?pDr@5VnT}Nni zGPM-rdp7!GXYPKDckyqog9gJ2b)7p{U!C9=>UL5 zX@G*-F!xkOT`=r-eqy>6!v-i2FGyZNoo)aAksNk;8b+o43ze^M_s!AkoO|>Ka~4&J zI2>iJ`F1AY+bH7 zDGXod6Oh_Gm+&SB-{Gs6TfM&B#RUXME@H*xw zJ`P?rYMfL!YPO@^3fu6Lk%{TgF$#>E?(|>&eGW91-9-E@M8i`0(&K9(mzao11ny8h z$A+ZeuW$;wY_|ag86G7I#!Zcl!XCc3w08mW!lVQhg=)dRLl{pv`RFrUZL_Di)4KsJURr;JnaTH~7mCtfC`$idZ`a}v zb-sp2jj~;+*l5~SAt6+X+^XHexJ7P7bV_A*T&9v-BNQb<5-J-ZF&tB}Gl|@jWRa#^ zLSwT`v2M8}#Cg8$`3uhHob&tm{Hjki^SgX6@B6&Z`#hkmT1lVgC@pIISxaV#x*SwA zuVWE5g zpFe+2T7QY@C=u~5a)-?kh+ zsi|2A@C2RJ&9@!znXlRglN8KBI%dT(h}R>$+>$0aX(o>(1d-K6M7Pd>tc)!!>1YW) zEEDIl3P3Evh;iuSboB@gr4aEXFg)qZ> z3JR(F;Ce)QPLbdlf%6H}>bJvoZ_Z>i6}BNZ{>8;5npk7=PIN{h$2f+4^?7Zr$npy0 z4&sJK$ueMtC4<5J1o#=E!Q-g4@7%2n?%9QGJ)Z zstKA6@OemM0=)$%9(je@!#@x%5@}%k5-U_t9h4OP=SirM0Wpb9%<@}8NR*!OFfqXK z^-7VIW$igRr>D#1#3|*l8Uw5V1Gpb$gT}1LTZaxraMaKYdD~ATmgC6_dGPC*k4$#v zF?=-^+^AP_GG0!#*oRn#y2FDen;m;ht~f?6WxNaN8i0 zf&F+PK{2HR7F-Cu6od#J#e5szlOE`YoVt+=n~bblF41Q50_l1pj@aZH@ZS*`yhE+m~R_5NR0@6vHoC z&K@G{00{dkBD*fnpxWAn*B;*unHxwqVQ|K(;4xfPF!@|O@deu7T?kOC%{G;U;Xa%t zFzXN^6Ud_w`#*Y{Xebv~BEX9S-VH3c)AZ3Bw{YmG_=g@$CUQma;guw89zX_jaq%}` zBaZGDD*A6j0SUjyywg7riFya|FCXwJjZe=}3BHGAjcBc*tvm`Sa|Wq_L`J?HLaVf8 zpqZ$t4lu83YV||aHeOy;)gGKZv~rQ`xiJ_<=xu*JHnwd} zV!l&L&?k(-ROIxUdV0CzBIp&PSd#~&N;#>{ zmC1~tP$_Uf7^b%h1ambAS%ZUcHBed1!{}u1Q_6NypBAoNK=<-!pV&U?$~{4<23AjT?!n?kH#vT_nMnC0|S5k=q5-*Qx7jGG0~Q7d%aOOKKu2on!381x3?Xq zf69H|1*>0nuHC#w_J(pTBVK8A-5%{9no0X1>Ne4_vHeg&c+qqE%B%?GXEDm8><+)- zJBO5{W~`njBz*svlUq`szL*V`8SULOKRbN{TG( zI+PPkm2X?Pdw7^bUa)Uy=zwDU7e^(jsZEVfA2oSs1tU+JWwBU$Veg9=2mVO>zP=pO zOvvo#@OV7<56=jdCut{}lW*-2>}b@}?BV})X4RtbZQ9z|moI-udS}JA6p}xMJD-;U3MMXJ~@XE1fGyVM?5=?tui(gVyQmwOAlDgKd4X%Bb&oxc= z7w3g_Ix!h(Y3r)HJ;%q#U5^|om#DE-$t*41iC6CJ?aeMOc4XW3ZCXXk+rM!dt6$~d zAjhf2j%{n5Z*R*zXb1Dt=H|ramKHnpByMRb2gcHKJLz)EgSV!2S1;il}JAic0Aw^-qRa5yVa{#=d|?07F<_b`(tXbn&66pkH5E2>E|x=8)V(Pcike(yXVFCGlsZ3k#bi7t?O$FyF7&79F>#SoMT) zik0E-;gDGQ#{*qGy|1n@G2N4Kw95uF1tYuDuI^gjZ16g18*M4Kec+f4Gr9g=*~BaJ z63unYhW44i7N0mW*5JhNkd}PYE9ADb!mIu`ruXcYK*#Up+0C5z+Ph^{Lezjko>053 z<7ITy+z2#HgEilVR-oP+H*RTuev_l>O76plL}JYqt5Bx330{pg8w;Q&Z7Jr(t_brb zq8X|(W*d&xKd}%!X7Y-ivCQIJ$>Rng2jWDVO6?bLoJ$2W>J>GLgXiZMT7z5U?;Z~5 z z-twRmVOwPidjl9WmcHx(3=2!k*r}*F~QSs@q!hf>AiB{iNgtk*}4W`Dm`%HgORW>|Uq`fiksosLB(s$5(|*}Eoc>X+h2j}DCZ zb$AqxHX18@I++sm?aRxzzr-+w&1su8d#t~yDGrMFGrJgci;sNys}=0re0y^qtIqQW ztWEe?A72}6n9+2&u#Q3&SRBJy%@u0oH~;=K8G|^)c9S!?I~>@k$S;_UILMlU16u|; s{{E2v>3{k^e8qosGykpYD))UK?6A|WcKZExJ@QCR3@r>eyN{gz7qH!pz5oCK literal 0 HcmV?d00001 diff --git a/1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png b/1.7.10/main/resources/assets/alchemicalwizardry/textures/models/TransCircleBinding.png new file mode 100644 index 0000000000000000000000000000000000000000..cc54eda500788ff9a43e8f2767e2d980b32fda9f GIT binary patch literal 4020 zcmWkx2{hFE7ytgoVC*x=E@muY$WxRl+r-!@Nm;WcQ}*R=Da#BgOFX-hVmw|dd6cr0 zu{E+K5qgm&Ci{}HPR7jNyXV~Vx#w=@-gEA`=X_G_&Y27GOY;K&ge)xx_5eT!CIk>X z2jCX=)b{}RLM)ua0T6!wpF*9%Pkj!Yy#KSbHRYW^AVd#IiH?OX0U&bGl5o}`dUWOS zSWXg7&?MP`!}+7XdD-D*0EG|tGC-c%_xFtu4O8Jp7VDq^pvavvw&Q9!kosKju`U7d z3Q0<0oj2kFh;y+?fb1PPIdhAA9B5^;CjEBhO4nlVzJ$P`O;#r-=J#np)?$*P8lEr3 z7?ornK>;)wq-XuM(m(=`xXoVt%EP{%gjT5w97AIPcMPer_}1*31RldAFt8ggNZ=tW z3Aaw~;D9VZV0p?6eosDVV~2N!!rfpnKv>$>Q;IuL6wKjt_Lq!{7$*QSw+}HLLIb2B zeFK9)fFyZBrcS5y_*>tWw-evC*7Ri(DNv%O)$eyn|BXc2dzU=1w#Hgrh=%DM`T@|* z_(4uw|DxQkP0ByhcaUh16_3Igv~WIshttT1z@SJTbXg|)V^bvI2Mr?sC|CBH!*NZg zab+p97wN2#i=^5w)RyYi{W6*~FIYEGnqj}0s+WqR7CWvufAY>$Y=!Wwgb8L5XrdYh zCIEb_7pm*Ex|T5+WVz)Y3r#xKhJwL8EsagBp48JaoLp;-Q4l)8JqP!mBK=>ImhQ1I z-yAd?0W6L82AdHeH39i~0?}%E0v|gn2caQwnhZYAlON&1_3QW`G|R6B^pG7j| z28{mHnU!+P#0^G>;=EFgrGi*s@;tKvwR}@4ttNjvH---S^%ZJR^a!di&4hqOcwIyN zi&%Z9)bdth>sh&6XDm_tcFIA*(8(Q&OY@6{OsggBzfwU3mx#`M(FgtFAekQx$7nBhD;w^#A|*{H5yv$MWP5a!GerY-%(&Iz#XMF8F!H&dEBt{0C}~kt ztB}t}<`Z$mTB@4kq|rsVq~L3bYgP%K%J`HHQ4s>LSA;!3y@~}FQr9!+do3KQF##?q zVMoVb^rLktglun2hGSsq0;;obi+~UMeLg}~MdXspzPTkbS-|#3f=O^C>+iW_R!Zv; ziK&Pd+hfQ9QDKH6EIW+U2%etm8T%U2Sxow$9k!PrM?j0~K7=itm1QAAxtcr#G|QG*bk-o{ESLdva3;UvA&(H&$IH z;OP-dz$eIj;YKqO<^54)Rti}<>Y>ClY}&!`_{kPxfwMSkxnyoZ`-qVMGZf;N{T+=| zdyYsi_U}Y{$fE3e`t#dqKPZ35_?DM8nQ^L{Gf(q%gx@k9ymUsCEu8AxvR8u9`o?`W zba<9u7y~|K_{V*qh}|T*iK0HwAeHe`XV$9XTC8@1WiD&o&OSt*nC#}>OyRt~UmwQn zJlgnBpcR6LK?SbQR-)A9sON&?3F79I-OHXwKh8nF7JChSsi)yszFSTAZ7P^%y`p?j z*L49$+I&C>Sykrg_6I@STk8@NA%4G8VVS#^yS0{@5+@9%dHC~zPMs~wVTE1v3Vlz# zch+Wf8J#$1dEX14@#$=lbsp%Dj@v>+IiQ}tx*-5VdoSt7u)p0qA8l=i2M<_RJ@hsL zJnM4XA;c!Tl5o*0(OSv>N~s_oz`Lq*maTg8Aeh}<*6@qa@`Sc!O-lC1EP2#Z8EsiS ziZS_&<9HuR0m{JdoNW6e(d-N5NKi2$kCca#-Oqnu$K*o|rBkq0vN+ZC4(?eVG%|A( z2mIWp?Ii>F>S`P}EEpDJu5o%+S2_xP&RG8t&9>N7@K13vC@vG%^FGb$9zvuEwQhe~ zcWcd+GhD1&D6yb%#6K3>R@&&_THm>;%h;xCh~$rX*76tpjE@knbNAA=4K`<-Vm9S` z4X-Qzx$`MjxYFO6%3Y&WH8`8M**>~H8f@>~7~IBoc`j2Ld$>FJ8`$$#|M%r}>mcd~ zkE%fb^_vUF8?kxdV_obX&oA+Wed@>NOjTuaJ9$!-X};#VB}VK$#}2-&BbT~G6e3O} zoBmbR&{@0Zc6?)1jhQ*Zex_&&#K(-@xVU|j{%3J(*nKM_r9;NJ@^#F{xx}=|IA5X4 zY$L1AjlRANdajGg&|f;nmnF2ylxmb7ys_@aA@_#(R8!(Ng5a4x53bxZh^zak+?ET~ zd|TP{$;s@Xo$)a?_CBb|9zM)y8{?!%jx8_bxd}+h? z@9OlMHSp6T6IHK~z4xnvmQ-K3UBzkzQ5^cK3G7$G6#KYltQs+m{8e=) zAk3ify!XIA0f=cg9-r47V#M=H)uitT#rHJqy{5R_PJX7!4{-VD#r!kO6*;c#$-w?k z$+`-Z0#cuzrFwk*?*@Fq&v)8moT}TGQmZ~nlFg~IR9fSh$)s39wmYeVJQMJjQ+Bk^ z%L13V8BI_bxs=h2{oKR%sH4HS`rx&i{aIB8chZ0jcau(P+WkFJvVb)2surKiv=3Vq zS*t-5v@^+ym&X-Hg3W0}{i06kWU8dg&onFc9Z9Zv?s;1URXAxjsu|;6{x<0qi;w4aXntPI&S{%R?2<2v%&4Q{+S7i{_7?I9`n8%HPmfjApQ-&` zzEM?HV<_i-&0qV{4spwXA(NOch`hYeQM@W1E2j8!{H_AseTcP32+T^U8w_7zcfH$J zRoSvXLFK)d0Q=S>7S!fnUy9($mFl!cl08>{YL-so{v3#a7u3Sk&L;A;J}-=IActnx zJXk9ZOpAQ-{Uy>`7XRwF;F5IwHB0>3c|Nj0w8d)S?er+C#EKw{)mlkJGaNQG4||bA z8a9?&$|0YWMgRrR8tRZ0!zmx0Wt0uHkn^J2)lu6-<+iS7uI#RAZw`?r#EVvdDf&1% zx9`;{QRXV(csP%4x!qX9)z?a%>)GPCBe<+#hsTv9{U^)IzXsC-6S+KPJ^iXA)cE?X z5>@?Y%IHbgSRugMz$Tb<$0Dh5ky(anF>Y*^Bs(Qu3$t%pRM!A`P=Aa>Wz{qN5+O$C zRL(Q-`E%s@qVtUi%>4M(p+|OaI3qhIeCQYRR7m?0Y93W0jKQnCRzP91wpYWO7n~1Y zEo!8y)1rRA?9CQ!zhyG$Ja^>9pW%1L?~8GJe%Svd{aLjw#?^AiY?B!9xLM)C<)9cL zCf9wCeTAGq?qXXY^-kGwJi$4YrH)JDdSK`OxGJyc$+QO#|1ln6sn5N9aL=4U_rB$# zpe4ZxSqG)qj&M}nby`|<=JU`gbk^uLXRcybA1t9uY)8CG57Qk@H_%0ogia`MhGz>m zUuSt_tJ^+yLM7@y#5Vv+d#QN-|FDo@4#!F`1lnZ#$=+Cm7fI2BwYN38N$I?rfT12z zaWnh8fm-wUoG62f@*zVRmK9fwqgU)?_7u*F#hUJszTaI6Aib-nR|t|>*hfxBfz&OF zTk%~b8R~ttn4#QjYcRACy}#>D-9x(z2omcEJ((qSday}G*_h#W8UhO8l$%*<4+U`H zF!F@a8Qq7*GX%@>`eZLyS9QT&-#v>Sg%H!tf%jSvy~QNHdM}_@X@fPP4kHx_HF#|8 z5D++w#8|bxxbELP7sJ7%Mf@9<1fGp(WM4o(e1(-i^8Ur+__Nev4@^{#oW^=yQ*ac@ z{!m6h@JR*z%+a%0*I`QZ@|TJ_T~Bc+Wtw*Q{DmAzu3v~G;x9F+Wm63on@g+p&rbQ( ztzD(m)ZM-iNRonnJ&>vKtDn#yDr2+NPB8OVU3(y(!%&yU7^AYJSi=z(oyqIe$Ix@< zWqe)S%3q3S9tWAD-GgyYD-EgfD{nbQjj0iDzlJDw-Zsa?=ShX5xOJ>lT4TQO@yk6k z%xDPIqyM1*tlC&dc`n4Lb(kDixNkGiWArEQ`H@N!@vI&wOSMrJKYRP4;_QN12ntj) z)W(doa^+nEtu zhC+facipv9(p==X%ny5xfPYSE%?na}?zJGj9?2mvD_Kv>yZfQFGDscHh9GiY8UI0P79wuiZ=G*C#`s0@TYegF~>+S20C zs2GIyvXC78j}a)SeC}E`Dm*uvu#0FtJV?+hiKoXa$_-qKaP)?g=?~4O5yoI01#+sw zOA2<%qSLf!=D?yk*(dG<%FGmwHiVIpO-c*voZ@)lX+5OYx74MI{5d*#cj)kcyT%g*mZFusS_1(hqn6P=(a&yp= z)^=qu9l7)(S#FhNpR+5bd@@U!~3&3X9c zf`gpSGXx>NeD*&clK2h{e|g?XURmb+B+&(G67KGo^5O7T^p+ahPEz)^wx)JY@J9rZ zdTNSuGBv@tS~^)^?#nBynsAuH1u=-cw4{dH&n0hn{TQtur`|hD7Y-XPez}f$iJ1=8 zD|D_>)w^Gq{JyYaJKJh3!P1wMC%L4s!b*4`KaxkYP&56<`#e@mb->pQj3)*sk72(s z8e@KZthTJE=PFrf-;k;zCZ94V<|;Z@v-{3-3b969MJB0>Ln?N@7q%d&2Q67%Nei$Uog^^;eSU(Yc_3eik54nwX|5q8hsn@h>JHa zoB0eE8xE^e{{5$Y9$%z}_13NR*iMrhZXyQJohDB+SQp-RnndFx58669tT9B!3yX`( zf*f06s6`IBam{#`b>Ffn3O>zoYbRRsCoZ|_ygPLnZ!P=d+RfO8yg$1 zot>ReFEcPSpgSD%hpa?5ep(mXk`fUK`eD9sX=x2FY8G7S?(CGGs(EIkVCxa$XKiUYkAfG)jrh$}lOqVhxn`Qgob<0>zs^IBV8fpfI($Q-s4oTu zbd)YphGyI&I48*t2d`PMy_uJnr;i}dcpjUZn^)A<9`c;MnTW73VkV;N?;%u}u3fu! zzj)Xhi;5{SY&7_2)=hf_k%&!75^ntT$-_fSODixYCWi7T&vB;Jczr(eew0|_v$^j< zyvkB^9d`%QqAs1952Ymu*vBa+@!JZuU>QUhdd7!_oM{6vv>oezWi!{=TCnd_S(oVe ztOje6dNj1OinA>boNR1t?jne&<8-Tj?L?%Lt7|+n3rpkR*jVkeqrG+U3pKe9k`vD( zYdhQ9+r1XNNhm`6-+%uG?QU8EO`sWvj$3S~kz>czEt6#B9SV+iA`ugk2y1JuQMb7%H2KUB>2A_y-vs#Dc zpB1woKYr{(5TmLwy^bhGLjz4se&PMY~=WG*O%hT zmH*zod*>x8B61xaEKd<4y?G(PBHdEA%TZqdNlVVi;}2|3!$Y=cBV;pWGfQe}YDTr= zvdI`kzHAqdAMI~mLkFv6t9KHUlFqKXiEstuIPRtQ;>)Osqgv{8;4$O2k@>f`T;km*^PZH5Yw}OCii=mdDP=f??%v&(BIi{q z9tn079KA5*tR;XupVy5q4{UF<_COrDy(AX z9m}~`SXcykd7bv*-(0eCbGx9rMyWu$zAPwMltv^(B4_9bB(;Qvg`-%QnfZmk9G@ci zUPtR4(>2fLIIhc6P!SRM%Vw&j4O#Vk#wxvL8g)21+CTXAP3h_J!S-H;OqeDuD)`Cz z`g(-GArw^OENym!uDMP8Le0hem6a9!(|8G_vA2&u(konhn@e-+?Rhl><;)9_kwrN~&YXklU#a=%k@Blf z6P`lN0^$IS7VXumQA$bth072A(u;Wsva+);RlpPQ?MV^UJ7FEuRacK@i&e;dT=VoV zXBagn|J1EzXcXR0o;)#kpo?#v+dO0q6{4V|bo$Xuq;d&=Ysck|YQE58h&D$#IXRui zsz2Am+NLRJXlnjLkVr=H2ZF-FFP_m+8<%Jk`1tq~!|lUw<@_Za4r*5$x^&9SB6bYA z;3$fJF1r-NjWvqBuauRQoz~IOVcc-5%Xszb)y(d}creM;ceCGE9gf39OPJau2_xabGJ^`(@anMg9J3HIjk*+u-B;>Bk=Jf8AFXJUf#zwk; zG*zMiQhE`$H6vNsc5iDHe!FqjcYM}A&O^+~-oH;hvG}akb(L!8)VHe2&9}U=vO!Kw zqxID_sgtQdCv8p5IB3U~DWf(Iu3QXyOhQ63rIf&({k0is&Yq~?Hhm_AwdvyFjq77=yg?< z>!>I;($mZ9=x1bPqrMoN=qE4aZ&V|ONSzUluHLn?Bqk>Ad;9in*2(a@D##FwpJljr+s zdvTcfA~CUdSy@>JTkKc-i$T{7v(@Vb(c!*3OQUap{`?u`vNAq@S9_U*on5Kg=lFmH zq9yQYs8VL%H+vhKBQ1OT)x;oTY6ZGCI|La81=e-?9EOf-znb?>hU@F<2;w;&dpzcd zS2_Bxtd*aS&wKRe&rdg@09aucb5vQm|2*9n4&>A8`ny4omfSVrQxyF#-3@85{F zmR40^U7gpTfd?v$`I`t_D718Jxo33QrAGR?B^x{YQRlnb%*+-j6e+Tq7sNexYyhb9 z^7H3}NM{V=&_x@&yFGG>iUkbc4w8kOt;l55zR&ffs-XYXL92VlpF~0i&`9L1t#-8o zE;BxUScpKfh@7BAKV7x%&nvtXa=4W2-Me?|N8yJNFKsP?uo6hRpo5jk2`qKumS;Bi z9bIZC=sO%QNRk^+h5fDF+uOTene&J(wkL*(hMJ0MN37bBV-E)ai*$XYlI!^5Ys9W#$na4$mSH1CHNhCgT)be(0K^dm zwP5|3V((>Iu+U%(k$-y-bT5U6;2m`A+O@2NV5SKl}NPxc-9qFhK_x2>} z>+2V63<(id0C+`;^I>`uvmxZs;o*TXl9CFoH?b;C3G;J@&J1a){Ii- zuUT15Mt=T$|C?J60aiSDKV(G$)&F}~XsFd_qpvT(x*0=mG>Ts81?j|A_1Iv4{{}-a z&I3Z#S5!%?ySsZ)jnZ~^clWes#_l1sRcq!LOKo@e{gbV&tPXD3LB9vJ0C*uvtU3{ilK=mn+Z*x0{})YQ8k_wRRncbsYG6G{6Pa}jxa&@C`^RB?*h6HFhn ziif)Sz({9j5rU70MJ2^4Dm>ilb;pcyjwP+E+E%D;VNvhAQ@47)#@N`HVwVZ`TO1ld z7G6AH*ZjC3|H^{T=S377+NHp1mX0#ilHGhtbe0lclSs03hWFjKt-(|@ofj&rc%9fAl z#GD=;6#jv)VB`$4*T>V^y?Vl!)Gd2#`jPZO1RkBYn^ZCCObAb6jo5DwmVa zze`Vxi;GJjkYtCi%6|XeY9{6*J1sArunYT78~)Wt1w)2Qll8(D7+wxhQBnKK%1Q=t z-;<-yEG6C0#vWQ(TZ?;ab_;}fdYer(cu&U0#$HuP5xKi`VW_px-r8DNO-=2!kc88v z9QFJYDYd}|g_>8_G$?#=I9%F;T;V3{w^Tf2L}J#qYAl{L_N#u-z4fJ-5f}Jn4&K(y z-D`Ud1?u^eUKC^fLqin}+1YfXJV&8%tA`m%KkzjyZZM0xeo`u_eLwAS9JocW*=R>Wd>IJ-{RufhaoEg z@euDc^?Xe}e*Tknj!vT*{S$$pdt9sX1-^E6c5nd7@stFwE5x4hVexi}Ya+8FKI&c7R@ zsFo&}-(IAYAFwbn)wRy7ziDo6J|rxAcUFeU36d#@2pWZbjs(|}%>CZHc>`asy|XfL z*kTkP`{s=XNsB{+9FxLTai62he|Me!evK7^2LHNet_KgnG}gg*`hcbd8zPjvf^`dU zQNTmeva*<7;@&zYCnuk8x*>Sq3%&-;IjS_ z!k}18=bvYQJifs6l&@Lv=%dH>!fHzErwum|&cvL)u6RyY(XUU%PmiAAcQ^ug4?be1 z!Q8%0+>HI!VpSpb^w2Syi4Tjq>{9#qfQe#g<8Rj(7pef_-aW{4^cGRTyRYBB`&@r= zv(to|g+THfJScJZFgHpbYZn*(Cl$J$T&PXDZ%+x8A3j|fzsq~~uFlV~F<}eMaHy=P zjh&syXU@*s0XQ^wf)c&0t!=DOawJrdn{cL7&_OG&5%v4JGywp3o54!y$7uW1$K&eO z;lyde$*}!N2NugYaDE!}1_^4a~P=wSG7UV|+*vrzN4Pg!_v z(1Ytl0Vk#tcOwJuP!UT;Gr4T)o{}Mm1o_s$>eb=92p%%=iqCf+g=+CfkRJmB1NlWo zc7&4T7f>y3z!vqr%&>4y%30Rmc=_jRGup6FQ&FCYqSHPa51`{+qJZj?=e(+Jhs#xu zhYR(p!e^@G5#)AP=`uM%A4Q0X7j&T{!AJoIIu^iOVwwf9J*DDR6_>->{&5y>$2^og z)x)C70BlpemNPm3%ePR#UTo^L_EfZNbjcs5&D!C31NaY=jM`=8fe9vgml&peD3wvB zqjb?skUKEnvV=%aKgYbhifXa*s5i(PvhtLV{_t_s#+jU8dy*aCiY5~UP4c^UHsY6k z(1c%1#HS=0baGD`6BtjCI8!`S3ta$)Js7v7tT>niXzV|D-$Vi5Qh6==NeLuv$O#_f zbarTE)HuiqBDS1&m4Q|1^xPRWKXrzbob;zN7fTiY$2CY8foEl9g$}?Rj89Dbho7(t z6~-Gt;;9xo*xjT4WEEx!b^{okt{{klq9PZ3mjYWX$1_*gxg@2WWGE)X3`0+G!$prd zfZlv^lR}<50OLa->7>gZ*HioH6WfrLvmOlg_KuDv&YQE{OnVh#^qpV6G<8JM-*y0o zY<+7BMNUM}(q`<)ieTR6SbjDxp@iBqK4jzNH}zQziwcvA7I_;Jv$@PEg1Z4PqzEsh zQ(`~W5JkAT3S{=u?0SF#% zzJF9;XDO5vAHS>r^yvmeJzf0PR4x`bV&6!m6T@1{EAR zIH=(b#bW1&p8fv8{(iOu`I}a3I1>DO1CZ^Fvy9i+U+B+P>;(98iXpn!4`!$HnMhmR8wKDAYlXI<&8Ajf8ZU;E3nEbTO#sov^E&nuo`Mlyv|U zi*^jr#x6`*LoF}J8VmKBAU20tLla2=FjkF;Gkzc)uXVLwd&~92pj?|hoj{Ves;cS~ z3yHEY(-D;kXy`Q{$V~a@@L=4?e;tl76L!N1-LrO-GQyUL{1z4B2fwme*+u|EJ)fyY z1>;l#Fz?6-{8>X6aOj**KzB~(C@1{^WH}BI^aQ%Txh^}EI75_{JAhGqvc;e4r1qyO zK!Krye_sPyTS`Miqj|X>C~cL$>u#&SRdS|sn<{J~bs9%6P&B0~9P!0;0(Sa;jr#tj zB@%11$6b6aw-u_vwtXHE+0p9>ZNjJfR6~Cc zn)!fCF12p=k3MwpEeHui7C@>_P}O{c?v;e&-oC~{4t4NB*xu~J4pb#|sd-EBOb2*-R0;xYgJCj!l7 z>}_CR;ACR*hZxTCR1Zb~NdR_!b{WfKRXt-sS+i1xl0l7}t*NfgLXe9qACH75WQxUvYB_Nx?BM8lhFkG108$vYia2S zQpAUzp57BOS&Q($|7_)8I!}Tq8Y_G$&dp6>uJc2RBi?Y;HDRpWGUo2JYw3K<%(HuE zqm&^G2k#-eZV&~u=454gjSmiPRX)faIM~~(v*%7|@W;8mQ^-EB0XT<0yU)SJ)t7)F zN*i9hDkLln2~6kt=gXzxvFx62-^v~7hM&*4tx5D|OJLlBac`#&*AtIhxtidvY+)gRp`XuZh!z$W5@)H;Ukt_- zd3t&l-{#=3vjH%+w!M9fuRMTZVVU~{@`CtPVHcaTM0vb@pjT;g!NJk-+KQR+tCW-? z#=B4dti#z?u*F*O1mnI#1~NiOavtu@M1_g(|A~R_qI;QwViGv?cYGM@Cqw}>!FUke zHm}2GtI~u`+6PfIl1d zUg_Qx2Aw29Y1X@z7eMa?Ciw?g+6Wy4k!6eZIESEsfUm^EoK)~CN2Rk`*}J*z#h=Z| zLb%V*l__QR*(gK1ptvL zt<!bTUHIdey{o|qFmd(yZWdwTq;%E=wx|w8yece9 zWO#ThknDysYFkfLRaGw`2+SPeIGxIaoWw0j$>={Gft}<<>iJ?}z?0=_7Vv<|VI!8B z3ddVITQiqZa1Qb7?NvRaS)7XZfq*sVPGGPIg?XTC8OVcFphaIZ)tr$N!1%d;0LVvN zs3}~RlVf(=Qoav}jGkAy3fM^%xK7oS&mj_;L4WJkt>P)RE8_?ochyoiXIu_%*5ErN5i|rf>?~Z-rfpR;8T2--?{^0`QYNWsFSbuzo#+ z_&lw?=BrdXYO~H3yYQ!FFnOkW8{jtYW=(?c*PfnSC^F2o6JlAw%POj>_U;}J7^7t~ zSZSXYyDMg^heSp7c(1-Wonbtc6G-Y_VT*ll{O8MSU!DY|)5@`B`NxkRFFsUPr`6Td z6Hm7k`Uqo*e*%VwCx$mc={{6)Elo|TnB-(-h=OI8T2V;8W2;~qF5}iNbnxS={5B)_ z_Y?c(ono-4q%OztVJJ;rgB*9xQ#1PPrAKv}jg5|s>=gqQ<00CrZW4Ph{R^C|;dSzzH5~ikq zzXMsa%a}t3^Vg|eg>GYw)4cjQ;H-FgziF^i=CV_DQ6N63?JUiLVc@R=K>lhIlQxX9 zx3FNfu(0^z_Qq*n?)V%~CqNOVDl=amgL~3ZSMSHKxovM{b#Q|~GKQR>Gm}-}+uY_u zqJWW~qoX=Efnw%C@pO!i?uScX@AT^Z1R37=q(u9(+4pz*xwEroDeC!N(9tVorKQI^ zm#?dQ;oEA4Uh#A2# zFnaC(jn8}WqC+S_N%Qx@!a-Wml`{xc4`tI49ef3i3ce1LoG3fHjZkPt8&QDUcyE9$ zM1}aKpLe|+hCFND=~LOIOP5l`6cW9%*6}bzR{IBw#o|UfnsbYbhxzLH`fpypcAR4S z3gLQ`oHI|6ptMtzn>%OxTJBFv=@J_!XR+@yIsq8LeYdf#Q@}v@;oeHbbZ%7v>AVI- z=@cZlSl4SlpuMS5+Q!N;JzFhd2MMXqovFP_4w;cCWV+{GS&9yX1;R`5xwloWAZs8p)@rGFd+XHWCAku^L{% z0tTSRzewkB;s^h3%mZeL2JXXLf}9tx!*PFqb54A1ef`oCG$Dp)0ccQ-357YIV&KYY zuEi>7sZv%5K-UVmmp+1$R8=uD`X$OWn8;`S97ZSKRMXK6PQW|cPmioF8UfOOJx>g#I3DML3-d^lw$yeqO+-sxLZDEYeDO^X#yHmn4 z($eG*4oWgIL1W`J&&q%#2PUX!$SMjVH+p^`cX!;5uF7_dSy@SmZWf*&kY!3&hzLxf z$Qwp6il5A$kiLnDxj_t!2ypiYFuUJQQ2-Z)--i$EsgS33GHSeUaBqRPqqXJNyAsu5 zy|l2v{gATluCVYXI(VHrtnD>90m+PDqy%|Zb!}~J5awmbl`B_#l~hz1Up=@;MD#0J z)YIh#^2-C5D*jl7ZBpfd20$D%zr;ubhlhql!!Tc#KzBLu?u@=!=&F6L8-xK)fDr6; zG5KHO4SnW$O~1Y&fo^BW%rccUzy5;J=ilaMV$M2FsxVGBpv49zChC9K@O%D8NLWOZ zxBjqTs2GUfhnku@t6WdoMWmwt5TIJHai+1T7G7@D04eg(f$lznh{#-5!*rEiL$$2A zi!hjD(UkuF{*9dM>~El5omZpe3&#+-5=ef$N*Yrf6dc?@OxP#iG-HN{aB!^Lj#Y@g zLlxG|onXV1+QS%{k#{}-BNAr{D(W(SQeo6gwQOick(0CYBc_`-odHMzcQ^&4He8wP zWyxdslR6?14rKQyz|5AEGIuPjtaQcgC+iL;BcTv}H$ex(sI>o`{>RqLp4W-zc~Uw# zJwV{LL+Rk30MU6puc@g?VD-hNVuSibCSb5Dwb@TapUo;Qhtu$g{TAdnjsID2zPT^+ zz7z;q;{TSHC#a~YUGe-F3vn|uGc7^)eq(`KKp|^>n3qO6aRBr^(7}IEEgF?oRl~;U z*_FS4w?q0YL|Q;$C4c_I2wPstuJ;6srf{Uog=Z0XTG|}o-&gh#qf z+wa#%2}HEu_ujp|d9Po;b^~s04p@sYdkcNB<)tP4b*#5Dl$v!ITRhKFQgzPxDlM&8 zJ#a26oG+n+68xQ;>v>%7Q31?1C^fB%!^LFp2WC2GZ$|gbb$rI^<1>67RW~r0Gzi8q z0eSU|fj0{3%z3@SALKA)RORKd{xmLm4yuz^z2l5*CKx<$lXdPh&z?SA8M7_{3{yo; z;0#P8%dzIJPTWmf{-pZSjUQbH0#jZwO;{WL4#$rEfq@FL{>sEe+S1};&MvdEh_QOl zs#^8@Z~SOfCm1MPJ)2hU0q0~Ot+w?U#AwE^>M=9bY{1kF;PYQZUcQ!NihvMa#zzoJ znJWa6ZX&U$SMX?>uyjWJNsM17pUn4Xd%M&g!$7nNIO5k9#(nSbum`kgFfKnNr5Pw6t{X=;$cHxa6&Zl2YBI%H|LW z^2^-RbUjsw@YlNA11zdbNJxl52y;(bx|QslzeJTqU&bMS^;m^Bmkz)#%=x6o&c z#2s5}>#l`VvxUKYbC^_mUNPPMP+7Ti3NA%8l|nX%6*M%A zjK0QWm9_zJG;UX@sXJb_O;f_a2f9&miVz{_0x5JIYM}If!ut{luRLj9HTLj9vd|R| zaWZBmrZXm^0~}WL3=Ai9!8m1b6=@!GPb`g=T>(z;>V<$j2$~>x6GxdfHSV1tzpt_} zLN{aw9;+789`Bzk(FGZ`&nDc?U~A%O!aq_X)rN8iMh29anAq;0hZXhpqIdW?Tw*0K z2zY`#??*Az+kP^KscJhls zKXEO=Bri87PmkurW$8K`0mtM6Jkrw8_@D^V-3&BOVTP!90PR%sPC}e8Kb;J6`2iJh zUrnP7juG$f8aW)38avf+M|(R*Lyt#z0OsHLk3zj5REu=M(86U`1x7kLudKARUr{h( zuI<&mxpYJJC>NB0`qhTRl}hf<&o5l2Rij)64L<}_QS$oD@4^j0Hmbb=di@c2*0OLh zB6dPspr9|lnw&H^ot~bq^)Nn}6F;4YSw_56x9}Fxb1z2FJX6EN!}Z$cjnToK=aDS1 z3#yY7JgTm#iKrd+`P$u0lFrJeli9a~kN*eb3Un4IJ-SgiZHVB|QJa%lFa#xKW@d^5 zN+^UkG7^FL@}NX}=>Tq6m30e{t>`QF6j9HetMvwqx;i@UDtL6HjABc;ve9#(kcPql zVXPBp3dP;?nBfnp9wfl)A^Sp~2@77IV4Sw9y81N8+zUfMyc65;OvFo&Q;zrd_fyl- zvNZq}e>-8f3%X$iq`B=+-pQ->bzZa0V3O2Qi_c6zkg?Im_vURJgl zwo4JxJ~br{#dp_cyjtxh<;9M3$orKJJR6{|FVoX|_XFvdtyyr$BBOQ*Y!4^aGBRz- z#44>*Q&aQ73dNEIL(oyyv<$toe^~IY5C!~8@!lC-0C!$1OYeOcDyqlF$EopnqUtf?m9s zdKBvp9+48Nu$z03X80?0)WN^0C}n(0NjZS0e;FC+;`r>@?UjH3J`x3eW=PCQPUR<* zzz{tJxd4BK*A*C)sZw^ucS6n!MOJDIQPlPox_|BK)(OKejgS{=dd}m8nHoQN(sPEn znjMcQgK;y^nLx*gdH0TeqS|o=Os5nT9)%1@Q(SE9ym@z`vkyeK`^6yR$)6S0)F=`L zt2l-1izV9nV&DOJd?pBnTxK~@*efU~ND}niSpuqoWPW~LXLW9_>ez?v{qSO!5t<<- zA;D5oO=Es(iSAid39w*~L9Of&`4YJ|VN^CMbdBg~=hv_I0Ha@Hdt<;xf6{; ziz*LH=Z4~Ob8|Z&elK(8C;h)4PPk6-C3eqB@hbO>LP8}wO@O@U52Cih_1A6^bWG|6 zLu8^&>FMb#plCPrE^e#(_?&b>qfjLzASnMWX!mt8)q8_lF?vpw(%azr>o<{Tt_+v< zaGDAj_?;1ioPvVl?W(?VQSbqwee}6YdI6G2i9z`CEqpqDO0=k|$>Uy&~me;`-JVXg>EvdM-c$?y9L_N-3Iifa9Rc>XfvC(Ph z{i6rhUt7F|VSEfUC*!KIQ2-0Hfz7>jX5ERLx!}#k0SEGg`i`zs(Wg%b|Iu~aFJspe zb^6!4d~8N=0Wrepi*RF6)`uqVxO^Ik3kO_wBoyhMq2>w@C2&;AcTul6uodTKJrcFKYS44*5Oi^IMee( z+pEBN?Sd`EF0ZI4h3?9g*i+&=Z$_*tqT%3`;IThbQBiSqadDvt%@FJ=-3B)DCz!cU zwxz%<*#cdc0y@?O%f$A(kuyrnmls!8?IH8a!K&Am2!)`wq$>Si?j7zSFyG(@|CT@p z#{eRW%*x6-%9{Sx*?HGMUti=ml)td&_i%MFF$1wHD|Tu?0PR5xR!skmH{AII`1}z^ z{8hpXkWRxiG33>h)YLJ+@V)^?qu9(3Y+f>yGD9zdgHss4aS6GtVXD9}ug)Bk3{Kgi z)!d8+Vd3GtUh8et{~5y1Y+!9Bk=>69!UND`Q#IBMQ06=z?ey*9y8ax^f=w*S69;4N zoa^$>?Sb$>%u7EE(GA28vTg=G-@DFYzZubj+;p0f1zq z2w_6CRIlxOg=esin3atZ1@uahn?NBi10FpAgs3z?0APFEwo*{|s$#})MkMxtg8+iq zrJ$^=v$InMY;lKy%|`!-QK+L?LdU%#gL)w@3`U~l>EEx1j?am~Mc53f$zI)tqbSiH zmx|6ZeEO980`f7bdp33XF%UG~;ReNImNqtCz8@`dfC+bidBRUUZPcV08X6i{TwF}= z?d=^uYi35+G^ljF4_gr9613la%8O3$<)dI0raS)qf>EpyL@oP+eEfYd+kqBvCa|Vv zunO_;44gw)Kb4Ti2L}b+B@ViGOL^dVvyl-PJxg+Of=N)Q@&zZMgN31jtq(e7A3!^9 zYH7hA93I|0ckY}tQNUhE+cXZQplB#t?|sgt7LVGj)IENz6IWPAGY&N0Y)|Uc$#T^c zX_Yqn`pug+xkEFYpkPrI3|$0VN7sT)(PpQTB>zJw`RX#Nr3j0v1uBb6d0_l-wb4F< z^}SZXkc$*KlRY$M?Goc421)WH5N6HH%>&og9Ny;4pPXZ!{qtw*dH}}!jM{F?MBj+% zd~W#3Ngmc+4tG}#(+1|*L4-U^5RFq66znTvAjT&rz+2k6f7t;GH@{Ikb-dz<4yIlm ztKwYEjyE_Mngo@-(W4fuys-P>dPPv{!(M`AJq^-Jj9A=aV+*|@zhSN@0{k2MYdO1u z17}Ca-el6cmxpxZZ}`UDhNZ=_5Hh< zfX#?e5YDaXV7l1%xFEI9g17tK-Lic+W!D4&djn2DNN#n4i8(l=>CSQlD6qc;SG3yg z^Yinw5x@Q<+6<`I>wrQ0U%WV<_u&J9RYhXGa&Ls;@0loZQji%K<`x#LzJL9C4#pmK z`RJV_E0s9YIdnvOAX$O!C&ri3*MZ5gi+hlJdvj+;EG{*5HC>f84|>K=@ZOXC79<6h zIE8@_{4!5K0&N0FoDM>ocr-T*=Q}_v);-kFpcDX6)|0rFdc^pMh?7q0W6tD`A6fni^c#0xlt`!=lq)@Oh<2ma^vOe>-!Ric7h8|awmLK zF4T-sA;JG*!kr|6F(TY3^b~-KZD4C}&q+o~YH$w8^TTQP%&fl*4@bSru`C2~l{N5o zX;zjrG2%xQkOrP9_iK0Wy5j*6c5h(obx{!qD7Q2($QV;3)HLpNI1-^+Uh^u)fLmw{ z=G|X{c8|b9MJONbPZ-$TVOK>B-`~%#x&RL8Uoc$J=BT7b4)8`eySgTwjmJwao~4=v z$J1(^=5SPI-_QWk9s&&%ci}QK?>XcZ01PQ`YJCI>)ho{Q3KrEt2K=ciZ*Y|9jSrcb zfxNU4&(-t)fL%r9onQ&PUM)x%V#A}O`4Io0$$datK57z3dJ$%X1EBVUhd$T!^=n)` zkOG{IYoCd4ogNG~p2Q?2)w+y)#MQuLwhg9Fk6psc9D%sEKpT=SkCx3vfEsZEe%iw) z(1U?{CISn-E?aDYj`}|!JWg$mjTfE5d5QsK+Wi(gU?*j&0>70U(?gZmxu^9GyyN#G#8(fz+r2-2>~y51rGb&+8t}>MA3l6ohJ_tL z_YITI&?~p|dJGL@Md)mwK!!i~)Y8;~~Ew zK%anH@N8+S0U!Y*Kx?nijJIH18cC%k9I5vdkW!-rkKGM2ljHWQ_9jozvS;f>{9UD@ zpa9}A$ydH4ICr9FU++A{Wx2We>@rYptR|q7E=11c0k@cIexV%Ri*SddEUHDH!Fd$E+NEr?j!~ws1Uffq%bG*BdOl9) z2bAo96~0us-MhOxI}Mj9DG$tpaZdaD`-@OTcX!CN&Vo)hhqm6UXKVq}E%jB-x{a*_!cs9acoN}I4FOTPPTwjCB9 z_QCt>g=wn>XiC{tN)MBl2iU-<(j?#{f>ysUl#IUfS5SQHk7Squk;I*k%-=%3+i!opWu+uPZ))h)S^ zv?IG7!!y(%eO;#+i-NTrFH8Bjg&0d5&rstUozetPm&#r`4}mEdxse#0we>Hl|~y8*rpA4nSiE z_&!{Dd3ZKc9_I+&z1s#685$*iqAeY5g6b;uAq@P@3D7gAgNsT%e=q{`QX*YdkUk(S z8qS3V{6bb0KT`k;h{c(TVu<=l;Xaq8fsI&wjvG03j5RbcXy`C2gS&|GSS+mavgIFh zN3~=?f3-hUNAp=xHi8@4nXZGngxzyCLSWKOl#Oj+DH-kkv)q!RLRS=4rV32q_dzfw zkO0u~Mvxt7D?JKK6#lR)U^7~JlM+ExDTg{uN?#vu>?O!D!?KEnnp)pg_O28l*~$!k z_Wv$}cS7;3=neEYfwVhDAc+S4F3nQ6d2UmbQEMNzw2FUk?$@a2^Nx3Puw(-x z&L*QK0y^96&3SOBQ2?;&@!B5J@+CmrU})(E%|y7gtZbFmWB#m#U84x8PQoQUcqfPx z^w`RyLJ+W7!Z325}!R&>O}tATLoD zFCM6-t9}?SGw-qe`xf;3K5~Nj)2&=_K6iKb2y+_EV)cBNKs?kn&qhBCt6xT5BG|Hr zT01&Yp*nYxl98RppZTpVc;jh;L5mjZHi|v1j+00$E-rqIA$Kz~F<5QGYC1liko zus zGc@m1dx=1PyusUZ37Vw}7~;{eg(?S(B#uAH5sabFK$WQn@^kD*&x_;7C9bOmT9h*8 zuw>|Zdzcei(e-?dP)_hEGy#vEtz1zC+Bsf1GF1ZMw={};rxISA|2uYGNS=rbOf@%^W2q&+PNPvY<8F*!p zmotLI2nH%v`7cW;5N@u=cbz^4r}Kg1j~n0%8n)mSK2z+WHz{Oqtb&4KFKW|38(~%m zmYpz(&T1-Hqx2$YM1U`wKA(3^01m;MDB!Kn-tQOHAS#%IW{AKvRJOA^CEf#M6wobf zhmJhJyV4ONa!~8tKsVEY?WYh!qA&g+Hj<$-EC~+;h5d5ot?#9;B|s}a6+S(eAhmcX4@p5xNC6!U*EAcO>ib#?n zCy*W}--E%b9S>=Y_SgKN-IuA#T8f7h$HvDSMnpw5x-@PJKK=7$9#mQB`_j_vvTEhp z06t+X!_R-~s(!d6E#Q|Bj8zzT>0h_YC%R0ZZ3te?LZ1 z9PBQ7gthgzItn(2&HkSkfbJU>1%mI34Dm>k01SjA=oECQ7C%#+mpPViexuP+*tiT< zX(ozMi$q!NxF8%l5{M%OhnXWAUr$$b@Lhii30O~=GD3kb8Jw)70cmJ|3CzQMje?68 zFD?KMs!7S2Zvp+UVibr3s#R+ z26)49=q@ZuDVoU&77>9xkR2$`G4$OTo^?1rom%pYGsOktj3{Mj#8OrIc_T7d6`r7H zyGv~VEWZ=58q7NY3!=g7@-qFGnf2?Abi2VgL4BY|?ocVpLbo4#co!d*9(G`T(aK*U zjefVkTD&~IJO)8}eRUi*T~DpYs_a3u;2ZS4!17uSgCK9g{jtcatO(#*tY#=lo|W=k zG?RaBE(?&o?C_9fGyBebevgB3a)2amg7Q$@lgPIS^yXQC)~N?w;BS2;OuJS>kuxN& z*TFtg%{3DO(mfgCphviOw&>KbKbz!hZ)xeyhr#?Z+#P5%H8s6JAo={~@=kJB+#O=@ zFbz1+oiZSPgSQt?uSo}iLh!2F3?G`cafIKcsyK&`g{c0#pHPvLVQ~2%gLJAUiPmW6VNlSkb}ta?yi+ zxiny_Sgk0pbgC*Z&mxodf&QI+2t`=@7CSqgPjS!Lw&iGV@7m;9-vGs;796nfxcwkI zU4?`+QYRLbYCyM^2hPeII>3cp?n8h|f1# zl#~=dp*?G>nyBD1< zj0-T=DD-r9d#8id;zpF5uyKG3c<4>C(mMc9yPtqZc41zld^F* zlj{>+V$@POC64?4&U{v+=NnHMPY;jB))j`R-P`O&_|W9$vezW zr3en9@wnt^}vV7=>@>j1hfMxDwpsFxmrX70lR?pufQ;P8j_Ls!l2l9?!h)MA72{{ zif}78)#qT<$b>Si4WCJVXJh|JlHTf!%=m1C1@DRTWkRmcv+zj^!gqy)iVA>3_`U9? zNKSAInAcc?34fvgB*`0GS0@t!-_r9Shz2YhyneB6d;R+L*$mdukJ{{DlMDwi$iN(v zZwy7M5v(P$(0ySUGq2n1vJv{n+PAAs(DW;KX$!k8cwKbZsdl0DzB*sH3Fo1S4u;*H z1T1JdW04<0jya=n&EbO@1Y|KF+O%;{${fS6s0nOa@4&!jV4npF$U{A+0*^Ne*^T-f zWXqtqI>SdG1k&DwHJK043&{e~Bn=~178cmRJ>Km4v~$qPIZ~g4vC?kh6Ccz^A85mj zH;6LWZr$47Z-4r*XSGOq<0!hL%focDm7X?x9 zZ>?zm?ZF|9AxK1ut>qsfpAhc zvk7+s5iB2SuqnHvx4)W{N}+>;z>IQwOJNI41ZHZKGO$%}Wy0)tLhiu4kE4qVsn_m= z>$7s*JDP@ur*}d#&c!NJ_`sG$`jpqEvXinhNh93unbDzQcU}041USP*A8)~CB!y5i zN42FS{bt{N#=>g=hp@QM=YileJ#zuvHdCfYqrU*t&R+fKF)-L;1;dNSFm_4Vmm~|H zgDqLG*==JRg5Z-MXo7JHg_>dTDKQG!{m;M`-3zPrDX^?D3R?q*HzH@KhypZ)1O>mr z4)_(RbWfG%cudU9iLf{iFzE7y0M?sC#?wYIy%QmTQg}h?ZEyLL6iO?I2{ z*p!Wy?{0*5nk=Xm3=LneX;#m7;)v?dgIyDjXEozPEDzqj%p9245sZ|2d!+z?^~f{f zUDM`(|J21&rzpTWk*gyB?T*G)>a5(pRSnhD}a))p>-G?6H~CdwFGtvUs*Lu7Y7G&_?Uv*(4&0eQ3px!x`9=piMn&>g4wy=9 zjZ60Uz_@wpkNI~UK6eL5>vo{^#<^Zd*x9Y%MKdJ;$`28+QL2ML9AWg{>Pv6_;#5^T z2r#Oc2OaJY9B3!FfWClRvkX!gv>ns3fPjD;EE;7V&BO^C&T~M@>479-k+-!H!sSP8 z=v9I*Nj{XPmYD;?LJM=ut!d37Vgzw=abZ4l@56`kaP(kqJ zfSKwvXof{B*QhxSZ2qUQ>u{&C|NloFQHhhpu}>0`%t9GuWh5gb$xcSesAN+|NJ6Mb zk`WmtD@55*Dyvh;BP&VS#FA}&biNhzdx_{Yk|lT;mH@WG)&86 z6xJ2cA_-ULS6F?!0;EXe2_9AuKMpY-$lcT)Y} zjJkz{`OSJem;K`6hxvGU&)koX7lJ6tkKk=0{_3nomJi97S^=2#966d~T+L<>YN~=w zUX7idK7*}87_y^x;^K-oQqxP&_;6;EjCwKMI>kq*lkZUI01xN{7ix8N#w4El1jbWGgF z5(|l7Y)XYb0qeh7lV1Ym%wUX4;dGJ0$Mq~PultDisOf2-!~>Z$#gyiur+RvN@>Bh_ zwk0@H1<5RLwJ=xKSVyq!zu1k;r4})5&ONn|I}UI=)~95j<{ed&E?AS((km{DJ{uj zi-#AAEgbgk+o#=?O234tP#;;B~iUrWRp|TnoXMT(^@=3c|Y&2|!X=0qA5% z{gG!2Oiaps0aGe(Peh%jK=K)(UIfmIgM{IOTwNs4X&SU54>b8Cndg;h2*o}7Gdp_* zRS3U!W2X)qT!eRv_3zSB&)s%ry#J@Cq8xGq{e`)?6>Cu{ zYNR;SF}yY!?b&e%P8I7l>rm{noF(czQcsNx=qxEM9ma z?8Xhg+D>`g@9n6A$^mWE&m`xI{*FQlvk<=Lk?N&1h~uRwX!`xprSy3;ufji4$o_29 zjc)?WZ-{GRV89v#)Vz1&#*JQ>`^+2s_inj*Gdg;elVxCMt7seQ>`Jk8Z)4e%DI27< zTth9~Y91$iniCJwvU$NrSi$G)NJl=E!Yvz4(P;!De5yCr2sBwL9-A>wzV_gS42s;d%LtIj@RsJwAfd=fL#)TEWNTicRtLL8? zh(fSxb0}8-*X=4m1dHIaJ7dk9XgahIyKdQ=l*@){)IqT zdAboHl7;|OI9VQJl4Ed)iAa>7hhKn+_kaeo@{lGQz{7t5!=FIdkk|1cgXUr`lF-FS zutO8bN0?ntpa)`CYQV;d!>G$gDYRD^-E`Ft}(})6Yz^KrEEzNf<=Q9ZJAMwJQ5nR|#w8uOoP$}Ps zhjrMA^^IN+!v__ql$)I4_T0Mh>R=3|;6%WSczO0ao~D|@7AP7`O~0F&TnDkp`r_70 zLpdJ@JubR1L{B1|Q;gY-503Y)-cTiw@)zBs~=o!#vC+>Mzk0mLy2@~gb%;UN=mshugxezHP}ioP~D_x`!S z)F*J`tGT^6Rl4t4Ztf!8=KY~wwcLBm{6Rv(j&{&mq9o=DB*k%lVupv-7a^5DIWi)H zm5o6`L1DG}#s=&J$tdYl!YYx5A*;QdesO$w_od2Li~JuzX0If z@wrGA7Z>lt6sajMKc!D`O_*5v-zE(^Z}sx>vIlJQs!vQ` zt&QHE_IYVlv!bf%WB^;=O2pnw%lx$*^+$_8b%zTv{N%79#lr5CA909qP(h*4)!jXK z$VQNk-hrXUz_UoQ=fi#T0n`aJj8|YP^IpDO>aD6$Zoe>uWxGUE$awTDuWK5|8yuH+ zJv1~L0u*CnWymaMSXdty6ijNvOQM%`$=t-`vpbBosArKqU*ruZeXJ-m^(BtdP&N~D z998JL*`4?Fse_+I0SC|8lSMG~qSBlQ zG5lv--?kWVXjx~Ajnda2uIOWfI4>?J^0ob`H|5#BT@4FI!gk`)#IMh(Y6%5ZNH{0GroQx-jJ*Rq*Ut%S5r1ykI%u3FN9XN3H9JbVcpddYwgb|05u6P-izplWF)!+AikF+30+_*8`6CI0l{VwtyY^06ptsAXbgJcLF?1$5(m7`i0&wWGrt zbtkhx>GN#}gdGaE$CXH*#C;cF|#wHIL7 zxQ)>rXc+%<4>*8zR^uJ6`}gl(KWhA^r>sP|^AB2HLs$v9=ZY;NG2@O>EViWzrQW~z z@!h+3JggCNBo2q zR5CR{7v{T_fm2>gQZi;!!?Yt&tqm3{HrJZ#kX_6LVtxAHv6dtd{7k31;*-aaeCEic zEj9xXozUod3wh@u!b)$^`PNBTT-Qc_rXUnn6$JQ`k7X`dW}QqL-!yG!1eUoHtyrUw z)H@5gk)l=LiM|?ST!!8y0?MfBy!e2jJ1;8mQ z(4mx#+P~O04&MFkUXu~@j8brDJ;{IgUz#y z(fI=|pnQJ-2Om>cf9*rJ1PW3qACAQeqgB zgl~&OCVS-10FeYgEedJHH*W)IexFoDF9&fd@vM-?G1fp-ycFV z6W`f?l+;6yw6!;N)gd^b2rN8V6cNFMJ5}}f>{8bEy_>$<) zG5_dIO%?bB6ellbS*qhMn^b}FT(-@d_hNHfwaV*=2cC)TCQQR6(u)slobDmNVpf8; zb`j5t5<(ihZt`ccKac!}d=@GuH!TLP^<%3nM;>;~aO((6)nBeNgrZo$uWxWo5-RO| z0H=HH)c=mmz*FG~$^OXL@Nll={{5?qZ`To1^B;hXq(Jl=Z1l-Frs7iP4?Ji}UDnPz z8PwO?yBcwpjHxk#zC#P_pnnmFUNkung$-*fa^_q@al@V1wTnB~YV7JaWb2D`OC~mR zsZL%+$AtpO&vlbirxO2rHcVa--YUwmWgFN8KXe>MVC1;pE@zwdRi==bB?yFcnoGEr zw)SP01C~+ddC>`aS$P7^-QxT9`JnXU8n)gUnCGTK*1NkARI}!cGAo52Ed{BYtI9r; zR)L_4PU5+y|91uEPJh${hGdBOx8e0y!?}!Xf*lOTC8)0jYP_?qSR1A(wA7DFJPa*V z5U%v4mfI^IKU01pEtQ-X$__=~AxCqlt9b^pjR)nMH$yJAJ(6Fk zVps;WR|iC8LLg)!JDfysz^GlDgBif0_y^qyJof_QsEM9+OS^Zk%&4&Q_lYFgFg$^R z&~HPckCiB)gTgI$2o%fysku(ueuGTf6>LaaR7wl#`QX~I`7|~+0jla1oLLE`;$cA0 z8wfqP%%Q-F>|Jj2$2qj-z{!MR6$!s_V`akYj~^n3Q3$O*3Jujb1-r(p9Iv$XBpIwV zF5uKg#>S$|#W=ii%^Ox$SCic2yOC$Bg5eIlLhXt8pQ-Q_?j{fr!&2BzOhN*wuXl1< zb;D57_rby0L#SiG^}|ir3o24AOdLtbBsloKZeWhTLwp3(W-A9BcJ$F*m=W6!Ch70B zl3bv|KqonUd&7|vukjM^%93weaz@R?!v-A)blhw=xyw zDF|M79F1xkyPR>yZ@|iIh@)-(Ofy+(22rBWF1F?UM2YmjaruEtVOSZE0U{JfaB__vGFWC;M;n;;+#qkX8@GT#Ik zz8qg=x4;W4{Igjwq|Of@5Mdv_x{*+aidK(3%o)^rJAEE~g97@K2d05tjl@;gam^N_ zj}jk0f5@fFmjm)MGj~teHwR%T8x>nrp?BB-eGQ^m+dH3uzh_fssx!>{j{HDAF3~T`6+@wotbYZ4SK7)lTF(a1&l_4;zf;asEyHALECd~nXnOY+;j^hjC zU4wt5e?CF;%r*PP6D3^_(JJQuBfIQ4gBpnn9;4Q)+@Dj@ssg2DSieWvWG-1*Tl+i` zv((9?_4SuH8%{UeIV2?&+Yc8~IpD=Q=KCl;^G*h`fJWzMAki~uU-omiaCd^EDSKGS?u)r}YH=y^h8 zk%U$a<14Hz4IeIiU?UK4umCwJV;p1Y`s65k2&E=L&0tz_CMm$eg<_R9NNxQ65O~M_ z7jv|{!=SCLy%D6&PHyfe3S^c()DR`Z`iGu_Bxx2d5fPDj zM2@gkyYV%-V#Mr5W&c^S2oA^n_yk0eYV7vh|8%C+)ZF|ndPIXxnVHSC(UTaL*fM3T zGilQd1hlY>A|w{QZN95NWL@QbXXipQM2{r|xXM`;$Xs07f00xW0#E;W&VN-0uSW|` zLmDh9NE*NR*E-$#8uBVOggPJ4ecZrH+%V)Af{Q^yAyZT6WvZ-;on2ksfG3e~Z4C(> z4i2qi#A<|yY8!xbYlaX@-iiX$wAa69`}-@rc3ad2ubz(6F|BcUbE^#tNq3n)%yTH! z`ZV)lUtwu~)I+c?^#sDg&O-x$;s=3{{xs-;( zPf&=4?$L?SH9m6Pwp)Is>FIUt{rw@~v1ztEQT6Zec4`GI5Dt_?e%IMR(Q-!nJH65zFAT|zeHaCK;JP3^ z#?f4=zM%3)0qqH8)@5lWTGJ_rjwpJ8m*tmcF+tug0EAVIrK#y-@M6kTN<2DF=S(xM z9In1zZ%6DaisGnqD%tw4oBRMU9Pm!CJnSdU2<|_Ff$HRaeG!$|CX;R6$zr!o8gXQe zq5|s$+Dhq7Jc)Qe&f_0E6t10l4&_AyT}vSldZB!&ATl}k0tQ?O*oPe)911){gO^8g zgfeOG{;l$pD}Vm{Q>UB!XT~h3F|&K+TcOFE34ORSNiD%F4bL=s1)xRTpuAIb zXk;Gfjd%XHn77VbME^cT5OqClc;a&y2wb}HM3g(dui%`@E-gjZRdV!&owIq76a#{Vv<%_0qTR2yX@=UHMvGZ3kedx6<}faX;ZWnojX#0~T+a2=KzHp!qkk=U zio|= zxqtmmT4fCY6_)A<`~OUG06LL>J;$->)nW^>g_4^nc=*b@Rhu!C`165DnS%)E?1eAHRJWGg znmKc3!g_ibRVoi)5jl)d0uwW}4JPGyOj4TCRMq7?VX{teuxe*hlk*KcTEfg!M1##C z*jPiR*)!i)%3Eim>+UWoiY(I}Wc`sDes;Tn-Z;U$yFs3(T{?Fp%A4W8EsVcktp zZ(gDLBnm#;t6yz> ttoxZ`e)2gsGcY_{{W6h!bSi9 literal 0 HcmV?d00001