From ef4dd081cc07eca944e24bf792a1881f05f1e74e Mon Sep 17 00:00:00 2001 From: Adubbz Date: Wed, 1 May 2013 19:23:58 +1000 Subject: [PATCH] Adjusted Bamboo Forests to Forstride's liking --- .../biomes/BiomeGenBambooForest.java | 4 +- .../worldgen/WorldGenBambooTree.java | 4 +- .../structure/BOPMapGenScatteredFeature.java | 232 +++++++++--------- .../worldgen/structure/BOPMapGenVillage.java | 190 +++++++------- .../BOPStructureScatteredFeatureStart.java | 86 +++---- .../BiomesOPlenty/textures/blocks/bamboo.png | Bin 260 -> 725 bytes .../textures/blocks/bamboothatching.png | Bin 584 -> 581 bytes .../textures/blocks/item_bamboo.png | Bin 289 -> 410 bytes .../textures/blocks/leaves_bamboo_fancy.png | Bin 612 -> 583 bytes .../textures/blocks/leaves_bamboo_fast.png | Bin 653 -> 624 bytes 10 files changed, 258 insertions(+), 258 deletions(-) diff --git a/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java b/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java index 97b24069e..21421a1fd 100644 --- a/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java +++ b/src/minecraft/biomesoplenty/biomes/BiomeGenBambooForest.java @@ -71,7 +71,7 @@ public class BiomeGenBambooForest extends BiomeGenBase */ public int getBiomeGrassColor() { - return 9430372; + return 10739795; } /** @@ -79,6 +79,6 @@ public class BiomeGenBambooForest extends BiomeGenBase */ public int getBiomeFoliageColor() { - return 9430372; + return 10739795; } } diff --git a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java b/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java index 44094d379..e5c7cb074 100644 --- a/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java +++ b/src/minecraft/biomesoplenty/worldgen/WorldGenBambooTree.java @@ -27,7 +27,7 @@ public class WorldGenBambooTree extends WorldGenerator public WorldGenBambooTree(boolean par1) { - this(par1, 18, 0, 0, false); + this(par1, 10, 0, 0, false); } public WorldGenBambooTree(boolean par1, int par2, int par3, int par4, boolean par5) @@ -41,7 +41,7 @@ public class WorldGenBambooTree extends WorldGenerator public boolean generate(World par1World, Random par2Random, int par3, int par4, int par5) { - int var6 = par2Random.nextInt(3) + this.minTreeHeight; + int var6 = par2Random.nextInt(12) + this.minTreeHeight; boolean var7 = true; if (par4 >= 1 && par4 + var6 + 1 <= 256) diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java index 85140fb4b..36f1cd958 100644 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java +++ b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenScatteredFeature.java @@ -1,116 +1,116 @@ -package biomesoplenty.worldgen.structure; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Random; - -import biomesoplenty.api.Biomes; - -import net.minecraft.entity.monster.EntityWitch; -import net.minecraft.util.MathHelper; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.biome.SpawnListEntry; -import net.minecraft.world.gen.structure.MapGenStructure; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPMapGenScatteredFeature extends MapGenStructure -{ - private static List biomelist = Arrays.asList(new BiomeGenBase[] { - BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.swampland, - Biomes.badlands.get(), Biomes.dunes.get(), Biomes.oasis.get(), Biomes.desertNew.get(), - Biomes.bayou.get(), Biomes.bog.get(), Biomes.deadSwamp.get(), Biomes.fen.get(), Biomes.swampwoods.get(), Biomes.swamplandNew.get(), - Biomes.rainforest.get(), Biomes.temperateRainforest.get(), Biomes.tropicalRainforest.get(), Biomes.jungleNew.get() - }); - - /** contains possible spawns for scattered features */ - private List scatteredFeatureSpawnList; - - /** the maximum distance between scattered features */ - private int maxDistanceBetweenScatteredFeatures; - - /** the minimum distance between scattered features */ - private int minDistanceBetweenScatteredFeatures; - - public BOPMapGenScatteredFeature() - { - this.scatteredFeatureSpawnList = new ArrayList(); - this.maxDistanceBetweenScatteredFeatures = 32; - this.minDistanceBetweenScatteredFeatures = 8; - this.scatteredFeatureSpawnList.add(new SpawnListEntry(EntityWitch.class, 1, 1, 1)); - } - - public BOPMapGenScatteredFeature(Map par1Map) - { - this(); - Iterator iterator = par1Map.entrySet().iterator(); - - while (iterator.hasNext()) - { - Entry entry = (Entry)iterator.next(); - - if (((String)entry.getKey()).equals("distance")) - { - this.maxDistanceBetweenScatteredFeatures = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistanceBetweenScatteredFeatures, this.minDistanceBetweenScatteredFeatures + 1); - } - } - } - - protected boolean canSpawnStructureAtCoords(int par1, int par2) - { - int k = par1; - int l = par2; - - if (par1 < 0) - { - par1 -= this.maxDistanceBetweenScatteredFeatures - 1; - } - - if (par2 < 0) - { - par2 -= this.maxDistanceBetweenScatteredFeatures - 1; - } - - int i1 = par1 / this.maxDistanceBetweenScatteredFeatures; - int j1 = par2 / this.maxDistanceBetweenScatteredFeatures; - Random random = this.worldObj.setRandomSeed(i1, j1, 14357617); - i1 *= this.maxDistanceBetweenScatteredFeatures; - j1 *= this.maxDistanceBetweenScatteredFeatures; - i1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); - j1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); - - if (k == i1 && l == j1) - { - BiomeGenBase biomegenbase = this.worldObj.getWorldChunkManager().getBiomeGenAt(k * 16 + 8, l * 16 + 8); - Iterator iterator = biomelist.iterator(); - - while (iterator.hasNext()) - { - BiomeGenBase biomegenbase1 = (BiomeGenBase)iterator.next(); - - if (biomegenbase == biomegenbase1) - { - return true; - } - } - } - - return false; - } - - protected StructureStart getStructureStart(int par1, int par2) - { - return new BOPStructureScatteredFeatureStart(this.worldObj, this.rand, par1, par2); - } - - /** - * returns possible spawns for scattered features - */ - public List getScatteredFeatureSpawnList() - { - return this.scatteredFeatureSpawnList; - } -} +package biomesoplenty.worldgen.structure; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; + +import biomesoplenty.api.Biomes; + +import net.minecraft.entity.monster.EntityWitch; +import net.minecraft.util.MathHelper; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.biome.SpawnListEntry; +import net.minecraft.world.gen.structure.MapGenStructure; +import net.minecraft.world.gen.structure.StructureStart; + +public class BOPMapGenScatteredFeature extends MapGenStructure +{ + private static List biomelist = Arrays.asList(new BiomeGenBase[] { + BiomeGenBase.desert, BiomeGenBase.desertHills, BiomeGenBase.jungle, BiomeGenBase.jungleHills, BiomeGenBase.swampland, + Biomes.badlands.get(), Biomes.dunes.get(), Biomes.oasis.get(), Biomes.desertNew.get(), + Biomes.bayou.get(), Biomes.bog.get(), Biomes.deadSwamp.get(), Biomes.fen.get(), Biomes.swampwoods.get(), Biomes.swamplandNew.get(), + Biomes.rainforest.get(), Biomes.temperateRainforest.get(), Biomes.tropicalRainforest.get(), Biomes.jungleNew.get() + }); + + /** contains possible spawns for scattered features */ + private List scatteredFeatureSpawnList; + + /** the maximum distance between scattered features */ + private int maxDistanceBetweenScatteredFeatures; + + /** the minimum distance between scattered features */ + private int minDistanceBetweenScatteredFeatures; + + public BOPMapGenScatteredFeature() + { + this.scatteredFeatureSpawnList = new ArrayList(); + this.maxDistanceBetweenScatteredFeatures = 32; + this.minDistanceBetweenScatteredFeatures = 8; + this.scatteredFeatureSpawnList.add(new SpawnListEntry(EntityWitch.class, 1, 1, 1)); + } + + public BOPMapGenScatteredFeature(Map par1Map) + { + this(); + Iterator iterator = par1Map.entrySet().iterator(); + + while (iterator.hasNext()) + { + Entry entry = (Entry)iterator.next(); + + if (((String)entry.getKey()).equals("distance")) + { + this.maxDistanceBetweenScatteredFeatures = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistanceBetweenScatteredFeatures, this.minDistanceBetweenScatteredFeatures + 1); + } + } + } + + protected boolean canSpawnStructureAtCoords(int par1, int par2) + { + int k = par1; + int l = par2; + + if (par1 < 0) + { + par1 -= this.maxDistanceBetweenScatteredFeatures - 1; + } + + if (par2 < 0) + { + par2 -= this.maxDistanceBetweenScatteredFeatures - 1; + } + + int i1 = par1 / this.maxDistanceBetweenScatteredFeatures; + int j1 = par2 / this.maxDistanceBetweenScatteredFeatures; + Random random = this.worldObj.setRandomSeed(i1, j1, 14357617); + i1 *= this.maxDistanceBetweenScatteredFeatures; + j1 *= this.maxDistanceBetweenScatteredFeatures; + i1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); + j1 += random.nextInt(this.maxDistanceBetweenScatteredFeatures - this.minDistanceBetweenScatteredFeatures); + + if (k == i1 && l == j1) + { + BiomeGenBase biomegenbase = this.worldObj.getWorldChunkManager().getBiomeGenAt(k * 16 + 8, l * 16 + 8); + Iterator iterator = biomelist.iterator(); + + while (iterator.hasNext()) + { + BiomeGenBase biomegenbase1 = (BiomeGenBase)iterator.next(); + + if (biomegenbase == biomegenbase1) + { + return true; + } + } + } + + return false; + } + + protected StructureStart getStructureStart(int par1, int par2) + { + return new BOPStructureScatteredFeatureStart(this.worldObj, this.rand, par1, par2); + } + + /** + * returns possible spawns for scattered features + */ + public List getScatteredFeatureSpawnList() + { + return this.scatteredFeatureSpawnList; + } +} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java index c351596c9..5e0c325b9 100644 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java +++ b/src/minecraft/biomesoplenty/worldgen/structure/BOPMapGenVillage.java @@ -1,95 +1,95 @@ -package biomesoplenty.worldgen.structure; - -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Random; -import java.util.Map.Entry; - -import biomesoplenty.configuration.BOPConfiguration; -import net.minecraft.util.MathHelper; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.structure.MapGenStructure; -import net.minecraft.world.gen.structure.MapGenVillage; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPMapGenVillage extends MapGenStructure -{ - /** A list of all the biomes villages can spawn in. */ - public static List villageSpawnBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.plains, BiomeGenBase.desert}); - - /** World terrain type, 0 for normal, 1 for flat map */ - private int terrainType; - private int maxDistance; - private int minDistance; - - public BOPMapGenVillage() - { - this.terrainType = 0; - this.maxDistance = BOPConfiguration.villageDistance; - this.minDistance = BOPConfiguration.villageDistance / 4; - villageSpawnBiomes = MapGenVillage.villageSpawnBiomes; - } - - public BOPMapGenVillage(Map par1Map) - { - this(); - Iterator iterator = par1Map.entrySet().iterator(); - - while (iterator.hasNext()) - { - Entry entry = (Entry)iterator.next(); - - if (((String)entry.getKey()).equals("size")) - { - this.terrainType = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.terrainType, 0); - } - else if (((String)entry.getKey()).equals("distance")) - { - this.maxDistance = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistance, this.minDistance + 1); - } - } - } - - protected boolean canSpawnStructureAtCoords(int par1, int par2) - { - int k = par1; - int l = par2; - - if (par1 < 0) - { - par1 -= this.maxDistance - 1; - } - - if (par2 < 0) - { - par2 -= this.maxDistance - 1; - } - - int i1 = par1 / this.maxDistance; - int j1 = par2 / this.maxDistance; - Random random = this.worldObj.setRandomSeed(i1, j1, 10387312); - i1 *= this.maxDistance; - j1 *= this.maxDistance; - i1 += random.nextInt(this.maxDistance - this.minDistance); - j1 += random.nextInt(this.maxDistance - this.minDistance); - - if (k == i1 && l == j1) - { - boolean flag = this.worldObj.getWorldChunkManager().areBiomesViable(k * 16 + 8, l * 16 + 8, 0, villageSpawnBiomes); - - if (flag) - { - return true; - } - } - - return false; - } - - protected StructureStart getStructureStart(int par1, int par2) - { - return new BOPStructureVillageStart(this.worldObj, this.rand, par1, par2, this.terrainType); - } -} +package biomesoplenty.worldgen.structure; + +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Random; +import java.util.Map.Entry; + +import biomesoplenty.configuration.BOPConfiguration; +import net.minecraft.util.MathHelper; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.structure.MapGenStructure; +import net.minecraft.world.gen.structure.MapGenVillage; +import net.minecraft.world.gen.structure.StructureStart; + +public class BOPMapGenVillage extends MapGenStructure +{ + /** A list of all the biomes villages can spawn in. */ + public static List villageSpawnBiomes = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.plains, BiomeGenBase.desert}); + + /** World terrain type, 0 for normal, 1 for flat map */ + private int terrainType; + private int maxDistance; + private int minDistance; + + public BOPMapGenVillage() + { + this.terrainType = 0; + this.maxDistance = BOPConfiguration.villageDistance; + this.minDistance = BOPConfiguration.villageDistance / 4; + villageSpawnBiomes = MapGenVillage.villageSpawnBiomes; + } + + public BOPMapGenVillage(Map par1Map) + { + this(); + Iterator iterator = par1Map.entrySet().iterator(); + + while (iterator.hasNext()) + { + Entry entry = (Entry)iterator.next(); + + if (((String)entry.getKey()).equals("size")) + { + this.terrainType = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.terrainType, 0); + } + else if (((String)entry.getKey()).equals("distance")) + { + this.maxDistance = MathHelper.parseIntWithDefaultAndMax((String)entry.getValue(), this.maxDistance, this.minDistance + 1); + } + } + } + + protected boolean canSpawnStructureAtCoords(int par1, int par2) + { + int k = par1; + int l = par2; + + if (par1 < 0) + { + par1 -= this.maxDistance - 1; + } + + if (par2 < 0) + { + par2 -= this.maxDistance - 1; + } + + int i1 = par1 / this.maxDistance; + int j1 = par2 / this.maxDistance; + Random random = this.worldObj.setRandomSeed(i1, j1, 10387312); + i1 *= this.maxDistance; + j1 *= this.maxDistance; + i1 += random.nextInt(this.maxDistance - this.minDistance); + j1 += random.nextInt(this.maxDistance - this.minDistance); + + if (k == i1 && l == j1) + { + boolean flag = this.worldObj.getWorldChunkManager().areBiomesViable(k * 16 + 8, l * 16 + 8, 0, villageSpawnBiomes); + + if (flag) + { + return true; + } + } + + return false; + } + + protected StructureStart getStructureStart(int par1, int par2) + { + return new BOPStructureVillageStart(this.worldObj, this.rand, par1, par2, this.terrainType); + } +} diff --git a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java b/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java index c6b07b4c5..3581cf3b4 100644 --- a/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java +++ b/src/minecraft/biomesoplenty/worldgen/structure/BOPStructureScatteredFeatureStart.java @@ -1,43 +1,43 @@ -package biomesoplenty.worldgen.structure; - -import java.util.Random; - -import biomesoplenty.api.Biomes; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureDesertPyramid; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureJunglePyramid; -import net.minecraft.world.gen.structure.ComponentScatteredFeatureSwampHut; -import net.minecraft.world.gen.structure.StructureStart; - -public class BOPStructureScatteredFeatureStart extends StructureStart -{ - public BOPStructureScatteredFeatureStart(World world, Random random, int x, int z) - { - BiomeGenBase biome = world.getBiomeGenForCoords(x * 16 + 8, z * 16 + 8); - - if (biome != BiomeGenBase.jungle && biome != BiomeGenBase.jungleHills && biome != Biomes.rainforest.get() && - biome != Biomes.temperateRainforest.get() && biome != Biomes.tropicalRainforest.get() && biome != Biomes.jungleNew.get()) - { - if (biome == BiomeGenBase.swampland || biome == Biomes.bayou.get() || biome == Biomes.bog.get() - || biome == Biomes.deadSwamp.get() || biome == Biomes.fen.get() || biome == Biomes.swampwoods.get() - || biome == Biomes.swamplandNew.get()) - { - ComponentScatteredFeatureSwampHut componentscatteredfeatureswamphut = new ComponentScatteredFeatureSwampHut(random, x * 16, z * 16); - this.components.add(componentscatteredfeatureswamphut); - } - else - { - ComponentScatteredFeatureDesertPyramid componentscatteredfeaturedesertpyramid = new ComponentScatteredFeatureDesertPyramid(random, x * 16, z * 16); - this.components.add(componentscatteredfeaturedesertpyramid); - } - } - else - { - ComponentScatteredFeatureJunglePyramid componentscatteredfeaturejunglepyramid = new ComponentScatteredFeatureJunglePyramid(random, x * 16, z * 16); - this.components.add(componentscatteredfeaturejunglepyramid); - } - - this.updateBoundingBox(); - } -} +package biomesoplenty.worldgen.structure; + +import java.util.Random; + +import biomesoplenty.api.Biomes; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.structure.ComponentScatteredFeatureDesertPyramid; +import net.minecraft.world.gen.structure.ComponentScatteredFeatureJunglePyramid; +import net.minecraft.world.gen.structure.ComponentScatteredFeatureSwampHut; +import net.minecraft.world.gen.structure.StructureStart; + +public class BOPStructureScatteredFeatureStart extends StructureStart +{ + public BOPStructureScatteredFeatureStart(World world, Random random, int x, int z) + { + BiomeGenBase biome = world.getBiomeGenForCoords(x * 16 + 8, z * 16 + 8); + + if (biome != BiomeGenBase.jungle && biome != BiomeGenBase.jungleHills && biome != Biomes.rainforest.get() && + biome != Biomes.temperateRainforest.get() && biome != Biomes.tropicalRainforest.get() && biome != Biomes.jungleNew.get()) + { + if (biome == BiomeGenBase.swampland || biome == Biomes.bayou.get() || biome == Biomes.bog.get() + || biome == Biomes.deadSwamp.get() || biome == Biomes.fen.get() || biome == Biomes.swampwoods.get() + || biome == Biomes.swamplandNew.get()) + { + ComponentScatteredFeatureSwampHut componentscatteredfeatureswamphut = new ComponentScatteredFeatureSwampHut(random, x * 16, z * 16); + this.components.add(componentscatteredfeatureswamphut); + } + else + { + ComponentScatteredFeatureDesertPyramid componentscatteredfeaturedesertpyramid = new ComponentScatteredFeatureDesertPyramid(random, x * 16, z * 16); + this.components.add(componentscatteredfeaturedesertpyramid); + } + } + else + { + ComponentScatteredFeatureJunglePyramid componentscatteredfeaturejunglepyramid = new ComponentScatteredFeatureJunglePyramid(random, x * 16, z * 16); + this.components.add(componentscatteredfeaturejunglepyramid); + } + + this.updateBoundingBox(); + } +} diff --git a/src/minecraft/mods/BiomesOPlenty/textures/blocks/bamboo.png b/src/minecraft/mods/BiomesOPlenty/textures/blocks/bamboo.png index 5240691f47f480b405332da8b43bebc993927a1e..cfb490fba57a6f21af4947e46cc0c82c363cf95e 100644 GIT binary patch delta 643 zcmV-}0(||10@VeOB#|)~3cdgU4!!~ELb1S+Qz(A|QAtEWR5(v{Q(H(=aUA|LHrP1q z_AuDP7=wDS3j|#rEF#Jz3K8E*y3BiKQp0VowbXT;Mz={f3!$9LDWPrVg-oJ{n7B>L zxfIIF?2g^2=<@W%?_cY|c0M@#e{jzE&iDJi@30i)ayh#_x&buDUfPlP=*IJ}C-^y> ztb%{9r-hSrAFRg1gbTgVDqIc}ixXT3u0%t}GI#<@ z&^MWn{t+7<#GMFF9p@%S=Bx-Z(M!?Ib541+9O* z#h{owpKOFyt7S^1k{ON0zYGgN1k{7%&j!9ic={kGxD(HUPN!q3-n0#`O|NQb#=^f$ zJ*cyn!Fga0agRR^Ee1(!*DwRBrW` z@|IFsMAGwgyZ8#!12T_1pp!gF#Tfl$hDxR4&yf;7ECl_&6yw~l(_8@&whxqpIzk`? d6r&&r>^CP)hLl;0p5p)j002ovPDHLkV1mZ#G(rFX delta 173 zcmV;e08;%aS^7fub0)n@C;PS4D{)7NenR)1WadUL|z@6=df4_`E^@tylgk8GW-w1@Tfutpz`oDh z=P~<74;v{W6$x>{s>nSuaRkjU*T?H)h8Qm*IZR*w4bUFF*I=(34PPIQCbhJ4i|uk6 zviJ_+K*rtiF<(SCPX<}z`9(;Aa^MxJ#7u?e)i`7-QSUj>BjXenan&4H#cMVdD*Ra{ z4Y@j3mIbkLR#W nhC`Br)l{Ik8H9Mvp|RRsM=0DC*{$IJ00000NkvXXu0mjf<0A8- delta 498 zcmV1xoE9ePeYx2evu7h?TRjd(YdJNjYx-GQyqp-{&iBr@ z+ILo(VAYE;E9~}P?SK5|a(%Tt__cldWH?mP-1(@gd*->Op1Ec#Yjqlt?YwFkA zXh?V0TV!_DDkGcSe6+%bzIDI|iA1%q(Iq(oassqZJrPte7_o2{N$%24zXp&)wYCJK z?KD=HK4LIwHDU5mgES;mFq2HoE%D)AJ|471(C|N!N~>z}$A5qs&W^s^-)x(zw(_C! zdkC|m{M1MhsX>SfRz>dq#Wpm<^ew!M8DhMMlRY02+?_1^En-qN2CcY~#yfxo@WBxL8bQdk*m?xX8<7NfxBD8~ oWH=-_SWN|rn?Z=z%vW0;05l+J({}5EHGwog{?Yy) zW(ZCLK!BT@o8kPIwEwgA8)9f)wmlKI0U)REe-ie8$6f#bAbR394X`G3%{UDJVPr=(y$o15d;M_ia`Mszf9vtOg)! z2HCv!lFNUPtssr-uegC}ZEbDb27m-$nn5mXkO7K{ieMU~83d3ugD{E#zix3gh9bNM;Bq!Hz-a);$%Hh609FG)nn3=3eSZ^P%^-kb0E)BQ zeeh}q0TcsJG!w8H1}9Jq00B}og8+&FC5ce2b0#M##Tb(OXz} z)G~jZDSHnUvT**DFvnl`5Rw~fsa4B=F&jW z_Q`;#z4Li;_En?&jMwUAnVy~oiM*lW9;AQx4se4C*LSC>PZ8RHg4i@Ns{bsw8rwV6 zps2~XZQO(;_FN@B3%SWnjDOdxTWJ4ca;r!MW6i{D$mm3(DW3~|bO&<(va2#?^jIB@ z=3{OHOb6S(*(-2uI!YrhK8Bc!C#4!U4`t}qlpfqEGF~K&lCALKx7O3*;>T~Q!{}R_ zh&>HXKC1NBac9k#%E{U}*+xTOJcq+11mc1M#2Z-27k(PBjaExs4|3>1ouV>mmac%$r002ovPDHLkV1mZ`@NxhE delta 526 zcmV+p0`dLF1mpyeBnkm@Qb$4nuFf3kks%uj!vFvd!vV){sAQ2wDSy*RL_t(IPi0a| zFGEofzQ0A#s#mHW3$H%hw(3zy7v4ndh>BE|wzNV7Ar`EN5JV!e@CVosu^=J@Arcb* zWB8_>bFZ4sIWy3?Sr;gfgPLXkTsg)i&*13u2Yc&K~VPNNrfWG>pXZ``&1qe=z4 zWywZBBoOPz^0+wOC+}SxLzBp@(oz&8pL0lcX#^ag%9o-Z`WKjcsnGk)LhErk%b*CX>B{osgMR`*f5fMa1^mP$Y&`;^v zZ3#B#ynF4n*IMtp!|-S+t)b@jV^{jySIY`(B+pJ>tBe$xBlVtrrPa4hMF2heoI|@` z^2C3eS=sG4AxEdnkXoa3`1}rEV3@l%`1ot?Y~o_y+WY46t2)&2lW+OV-GQZ-b@w48 z6x0KO&iz_Sa$>HZTeL2+{p}tq@b!;54z0C!4JKPXJpIvvURoSndDG}Th>{OKj2@cm z!*IdrzSwd0c_yT&wiwH=8{JQ1XKw6NJBm%G z7dUmjqBbS<>}pMy#?98~cq-bRs1-Qk2}(wcbGNHdQ6qm6Uqu?r{Q3~9_)0|_ fy~n9FN`C=TeF0T_%4dlH0000}OE1dRodBnkm@Qb$4nuFf3kks%uj!vFvd!vV){sAQ2wDS!M)L_t(IPd(9H zZ;VkC1>pB5n0c?2Hs~kPc1)vVsxxDzRUeh~0`<{|JE9_^hPJdq1R*ZCB0>;}#Dzb= z4G|Zlk!cVjA@M^z$7v)d@4L_1>#V)@-pSgn*?86rWOiQe9J|sfa9Rhmdv0{M7E&p3 zTQNQJVY?s!HJW8;V}H34d6SR&q$4uA*a2zDXR5Ose1XZ~r~T)@ROD(G+v}f(r{5N# z(igr~4nFKX`DUB<5E7G*`=}=bjy%gnC%dk7sTN8X(&DK$D)6&QB^+AykHd