From eeeb208879af65a96fa8ea9db6c8917b884a425c Mon Sep 17 00:00:00 2001 From: Bob Date: Tue, 16 Mar 2021 23:57:40 +0100 Subject: [PATCH] test for somewhat dynamic guide books --- .../java/com/hbm/handler/FuelHandler.java | 2 + src/main/java/com/hbm/handler/GUIHandler.java | 2 + .../java/com/hbm/handler/WeaponAbility.java | 11 +- .../com/hbm/inventory/ShredderRecipes.java | 1 + .../hbm/inventory/gui/GUIIScreenGuide.java | 216 ++++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 8 + .../com/hbm/items/tool/ItemGuideBook.java | 100 ++++++++ .../TileEntityMachineMissileAssembly.java | 2 +- src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../hbm/textures/gui/book/book_cover.png | Bin 2156 -> 3651 bytes .../assets/hbm/textures/gui/book/smileman.png | Bin 0 -> 14018 bytes .../assets/hbm/textures/items/book_guide.png | Bin 0 -> 319 bytes 12 files changed, 340 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/hbm/inventory/gui/GUIIScreenGuide.java create mode 100644 src/main/java/com/hbm/items/tool/ItemGuideBook.java create mode 100644 src/main/resources/assets/hbm/textures/gui/book/smileman.png create mode 100644 src/main/resources/assets/hbm/textures/items/book_guide.png diff --git a/src/main/java/com/hbm/handler/FuelHandler.java b/src/main/java/com/hbm/handler/FuelHandler.java index 9d16c7a54..0af6e46b5 100644 --- a/src/main/java/com/hbm/handler/FuelHandler.java +++ b/src/main/java/com/hbm/handler/FuelHandler.java @@ -34,6 +34,8 @@ public class FuelHandler implements IFuelHandler { return 1600; if(fuel.getItem() == ModItems.coke) return 3200; + if(fuel.getItem() == ModItems.book_guide) + return 800; return 0; } diff --git a/src/main/java/com/hbm/handler/GUIHandler.java b/src/main/java/com/hbm/handler/GUIHandler.java index 47cea01c2..5ef0040bf 100644 --- a/src/main/java/com/hbm/handler/GUIHandler.java +++ b/src/main/java/com/hbm/handler/GUIHandler.java @@ -1537,6 +1537,8 @@ public class GUIHandler implements IGuiHandler { return new GUIScreenBobmazon(player, BobmazonOfferFactory.getOffers(player.getHeldItem())); case ModItems.guiID_item_book: return new GUIBook(player.inventory); + case ModItems.guiID_item_guide: + return new GUIIScreenGuide(player); } return null; } diff --git a/src/main/java/com/hbm/handler/WeaponAbility.java b/src/main/java/com/hbm/handler/WeaponAbility.java index 5f9333d42..097dfab39 100644 --- a/src/main/java/com/hbm/handler/WeaponAbility.java +++ b/src/main/java/com/hbm/handler/WeaponAbility.java @@ -240,10 +240,15 @@ public abstract class WeaponAbility { if(living instanceof EntitySkeleton) { - if(((EntitySkeleton)living).getSkeletonType() == 0) + if(((EntitySkeleton)living).getSkeletonType() == 0) { living.entityDropItem(new ItemStack(Items.skull, 1, 0), 0.0F); - else - living.entityDropItem(new ItemStack(ModItems.cell_antimatter), 0.0F); + } else { + + if(world.rand.nextInt(20) == 0) + living.entityDropItem(new ItemStack(Items.skull, 1, 1), 0.0F); + else + living.entityDropItem(new ItemStack(Items.coal, 1, 3), 0.0F); + } } else if(living instanceof EntityZombie) { living.entityDropItem(new ItemStack(Items.skull, 1, 2), 0.0F); diff --git a/src/main/java/com/hbm/inventory/ShredderRecipes.java b/src/main/java/com/hbm/inventory/ShredderRecipes.java index 8c8332f0c..d8de8e031 100644 --- a/src/main/java/com/hbm/inventory/ShredderRecipes.java +++ b/src/main/java/com/hbm/inventory/ShredderRecipes.java @@ -111,6 +111,7 @@ public class ShredderRecipes { ShredderRecipes.setRecipe(ModBlocks.brick_obsidian, new ItemStack(ModBlocks.gravel_obsidian, 1)); ShredderRecipes.setRecipe(Blocks.obsidian, new ItemStack(ModBlocks.gravel_obsidian, 1)); ShredderRecipes.setRecipe(Blocks.stone, new ItemStack(Blocks.gravel, 1)); + ShredderRecipes.setRecipe(ModBlocks.ore_oil_empty, new ItemStack(Blocks.gravel, 1)); ShredderRecipes.setRecipe(Blocks.cobblestone, new ItemStack(Blocks.gravel, 1)); ShredderRecipes.setRecipe(Blocks.stonebrick, new ItemStack(Blocks.gravel, 1)); ShredderRecipes.setRecipe(Blocks.gravel, new ItemStack(Blocks.sand, 1)); diff --git a/src/main/java/com/hbm/inventory/gui/GUIIScreenGuide.java b/src/main/java/com/hbm/inventory/gui/GUIIScreenGuide.java new file mode 100644 index 000000000..859ba6e90 --- /dev/null +++ b/src/main/java/com/hbm/inventory/gui/GUIIScreenGuide.java @@ -0,0 +1,216 @@ +package com.hbm.inventory.gui; + +import java.util.ArrayList; +import java.util.List; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.tool.ItemGuideBook.BookType; +import com.hbm.items.tool.ItemGuideBook.GuidePage; +import com.hbm.lib.RefStrings; +import com.hbm.util.I18nUtil; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.ResourceLocation; + +public class GUIIScreenGuide extends GuiScreen { + + private static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book.png"); + private static final ResourceLocation texture_cover = new ResourceLocation(RefStrings.MODID + ":textures/gui/book/book_cover.png"); + + protected int xSize; + protected int ySize; + protected int guiLeft; + protected int guiTop; + + private BookType type; + + int page; + int maxPage; + + public GUIIScreenGuide(EntityPlayer player) { + + type = BookType.values()[player.getHeldItem().getItemDamage()]; + + page = -1; + maxPage = (int)Math.ceil(type.pages.size() / 2D) - 1; + + this.xSize = 272; + this.ySize = 182; + } + + public void initGui() { + super.initGui(); + this.guiLeft = (this.width - this.xSize) / 2; + this.guiTop = (this.height - this.ySize) / 2; + } + + public void drawScreen(int mouseX, int mouseY, float f) { + this.drawDefaultBackground(); + this.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); + GL11.glDisable(GL11.GL_LIGHTING); + this.drawGuiContainerForegroundLayer(mouseX, mouseY); + GL11.glEnable(GL11.GL_LIGHTING); + } + + protected void drawGuiContainerBackgroundLayer(float f, int i, int j) { + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + if(page < 0) { + Minecraft.getMinecraft().getTextureManager().bindTexture(texture_cover); + func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 512, 512); + return; + } + + Minecraft.getMinecraft().getTextureManager().bindTexture(texture); + func_146110_a(guiLeft, guiTop, 0, 0, xSize, ySize, 512, 512); + + boolean overLeft = i >= guiLeft + 24 && i < guiLeft + 42 && j >= guiTop + 155 && j < guiTop + 165; + boolean overRight = i >= guiLeft + 230 && i < guiLeft + 248 && j >= guiTop + 155 && j < guiTop + 165; + + if(this.page > 0) { + + if(!overLeft) + func_146110_a(guiLeft + 24, guiTop + 155, 3, 207, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 24, guiTop + 155, 26, 207, 18, 10, 512, 512); + } + + if(this.page < this.maxPage) { + + if(!overRight) + func_146110_a(guiLeft + 230, guiTop + 155, 3, 194, 18, 10, 512, 512); + else + func_146110_a(guiLeft + 230, guiTop + 155, 26, 194, 18, 10, 512, 512); + } + } + + public static void drawImage(int x, int y, int dimX, int dimY) { + + Tessellator tessellator = Tessellator.instance; + tessellator.setBrightness(240); + tessellator.setColorRGBA_F(1.0F, 1.0F, 1.0F, 1.0F); + tessellator.startDrawingQuads(); + tessellator.addVertexWithUV(x, y + dimY, 0.0D, 0, 1); + tessellator.addVertexWithUV(x + dimX, y + dimY, 0.0D, 1, 1); + tessellator.addVertexWithUV(x + dimX, y, 0.0D, 1, 0); + tessellator.addVertexWithUV(x, y, 0.0D, 0, 0); + tessellator.draw(); + } + + protected void drawGuiContainerForegroundLayer(int x, int y) { + + if(this.page < 0) { + + float scale = 2; + String cover = "HOW 2 SEX"; + + GL11.glPushMatrix(); + GL11.glScalef(scale, scale, 1F); + this.fontRendererObj.drawString(cover, (int)((guiLeft + ((this.xSize / 2) - (this.fontRendererObj.getStringWidth(cover) / 2 * scale))) / scale), (int)((guiTop + 50) / scale), 0xfece00); + GL11.glPopMatrix(); + + return; + } + + int sideOffset = 130; + + for(int i = 0; i < 2; i++) { + + int defacto = this.page * 2 + i; + + if(defacto < this.type.pages.size()) { + + GuidePage page = this.type.pages.get(defacto); + + float scale = page.scale; + String text = I18nUtil.resolveKey(page.text); + int width = 100; + + int widthScaled = (int) (width * scale); + List lines = new ArrayList(); + String[] words = text.split(" "); + + lines.add(words[0]); + int indent = this.fontRendererObj.getStringWidth(words[0]); + + for(int w = 1; w < words.length; w++) { + + indent += this.fontRendererObj.getStringWidth(" " + words[w]); + + if(indent <= widthScaled) { + String last = lines.get(lines.size() - 1); + lines.set(lines.size() - 1, last += (" " + words[w])); + } else { + lines.add(words[w]); + indent = this.fontRendererObj.getStringWidth(words[w]); + } + } + + GL11.glPushMatrix(); + GL11.glScalef(1F/scale, 1F/scale, 1F); + + float topOffset = page.title == null ? 0 : 6 / page.titleScale; + + for(int l = 0; l < lines.size(); l++) { + this.fontRendererObj.drawString(lines.get(l), (int)((guiLeft + 20 + i * sideOffset) * scale), (int)((guiTop + 30 + topOffset) * scale + (12 * l)), 4210752); + } + + GL11.glPopMatrix(); + + if(page.title != null) { + + float tScale = page.titleScale; + + GL11.glPushMatrix(); + GL11.glScalef(1F/tScale, 1F/tScale, 1F); + this.fontRendererObj.drawString(page.title, (int)((guiLeft + 20 + i * sideOffset + ((width / 2) - (this.fontRendererObj.getStringWidth(page.title) / 2 / tScale))) * tScale), (int)((guiTop + 20) * tScale), page.titleColor); + + GL11.glPopMatrix(); + } + + if(page.image != null) { + GL11.glColor4f(1F, 1F, 1F, 1F); + Minecraft.getMinecraft().getTextureManager().bindTexture(page.image); + + int ix = page.x; + + if(ix == -1) + ix = width / 2 - page.sizeX / 2; + + drawImage(guiLeft + 20 + ix + sideOffset * i, guiTop + page.y, page.sizeX, page.sizeY); + } + + String pageLabel = (defacto + 1) + "/" + (maxPage * 2 + 1); + this.fontRendererObj.drawString(pageLabel, guiLeft + 44 + i * 185 - i * this.fontRendererObj.getStringWidth(pageLabel), guiTop + 156, 4210752); + } + } + } + + protected void mouseClicked(int i, int j, int k) { + + if(page < 0) { + page = 0; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + return; + } + + boolean overLeft = i >= guiLeft + 24 && i < guiLeft + 42 && j >= guiTop + 155 && j < guiTop + 165; + boolean overRight = i >= guiLeft + 230 && i < guiLeft + 248 && j >= guiTop + 155 && j < guiTop + 165; + + if(overLeft && page > 0) { + page--; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } + + if(overRight && page < maxPage) { + page++; + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + } + } +} diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 04880738a..7446aafb2 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -2051,6 +2051,8 @@ public class ModItems { public static Item record_vc; public static Item record_glass; + public static Item book_guide; + public static Item polaroid; public static Item glitch; public static Item letter; @@ -2182,6 +2184,7 @@ public class ModItems { public static final int guiID_item_bobmazon = 10103; public static final int guiID_item_sat_coord = 10104; public static final int guiID_item_book = 10105; + public static final int guiID_item_guide = 10106; public static Item mysteryshovel; public static Item memory; @@ -4473,6 +4476,8 @@ public class ModItems { record_ss = new ItemModRecord("ss").setUnlocalizedName("record_ss").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_ss"); record_vc = new ItemModRecord("vc").setUnlocalizedName("record_vc").setCreativeTab(CreativeTabs.tabMisc).setTextureName(RefStrings.MODID + ":record_vc"); record_glass = new ItemModRecord("glass").setUnlocalizedName("record_glass").setCreativeTab(null).setTextureName(RefStrings.MODID + ":record_glass"); + + book_guide = new ItemGuideBook().setUnlocalizedName("book_guide").setCreativeTab(null).setTextureName(RefStrings.MODID + ":book_guide"); polaroid = new ItemPolaroid().setUnlocalizedName("polaroid").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":polaroid_" + MainRegistry.polaroidID); glitch = new ItemGlitch().setUnlocalizedName("glitch").setMaxStackSize(1).setCreativeTab(MainRegistry.consumableTab).setTextureName(RefStrings.MODID + ":glitch_" + MainRegistry.polaroidID); @@ -6708,6 +6713,9 @@ public class ModItems { GameRegistry.registerItem(record_vc, record_vc.getUnlocalizedName()); GameRegistry.registerItem(record_glass, record_glass.getUnlocalizedName()); + //wow we're far down the item registry, is this the cellar? + GameRegistry.registerItem(book_guide, book_guide.getUnlocalizedName()); + //Technical Items GameRegistry.registerItem(smoke1, smoke1.getUnlocalizedName()); GameRegistry.registerItem(smoke2, smoke2.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/tool/ItemGuideBook.java b/src/main/java/com/hbm/items/tool/ItemGuideBook.java new file mode 100644 index 000000000..678cf11a7 --- /dev/null +++ b/src/main/java/com/hbm/items/tool/ItemGuideBook.java @@ -0,0 +1,100 @@ +package com.hbm.items.tool; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.World; + +public class ItemGuideBook extends Item { + + @Override + public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { + + if(world.isRemote) + player.openGui(MainRegistry.instance, ModItems.guiID_item_guide, world, 0, 0, 0); + + return stack; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { } + + public enum BookType { + + TEST(statFacTest()); + + public List pages; + + private BookType(List pages) { + this.pages = pages; + } + } + + public static List statFacTest() { + + List pages = new ArrayList(); + pages.add(new GuidePage("book.test.page1").addTitle("Title LMAO", 0x800000, 1F).setScale(2F).addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/smileman.png"), 100, 40, 40)); + pages.add(new GuidePage("book.test.page1").addTitle("LA SEXO", 0x800000, 0.5F).setScale(1.75F).addImage(new ResourceLocation(RefStrings.MODID + ":textures/gui/book/smileman.png"), 100, 40, 40)); + pages.add(new GuidePage("test test")); + pages.add(new GuidePage("test test test")); + pages.add(new GuidePage("test test")); + pages.add(new GuidePage("test test test")); + pages.add(new GuidePage("test test")); + return pages; + } + + public static class GuidePage { + + public String title; + public int titleColor; + public float titleScale; + public String text; + public ResourceLocation image; + public float scale = 1F; + public int x; + public int y; + public int sizeX; + public int sizeY; + + public GuidePage() { } + + public GuidePage(String text) { + this.text = text; + } + + public GuidePage setScale(float scale) { + this.scale = scale; + return this; + } + + public GuidePage addTitle(String title, int color, float scale) { + this.title = title; + this.titleColor = color; + this.titleScale = scale; + return this; + } + + public GuidePage addImage(ResourceLocation image, int x, int y, int sizeX, int sizeY) { + + this.image = image; + this.x = x; + this.y = y; + this.sizeX = sizeX; + this.sizeY = sizeY; + return this; + } + + //if the x-coord is -1 then it will automatically try to center the image horizontally + public GuidePage addImage(ResourceLocation image, int y, int sizeX, int sizeY) { + return addImage(image, -1, y, sizeX, sizeY); + } + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index 62265cc67..3d5e06729 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -241,7 +241,7 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid ItemMissile part = (ItemMissile)slots[3].getItem(); ItemMissile fuselage = (ItemMissile)slots[2].getItem(); - if(part.top == fuselage.bottom) + if(part.top == fuselage.bottom && part.type == PartType.FINS) return 1; } diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index e1286f44b..c507190e8 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -86,6 +86,8 @@ armor.thermal=Thermal Sight armor.threshold=Damage threshold of %s armor.vats=Enemy HUD +book.test.page1=This is a test to demonstrate the e[B]ic linewrap feature of these books. The font scale is customizable and the linewrap adjusts accordingly, which makes writing new pages really easy. + chem.ASPHALT=Asphalt Production chem.BALEFIRE=BF Rocket Fuel Mixing chem.BP_BIOFUEL=Biofuel Transesterification diff --git a/src/main/resources/assets/hbm/textures/gui/book/book_cover.png b/src/main/resources/assets/hbm/textures/gui/book/book_cover.png index 8e6ec563650289ecf88865938e965639a3a80c4c..3692874a2c30aa7fe806e3769e927db1bc285bd8 100644 GIT binary patch literal 3651 zcmeHJ`#Y3rAOAjMV#r}e(#fHeGAL}$iYZb_vQ!kJ*H%JQ&I~ghHey3tImMbyM6JWt zY8Hdpq~vU=X`PM3gw;6ZP-Eu3NALAs@1OAgu+J~gb3ONS-_Q5^IbGkIjt=|fWY)_7 zfZV|YHckLI^oRq3B)ZLpcYH=Se9+#5M+xYn626N=-+ex4v*&1d=0s0dXs4-?WdDWR z4XsSA_IX-*dNR}J@`=C8wDR_@)i?Y0L?2UGC-&YSzOUMZ+Z&wLs6`1> zOB>Ukb0@5=jtPXa+zZ(e0>9T4BRgZ%Ii0~fSkf5V$*}KcA!mFbns z6Z#AJQu&;k$_*EfjDL!Zi_6gw#r3&FkaNSs!%eBeZ!s@{Id`@`bPK3doP!TvEX#`$ zs`v`LHw&WaE@t30B6K_+ZT9p1V5KK~@^)-8@=%+Z$(4zdP**+wR}eI>9!#CBupiCV7J+5YwCUg?4yT!cn zF`_}TKgY;pxVa~Z^Tzq|DLB*~3~QI_`VB2oeiz{ zEX7#S(BxKs+vzVC-&^qO%rOV({BuD3Ko_pRB zf<4YzZ!FSoNjkmu!FajFb3%VKYR`kC8p195XnJm}TdPH#p0TUD0-HAu?T@$O4DsT) z3LOs6dUHk+2aXm@2OE49?cAq}jb$1(Z){k*p^WpN!sWudD*-um^g2 zeUxwnz-SeC;> zQws||Ya#zf)TQ7^0d+_(H+a^FQkYS_LccVxVyXA0sfRGE^yI$lZ)ogqP&4(1J^q%X zoM&;9OtV&j<1?|MvwwE4%?@(1Gmy3Z<+x6*x~psuyjXHCx*utO)DzQ-U_)I8V!4AOlB2yQF%Lu zYCQ?CEUxLRR+7NPEw^CZHy_KXqXOeB4%`h+P4PBSrlfqg0ekiEQcR7Atw?}L$*mYp zEV;&yBbigaG?lp{WHT4~m^2KK^mc4W5H75jxDvD?|HKUD<$KN~%RKkj$y5s*4h1+| z3?XyzhcvfIrp^T|R`A_Dy;Fm_5Y_5@%A6ao38$n1rRUlXD6y9Zj!#e4m# z<#is}+Whi}_L}&on~07Ti011=_AX}^;ZGVEV)Q$gAoJiIZ>;I)|47yS-K(<_v-~o* zQ6|tnl0k&gBX22`TAnhdFKqR?n^`1AXj2mWphPPoGjYmaA*eY@QTh)UX8XTWSpoU? z5L{{7aJsk9oh)Skh)NWP)7hsa;&NfF^OZetWgiLpF(*6m&6&pw^U>-aoZ8TeTO5uHSuAtnrOSaXgpJ$11oTcM<1=Dkq;HWye3gU+)S7^+2DUM0L84XW zf5JL^Gc*3Hnilc&MGf&eyH(A3L$x$25(+xzG->0G`zKelM&M8zganu}Ue1|~y118T zh8Oz7MSteDZlCJJ3fnzG67%xV*)Y7Y}rr=e2Oj5bv{>RQ}zd+bI(?mK^edSG^HJg$8> zO>Z%-MBgY~Pj7ON=RJ@u1I;TLXHf#Drltl|o>Cy^q5&k|I=kFlb*U-g4|knJep!>j zr(Pz@)2!Y}m^kC@?pKqUUHLBY>0xKg>v188M9zI5z(hzCiqnfvoSdCCL?d3#lRw4$ zM#aA@eK5nkPIv2!@Vo!0_shF^9SKT=Rdn;crE^mB0-CiMt~I1*pgTMw;x^E=M_F_4 z#y^$(@FJb;e2alE%nN zH8k)ToJg}xz44Aeaq<$iMZ?&czmzgx5$rd-Q`D6dSzI)ZCaQx|QjZ_4()oomzDeU> zDspMsz9Yc8AkXgj(zv}U=*C!Jh@XWJjZGiQ9j2s|_v|-5EsN2dPkUyVz-LE!%hfs0lmiG(MPBr~JvVsTvu_c_=U?e)6)ZxgXQng9R* literal 2156 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 Rdh!4O002ovPDHLkV1mluh$H|2 literal 0 HcmV?d00001