From 36548e90042cd25a12e4d094a585b3e6a8c1a904 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 25 Nov 2020 21:49:18 +0100 Subject: [PATCH] Fix some 1.8 bugs Fix chunk reading bug Fix InventorySlots::byId bug VersionMapping NullPointerException --- ...b3712e5db6b8395e08ee15acab0a83c6558.tar.gz | Bin 0 -> 1843 bytes ...b8435362ef4ccb88df70d0abf405fddd87b.tar.gz | Bin 1921 -> 0 bytes ...1e3aa318ce06f3896cf68ee514d75c685d.tar.gz} | Bin 63585 -> 65555 bytes .../data/inventory/InventorySlots.java | 6 +- .../mappings/versions/VersionMapping.java | 52 ++--- .../clientbound/play/PacketChunkData.java | 11 +- .../play/PacketEntityEquipment.java | 9 +- .../protocol/protocol/InByteBuffer.java | 4 +- .../protocol/protocol/ProtocolDefinition.java | 2 + .../de/bixilon/minosoft/util/BitByte.java | 4 +- .../de/bixilon/minosoft/util/ChunkUtil.java | 8 +- .../resources/assets/mapping/resources.json | 194 +----------------- 12 files changed, 42 insertions(+), 248 deletions(-) create mode 100644 data/resources/2b/2ba9ab3712e5db6b8395e08ee15acab0a83c6558.tar.gz delete mode 100644 data/resources/61/61406b8435362ef4ccb88df70d0abf405fddd87b.tar.gz rename data/resources/{79/793bcaf8cfe749f90718953675b919aaac8b9bd5.tar.gz => 9c/9cf2f31e3aa318ce06f3896cf68ee514d75c685d.tar.gz} (51%) diff --git a/data/resources/2b/2ba9ab3712e5db6b8395e08ee15acab0a83c6558.tar.gz b/data/resources/2b/2ba9ab3712e5db6b8395e08ee15acab0a83c6558.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be5adaaf5cdcc75111e676b41942ce102bb311ac GIT binary patch literal 1843 zcmV-32h8{%iwFSA!M(}uL<^9n1w;w_#=(?cmK?zC`zZ(zK376t10zg z`lzk8+P+s?U9GFNl}@XBuc&RUrQO{tcmKlknr40is_fz<%zj+v`xQOE%zgFyA9;R$ z+lBjJmH6xI+wb>3ziqaDn!mk=&)F8<+P~d@d-gM*EgB=_dc<@I@;s!E&8Y#)YUc<% z;WNBy9eCRY;bu#PwCTF%?*e}r1#EvM$U_spr>P$6S5q2Y`ajq|2gxqX0^w@y(jc8Kzl)hF{qvO( zIb&$$mR_6RlG`vngm4tMNo{bE0{Gs2#GvpF+-yY3gBv-n53S~B+>;w(H1 z>88eWHko~Y#Jgn}5U>i|LXrfzA-l5h&i2{W`-)n{t00QA8xqadv1NNznmwExAQQXV zhO3uge<>1sEy}NtuX>~>VHj*b7Bgm7oBIU(}Ka~Yhy7QxmtivQ&!i%7AOBEeN zS6H$|kO5@#>L<^k;3IHFud4~pffc%K1I+v-TQ!ezR#Da5ENK|M1<5*0w-@tTk>vF% z34()=q=IL42jdxJDHMFun3^6Qlx8a_u7^Ba7Va9mK0=O>vv*IKt?+kdA>t>{S_yRF zy;x*8-y&yXv*RG0EIjle?+oJDaD3rR%3Ws~VKm?vRDr=Ujgd!Sh2v@qTvdTmq}xR; zIsz9{RXn35F!k-hf@5eNh2Y3zBi+aEWD`fhPOwzBN*gidSwoBCbeqKSPEtYhT^)WG z3y=3O+d=@RFRzz^zVgkJ>5XVCjOUgG`8PGNW6yJ=9p%Z93%^#;3z>b}g905mZ8;F%0KuwGhc%KdjyW=~*ej=acyDs~;NAGR9oy35G_ z5nM~OzJbHWEZ7pr%4S_?rh5%Xt4SAd=Qx3m~n>J4~x^19?vTjnJOd zsxo!B%EYuxw@_cMx!4^+xsYADr(TOkDe~)bprP4-0V3}*LHfCN2k2-=)(L=C{-$-s zp%6~U&;dkB=qtT2kZY^8T<-Cye1c*AE#MVT0VDxvAOI&E6PHM0fIL(N{#DM>M->%H zvkPS!O$z9K3S8}hw_vXT3%@X0@8J|7hrmywoA8UYEh>!%O=1IMj+}uBx^qK9wJI$L zr~DDrePGAGg;C^huJ^v;^heXOD4v)(_7J;nS>~$)R7IAdv>Au{4Ozy^<=HV;A>A#i zeYYol6PK#x{nnm7V#h1I+CIvV-!@Lt;2I_$*^Uchkpp)1%9>f&A*XS(SW^|r?hNZD zvMLNn(;f9)&q2CZu*fF8oWeRH8*OUF6%Yfn`x;;vGcLvMH-%>!g*&nSYAT!5xrlQu zXcojZzY8OTCU~sed-B^2?h=hdD`r6g2li2aQMLa3(6-EpVG{2p7(no(>A=8i*cPow zrNL`}yeCO@3N9o7S01cTj91$mvIjb-K4RYs48x)6^N6eIG|$hD?2?JUT!vR?4(RQD z)2qd5?Rr8=7KJ?u{B%oR_Ghz@-^60k3 z(y!K2cs^vp^yE@-F(~o2z~DIc6Udn}hx8caSidHFA8!1)341tqrbx$Zq#w?)Rb`{- z)b!xL@1gU2ro%7&?AoBwhj~y2#5Czwg!hY>x+%dhhsgi9UfO3CT2Lsh+YT;gt#WN_ zPRR_+Z<+OxMxXgSuvla!gI+w+Ari5cM9eFHPps=%XBUgXtZ+1Rey)Lh`fZWH; z%VqvOj@H*4_hef`nnMNz0ZY;G3!9w#p(fyN(XSL0%6I{3+U#(>53 haSb09c>O$3j>o&N=j-`;zMlWl^EX-M2j2i5001>;lpz2B literal 0 HcmV?d00001 diff --git a/data/resources/61/61406b8435362ef4ccb88df70d0abf405fddd87b.tar.gz b/data/resources/61/61406b8435362ef4ccb88df70d0abf405fddd87b.tar.gz deleted file mode 100644 index 497480aa8588a5f7116c7cdb8cd883bdfee58ad7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1921 zcmV-{2Y&b;iwFSIk-lF51MOPfbD~HPzvulcQv1ARiQnGah$B)#uwYEeeWB2xazXKs zY%Y7X|NHeIA}|e_O;UGPwNxd>nWpK_Uw032caax)?xFU_A=v%)F;~4_?{r!>@F{iM z_3S6V8uf0wc_THuZCLC!T8*2!)M__dzunY7NS@sFbcmb~MA-(R7kw|MyR?5)<|h68 zpIm=`y1Dth^>*$ubXL*l-*5N=EGa|X~wsF1n zhO?1sy>#)xiJS~0SdmRir_{79Mi}MPDTmCaYT5Fbm_knZYc=V&D^$^_Lgcw^-BOJ*L$}#{8f(-;hn01*^>k? z^gC)YRaf}!Ej+?~Z;M#1jaaQM#pu+=!a>+WqC!(AU?cVGF=z3Z*f<9yCOU#NNKCdW zo~?|D#kffbV?@49EP~6B_-F5}w+@o{-Rt8i$JX6J!l4{{*KurA=3Ig#RENx)5Z#uE zX{vN+4>Uu*ErMhvu{|V=6hSj31shs`pk$KR5Xa4>^Ubx(Fs6^_+eL#aAE}=I%?(%H zVI#2YV08tBt!9qp!gs!l!QZ(W+pDV7KqFu283XZH+d2?r_VQ_gNFhS;btx!Do&69x zYov&EM68t%J$pzI5_w@b+ZUNNYgHI=ud*><*TApX*dA)- z-W6&pGhz-^fWouMGr^JWq9Kc$!sj`PiGS|F`u#2<@NqrI49b>ZfIbF~NN!d~*;G|* zD5JJThC{8Qh95T2{EISRpo+*K)tVJDSYznjFU9&YcorXzp(+0OJg<$ne00T_>Wk1> z5~TSq_3-CYe1Cx(3Z6I)mvr0Pt=! zvM4L&SxRP&jr(+VElIT1Q@C@MuKi(F8_i6e$TaSHMl-5av>Y4v5dEAW`Qo*Ao_Ej; zzMa!1*zezkQM7vx#g@T#>+Bxvg&!;*Kh9&aF_{qkbdZsJ;}O)vf-Fz1@gpK*#-_74 zEb-&AX!k0i`}x@!h8}wvz8oUQ$GBi8x0fN9f(EiVw;0sFv|YoCf)j@M-uS}MSp{cl zjV7iExq6`|=Uv&t@lmzQ(KK(o_4*BWue{JL6F?I0m-5nY;ZD1X1q`DSE(c#P1_31I z-gUyaSR;KG@bohRT|R=bZfBYXn6E3;G-g(L&02v)yxsbk*>A`VUTf`D=;TkMt6X%c z){ac*$Ir44h2qkeO>L%ZH4jcP%7nF!` zg=w5{8$d!uP^PZt0h4045+wPkz+Y4XMyCjw?TfMm@!?}8ASJ1Ua9|AQIl@K>VSE${ z3pwIu3Gwj+v`F2mVhtMQh})H{i`00f;0OFMo&<}<+fvSVUS9Qjt!mtvYGfXxqN>|d z=p8KFoe3G#M#G$PJ-JhXy4ZW4*vW=jG450T?-egu4Mf3`QDUV$ESb$Url~pzph``f9(1PAkqo= H04M+eb*REm diff --git a/data/resources/79/793bcaf8cfe749f90718953675b919aaac8b9bd5.tar.gz b/data/resources/9c/9cf2f31e3aa318ce06f3896cf68ee514d75c685d.tar.gz similarity index 51% rename from data/resources/79/793bcaf8cfe749f90718953675b919aaac8b9bd5.tar.gz rename to data/resources/9c/9cf2f31e3aa318ce06f3896cf68ee514d75c685d.tar.gz index 3cd2e68b4e6684bed79b55e85eb7a9cbadd7d0cb..c9773ae53f602df56cf568e81286dd604d14f163 100644 GIT binary patch delta 32110 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 GK>r8lPX;{z delta 30125 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 A`Tzg` diff --git a/src/main/java/de/bixilon/minosoft/data/inventory/InventorySlots.java b/src/main/java/de/bixilon/minosoft/data/inventory/InventorySlots.java index bd35556b3..4beac8d54 100644 --- a/src/main/java/de/bixilon/minosoft/data/inventory/InventorySlots.java +++ b/src/main/java/de/bixilon/minosoft/data/inventory/InventorySlots.java @@ -110,7 +110,11 @@ public class InventorySlots { @Override public int getId(int versionId) { - return valueMap.get(versionId); + Integer value = valueMap.get(versionId); + if (value == null) { + return Integer.MIN_VALUE; + } + return value; } } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java index 71710b5ef..db35cc457 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java @@ -38,23 +38,23 @@ public class VersionMapping { private final HashSet loaded = new HashSet<>(); private Version version; private VersionMapping parentMapping; - private HashBiMap motiveIdentifierMap; - private HashBiMap particleIdentifierMap; - private HashBiMap statisticIdentifierMap; - private HashBiMap itemMap; - private HashBiMap motiveIdMap; - private HashBiMap mobEffectMap; - private HashBiMap dimensionMap; + private final HashBiMap, EntityInformation> entityInformationMap = HashBiMap.create(); + private final HashMap entityMetaIndexMap = new HashMap<>(); + private final HashMap> entityMetaIndexOffsetParentMapping = new HashMap<>(); + private final HashBiMap> entityIdClassMap = HashBiMap.create(); + private HashBiMap motiveIdentifierMap = HashBiMap.create(); + private HashBiMap particleIdentifierMap = HashBiMap.create(); + private HashBiMap statisticIdentifierMap = HashBiMap.create(); private HashMap> dimensionIdentifierMap = new HashMap<>(); - private HashBiMap blockMap; - private HashBiMap blockIdMap; - private HashBiMap enchantmentMap; - private HashBiMap particleIdMap; - private HashBiMap statisticIdMap; - private HashBiMap, EntityInformation> entityInformationMap; - private HashMap entityMetaIndexMap; - private HashMap> entityMetaIndexOffsetParentMapping; - private HashBiMap> entityIdClassMap; + private HashBiMap itemMap = HashBiMap.create(); + private HashBiMap motiveIdMap = HashBiMap.create(); + private HashBiMap mobEffectMap = HashBiMap.create(); + private HashBiMap dimensionMap = HashBiMap.create(); + private HashBiMap blockMap = HashBiMap.create(); + private HashBiMap blockIdMap = HashBiMap.create(); + private HashBiMap enchantmentMap = HashBiMap.create(); + private HashBiMap particleIdMap = HashBiMap.create(); + private HashBiMap statisticIdMap = HashBiMap.create(); public VersionMapping(Version version) { this.version = version; @@ -153,7 +153,11 @@ public class VersionMapping { return dimensionMap.get(versionId); } + @Nullable public Block getBlockById(int versionId) { + if (versionId == ProtocolDefinition.NULL_BLOCK_ID) { + return null; + } if (parentMapping != null) { Block block = parentMapping.getBlockById(versionId); if (block != null) { @@ -302,16 +306,6 @@ public class VersionMapping { dimensionMap = Versions.PRE_FLATTENING_MAPPING.dimensionMap; break; } - itemMap = HashBiMap.create(); - enchantmentMap = HashBiMap.create(); - statisticIdMap = HashBiMap.create(); - statisticIdentifierMap = HashBiMap.create(); - blockIdMap = HashBiMap.create(); - motiveIdMap = HashBiMap.create(); - motiveIdentifierMap = HashBiMap.create(); - particleIdMap = HashBiMap.create(); - particleIdentifierMap = HashBiMap.create(); - mobEffectMap = HashBiMap.create(); if (data == null) { break; @@ -387,17 +381,11 @@ public class VersionMapping { } if (data == null) { - blockMap = HashBiMap.create(); break; } blockMap = Blocks.load(mod, data, !version.isFlattened()); } case ENTITIES -> { - entityInformationMap = HashBiMap.create(); - entityMetaIndexMap = new HashMap<>(); - entityMetaIndexOffsetParentMapping = new HashMap<>(); - entityIdClassMap = HashBiMap.create(); - if (data == null) { break; } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkData.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkData.java index ed55a4360..a02a20366 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkData.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketChunkData.java @@ -41,8 +41,8 @@ public class PacketChunkData implements ClientboundPacket { if (buffer.getVersionId() < 23) { this.location = new ChunkLocation(buffer.readInt(), buffer.readInt()); boolean groundUpContinuous = buffer.readBoolean(); - short sectionBitMask = buffer.readShort(); - short addBitMask = buffer.readShort(); + int sectionBitMask = buffer.readUnsignedShort(); + int addBitMask = buffer.readUnsignedShort(); // decompress chunk data InByteBuffer decompressed; @@ -60,15 +60,14 @@ public class PacketChunkData implements ClientboundPacket { boolean groundUpContinuous = buffer.readBoolean(); int sectionBitMask; if (buffer.getVersionId() < 60) { - sectionBitMask = buffer.readShort(); + sectionBitMask = buffer.readUnsignedShort(); } else { sectionBitMask = buffer.readInt(); } int size = buffer.readVarInt(); int lastPos = buffer.getPosition(); + chunk = ChunkUtil.readChunkPacket(buffer, sectionBitMask, 0, groundUpContinuous, containsSkyLight); buffer.setPosition(size + lastPos); - - chunk = ChunkUtil.readChunkPacket(buffer, (short) sectionBitMask, (short) 0, groundUpContinuous, containsSkyLight); return true; } this.location = new ChunkLocation(buffer.readInt(), buffer.readInt()); @@ -99,7 +98,7 @@ public class PacketChunkData implements ClientboundPacket { int lastPos = buffer.getPosition(); if (size > 0) { - chunk = ChunkUtil.readChunkPacket(buffer, (short) sectionBitMask, (short) 0, groundUpContinuous, containsSkyLight); + chunk = ChunkUtil.readChunkPacket(buffer, sectionBitMask, 0, groundUpContinuous, containsSkyLight); // set position of the byte buffer, because of some reasons HyPixel makes some weird stuff and sends way to much 0 bytes. (~ 190k), thanks @pokechu22 buffer.setPosition(size + lastPos); } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java index 13d6b9f23..a4702cee6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketEntityEquipment.java @@ -29,22 +29,15 @@ public class PacketEntityEquipment implements ClientboundPacket { @Override public boolean read(InByteBuffer buffer) { - if (buffer.getVersionId() < 7) { - entityId = buffer.readInt(); - slots.put(InventorySlots.EntityInventorySlots.byId(buffer.readShort(), buffer.getVersionId()), buffer.readSlot()); - return true; - } + entityId = buffer.readEntityId(); if (buffer.getVersionId() < 49) { - entityId = buffer.readVarInt(); slots.put(InventorySlots.EntityInventorySlots.byId(buffer.readShort(), buffer.getVersionId()), buffer.readSlot()); return true; } if (buffer.getVersionId() < 732) { - entityId = buffer.readVarInt(); slots.put(InventorySlots.EntityInventorySlots.byId(buffer.readVarInt(), buffer.getVersionId()), buffer.readSlot()); return true; } - entityId = buffer.readVarInt(); boolean slotAvailable = true; while (slotAvailable) { int slotId = buffer.readByte(); diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java index cb80d7329..83737f369 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/InByteBuffer.java @@ -123,8 +123,8 @@ public class InByteBuffer { return readByte() == 1; } - public short[] readLEShorts(int num) { - short[] ret = new short[num]; + public int[] readUnsignedLEShorts(int num) { + int[] ret = new int[num]; for (int i = 0; i < ret.length; i++) { ret[i] = (short) (readByte() & 0xFF); ret[i] |= (readByte() & 0xFF) << 8; diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java index 122e23ac8..46c586def 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/ProtocolDefinition.java @@ -39,6 +39,8 @@ public final class ProtocolDefinition { public static final int DEFAULT_BUFFER_SIZE = 4096; + public static final int NULL_BLOCK_ID = 0; + static { // java does (why ever) not allow to directly assign a null InetAddress temp; diff --git a/src/main/java/de/bixilon/minosoft/util/BitByte.java b/src/main/java/de/bixilon/minosoft/util/BitByte.java index f7726a05d..6123a4f56 100644 --- a/src/main/java/de/bixilon/minosoft/util/BitByte.java +++ b/src/main/java/de/bixilon/minosoft/util/BitByte.java @@ -23,10 +23,10 @@ public final class BitByte { return ((in & mask) == mask); } - public static byte getBitCount(short input) { + public static byte getBitCount(int input) { byte ret = 0; for (byte i = 0; i < Short.BYTES * 8; i++) { // bytes to bits - if (isBitSetShort(input, i)) { + if (isBitSet(input, i)) { ret++; } } diff --git a/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java b/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java index 3755f75f2..9ccae6ce3 100644 --- a/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java +++ b/src/main/java/de/bixilon/minosoft/util/ChunkUtil.java @@ -26,7 +26,7 @@ import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition; import java.util.HashMap; public final class ChunkUtil { - public static Chunk readChunkPacket(InByteBuffer buffer, short sectionBitMask, short addBitMask, boolean groundUpContinuous, boolean containsSkyLight) { + public static Chunk readChunkPacket(InByteBuffer buffer, int sectionBitMask, int addBitMask, boolean groundUpContinuous, boolean containsSkyLight) { if (buffer.getVersionId() < 23) { if (sectionBitMask == 0x00 && groundUpContinuous) { // unload chunk @@ -100,7 +100,7 @@ public final class ChunkUtil { int totalBlocks = 4096 * sections; // 16 * 16 * 16 * sections; Section Width * Section Height * Section Width * sections int halfBytes = totalBlocks / 2; // half bytes - short[] blockData = buffer.readLEShorts(totalBlocks); // blocks >>> 4, data & 0xF + int[] blockData = buffer.readUnsignedLEShorts(totalBlocks); // blocks >>> 4, data & 0xF byte[] light = buffer.readBytes(halfBytes); byte[] skyLight = null; @@ -122,9 +122,9 @@ public final class ChunkUtil { for (int nibbleY = 0; nibbleY < 16; nibbleY++) { for (int nibbleZ = 0; nibbleZ < 16; nibbleZ++) { for (int nibbleX = 0; nibbleX < 16; nibbleX++) { - int blockId = blockData[arrayPos] & 0xFFFF; + int blockId = blockData[arrayPos]; Block block = buffer.getConnection().getMapping().getBlockById(blockId); - if (block.equals(Blocks.nullBlock)) { + if (block == null || block.equals(Blocks.nullBlock)) { arrayPos++; continue; } diff --git a/src/main/resources/assets/mapping/resources.json b/src/main/resources/assets/mapping/resources.json index 070115206..a12a79c5d 100644 --- a/src/main/resources/assets/mapping/resources.json +++ b/src/main/resources/assets/mapping/resources.json @@ -1,193 +1 @@ -{ - "mappings\/1.8.9": "61406b8435362ef4ccb88df70d0abf405fddd87b", - "mappings\/20w46a": "135401a57a8cb5ce0818c512754db37450d16b86", - "mappings\/20w45a": "203695c4ef2f0a17676e1f1743d0b1d2c3c04239", - "mappings\/1.16.4": "24bb239b0e14ea742436fe9f08ccf179ca88b7d0", - "mappings\/1.16.4-rc1": "1e088b54f971faa54d3f27f61a12fe040b6c20ef", - "mappings\/1.16.4-pre2": "d27ff6aac6271a99472d842fbef83e03553ee2f2", - "mappings\/1.16.4-pre1": "388897795ad27cbbc0fd7b626c803965b35d1934", - "mappings\/1.16.3": "a575d45d4367578ca8e2b70018b3c031c82ce496", - "mappings\/1.16.3-rc1": "c02763afe8aefca1beff0c5e3fb8d77d48624082", - "mappings\/1.16.2": "00013780a993f90a6f68141939f91af02cc31d0d", - "mappings\/1.16.2-rc2": "609a840d4c452210476940e00e9344e2d1f72491", - "mappings\/1.16.2-rc1": "67dbccbf3f3049c6563f56b5de9f46872ddcd60d", - "mappings\/1.16.2-pre3": "c8cdfb870e2457eeec407d356c57986102ba54a8", - "mappings\/1.16.2-pre2": "b1f88258b0d10cbca8db7a5006e533e7f8d1279b", - "mappings\/1.16.2-pre1": "74afcd2e469c6b884cd6cba77396c8153d3b5345", - "mappings\/20w30a": "51059d88d40567727f68705ea010ddc382cba472", - "mappings\/20w29a": "c53e25e119d2404cbe3411369c6b9f265371e7d0", - "mappings\/20w28a": "7d4ba9874038ad167ab98c09ee39bf4c185159f8", - "mappings\/20w27a": "8694af12f21653bc1bd22d89834271e50ce6f29c", - "mappings\/1.16.1": "5f3d51e70bd22728fb9fd26ef8c5894d610e83cf", - "mappings\/1.16": "af2a82457c48763d17575a450e3808f3a3e431b8", - "mappings\/1.16-rc1": "0ab71b56bd55007d8a03436d3642252e85f58626", - "mappings\/1.16-pre8": "02949a83bd37de9bba46b9c03e8efb7b2240c0ca", - "mappings\/1.16-pre7": "39715549b3e31904f5d3f5c2a5ccf0b61635dab4", - "mappings\/1.16-pre6": "2b6b47db379ad28214065a1192a199bfd6bd4aed", - "mappings\/1.16-pre5": "5076854bba855eddf2e74b1ca87e53649c0fbe49", - "mappings\/1.16-pre4": "0d0cdfdfc3e29f719d4c5d4b161442127c500560", - "mappings\/1.16-pre3": "b232316ce4e7b5add7442e76dd226d0b72ff8d3d", - "mappings\/1.16-pre2": "b71eac2496fcffbe8f13ee99af5d1f33da81454e", - "mappings\/1.16-pre1": "f748f7f14c3940fd705281fa9210520254e51ff1", - "mappings\/20w22a": "9a09f7b7fc69c187c63687c0097dd9424cbb08c2", - "mappings\/20w21a": "bd91a8b3534562f28e7fd9d448ceec60944c824c", - "mappings\/20w20b": "f4385e126ad2ea36a82d52a71f057028bffea0a0", - "mappings\/20w20a": "5ac7c5b40c0a13259d2e8f5886b39e2f672b1dda", - "mappings\/20w19a": "ff64bbdc04e5c378f032f15739fb418b18e154b5", - "mappings\/20w18a": "4a0816ef2975962a3de95a5e5c716ea81b760e7e", - "mappings\/20w17a": "28298f3613a2ce7720242126da27ae1fe8089c06", - "mappings\/20w16a": "25df7b68d7a5fd288d8ab11613c77e274a0e04ff", - "mappings\/20w15a": "598f38aa7da8d7139b2fab3980ca3d8418672601", - "mappings\/20w14a": "6b6218e9e2bd463d3f94047674ccff6eb1ff270e", - "mappings\/20w14infinite": "3285db9e8431af974f159aea87ddf8a39c340ef1", - "mappings\/20w13b": "c23f7c357d3109a6566a5ccf2dbec3237f7510fa", - "mappings\/20w13a": "4400239805718f68be44a7593c4bb528a5dc952a", - "mappings\/20w12a": "2412680f56f4ecf33774ea58676db78b7d4129c9", - "mappings\/20w11a": "13c444e9be54b40f018afdf2a89248ad2a016792", - "mappings\/20w10a": "12c99669ecc5a24c2bd70a06bad7fa5a41b07699", - "mappings\/20w09a": "755ebbf9c13f1d8b3dd5f9d68522106dc7aa772d", - "mappings\/20w08a": "c1260870c8a15659c870c81dcccb6406bddf2ea9", - "mappings\/20w07a": "48335917cce12d608ba954bac5c32e3c7e52478a", - "mappings\/20w06a": "79206e553b0fc1f19ec1d87160c886f963af9a77", - "mappings\/1.15.2": "760141d986c6d4f4363aac56426802c2d8fbba19", - "mappings\/1.15.2-pre2": "595d8f2e5daafc064310b42790600c39b056b8da", - "mappings\/1.15.2-pre1": "991fcce3b22b2c8a0e614aca5e8b457e896a1288", - "mappings\/1.15.1": "de7fe2e2253c5b60fd47c812005ef69faaf9dcb7", - "mappings\/1.15.1-pre1": "0faf609dd84d81c58135cdf43f430e83676ec820", - "mappings\/1.15": "b055f178e93382622e6cd97985faee3f26491b72", - "mappings\/1.15-pre7": "ecca2170a62af538a6f9f3106676c1cd5fe53319", - "mappings\/1.15-pre6": "9218a3480df57de8a7bb9e84706b2fb0664ec563", - "mappings\/1.15-pre5": "bae7926afd5239b8c92d2ab036a479127790a745", - "mappings\/1.15-pre4": "28c075af470bb56343543fc12a13457d16b0aafa", - "mappings\/1.15-pre3": "677fc1045b273ea100c49dc8970828639b198987", - "mappings\/1.15-pre2": "cf70a4b82daa2a4fb390a75a80ae1a60ead8f491", - "mappings\/1.15-pre1": "ed04495589c8a4eca828c640b29326451231ebcb", - "mappings\/19w46b": "15e9f7cac5e105ddae1fd38e1ef876ccdd524f88", - "mappings\/19w46a": "c9c36d4f2a2b9acae81952cfedf952080351d898", - "mappings\/19w45b": "7eb55286ab71c48deac3092d1c26c39732262297", - "mappings\/19w45a": "9906b35137314bd0da1b261a1522db0a64e79893", - "mappings\/19w44a": "4823b850300c27a0aa4299b59e6cfae3d36b8877", - "mappings\/19w42a": "098baae5ba0cf9c2dea72b278f6809a6927ab6db", - "mappings\/19w41a": "8498af26e9488e4e38a97a63fa2c510fef61a27f", - "mappings\/19w40a": "ab4c89d1c406fc0ecd8d0117dedb7858a6c091e1", - "mappings\/19w39a": "7f111cd21c4ccc6d2fd3533c2e27d7aa8261b9b2", - "mappings\/19w38b": "07911e8ec2c51a736b4b47c49a6129e8dd061054", - "mappings\/19w38a": "fd55bfaaff5193b2a0f3c9d3b74893c62af0e6ea", - "mappings\/19w37a": "b4edb4bd2d250ec10379a1bfa4bff5c658e8cf91", - "mappings\/19w36a": "43e202efd313765da373014bb85347f4f52a4f26", - "mappings\/19w35a": "f6051daccb09e355145abefa497a826068ee6161", - "mappings\/19w34a": "1cf8d0bee3cdba2a3a2804d2212521ba9f730b01", - "mappings\/1.14.4": "cb02473d3c2592bb31fbe626ea2c56fb88390ed4", - "mappings\/1.14.4-pre7": "96888b0fc949fc0c23d43b8bf4e3883986e88605", - "mappings\/1.14.4-pre6": "918127a4ca6c75e384ff4a0235b318f5bed4f158", - "mappings\/1.14.4-pre5": "f9d92456d8ccaaeb778343d1fa821e82c4d40b18", - "mappings\/1.14.4-pre4": "9b49696c6d566fbdecbc0f0ae893a547e64c1975", - "mappings\/1.14.4-pre3": "ddcf3d83877699aca903582c3a2200edacb7b2b2", - "mappings\/1.14.4-pre2": "58f73ac669a23acc68279be3425e69763b86e2fb", - "mappings\/1.14.4-pre1": "d39a29979bf00d2ddbc933ececf54196772a3c96", - "mappings\/1.14.3": "eb1a3c66eff6bdabb152e5986751f51e119822c4", - "mappings\/1.14.3-pre4": "31dd198b67864060608a108be98f6aa65617c836", - "mappings\/1.14.3-pre3": "3a4b094b37b308c8e1b89d82fc30425d1ae4d303", - "mappings\/1.14.3-pre2": "327eeee3ffaffd27a6b1eec61b213c288e9deae2", - "mappings\/1.14.3-pre1": "212078e642cafdf6be1eef8462b084a862e4fd72", - "mappings\/1.14.2": "bd23992e0c6ba76f6aa8e123bf08eb80af369d18", - "mappings\/1.14.2 Pre-Release 4": "fde42da350db8cbf86c9847483e13db874871175", - "mappings\/1.14.2 Pre-Release 3": "50a13f43de758354897fd21654450811abc47007", - "mappings\/1.14.2 Pre-Release 2": "c93acaf686f0a40d640793a0b56e82de273b1537", - "mappings\/1.14.2 Pre-Release 1": "773c65525f0eaf35a875285ee2c833138dadd623", - "mappings\/1.14.1": "211750d534cac03e17f1459aab6225184f60cb25", - "mappings\/1.14.1 Pre-Release 2": "ff1293551c65034233da76fd453339e51176c799", - "mappings\/1.14.1 Pre-Release 1": "ef73c44d8d3100e3b5d428d70265dcedffa8bd2d", - "mappings\/1.14": "687ab9251d5b0db28ad2fc712434254bde9620a2", - "mappings\/1.14 Pre-Release 5": "b091fd24039be333047eaba9b4532785f6bdb79b", - "mappings\/1.14 Pre-Release 4": "120334251501a378f9772edd474234295bbc45a8", - "mappings\/1.14 Pre-Release 3": "4708e3cbf7e59b1fc4caa4681030e5c74a9fbc13", - "mappings\/1.14 Pre-Release 2": "d76cac61812e58b6fd78713c128c3fe43dcfe61c", - "mappings\/1.14 Pre-Release 1": "4718f5dd3ca546bdfc0ddf39fb0d3a717823dad0", - "mappings\/19w14b": "540a5667d5b6b24c2373480bd7ca336febe1dee5", - "mappings\/19w14a": "3dd508ffbb27e9faeadce06e6442caeb3ca2ee0b", - "mappings\/3D Shareware v1.34": "d53778ed9204e02361476996fd0399ba6c3a4e78", - "mappings\/19w13b": "7626244a7b4d6a860a0c17b9ec0935f55fa051d7", - "mappings\/19w13a": "b4abb080bed89286d9d8cb769e9a030829e16304", - "mappings\/19w12b": "26026b46e5d8afe60a699fddbb1302f1f6327154", - "mappings\/19w12a": "d50337a1503e36ec8b9b9b42c2f555583bb0d78a", - "mappings\/19w11b": "c61345545cf63703d3c899d8bfc8998ddc7d0114", - "mappings\/19w11a": "fe6b539524a153bc78cdfe33b3b5e832a6eb7387", - "mappings\/19w09a": "5ff1c14a8f044d879ea737e925db3de79f9f7cae", - "mappings\/19w08b": "88ac17a8d607e80f25dc430d5b0e21a0a99994a0", - "mappings\/19w08a": "c171b27b3f81e14246f9662f476b302a9f2f56f3", - "mappings\/19w07a": "445ab1c442978b0b3636fc78309a8b8ded315665", - "mappings\/19w06a": "0561ae3129781dfef84e243417407687cbd97d7d", - "mappings\/19w05a": "78db36ecda238996a563002a71f7dbf7b924b661", - "mappings\/19w04b": "2db5b82b0eb0c55bbf8a697d0da78ec27147b690", - "mappings\/19w04a": "f41a11b0a872e7494a1a499ccba708e07efa77c9", - "mappings\/19w03c": "a58ea221598ca8b8c6db74fc431525ce205d0f12", - "mappings\/19w03b": "6f107c0132f11e293886637485f3128fd6df7db7", - "mappings\/19w03a": "93b30e5b14e89d1173e2789366321c8a818effb2", - "mappings\/19w02a": "d92ae16d3ff9eebbf3fcddb627eb5f7edf48780c", - "mappings\/18w50a": "ad6cba046e712e7ba31950fceefd44bdcda6ad05", - "mappings\/18w49a": "b6538f1dbeb7ae819dea48a1e3ad9798356e20fc", - "mappings\/18w48b": "b57ad1a4305bb639393aaca0c3d573d74f09d07f", - "mappings\/18w48a": "bc7d039bfe9578290913f4420d9d373dfe6cd1ef", - "mappings\/18w47b": "bcf862b16a1a5a96559b7327ea2e7a2c73279321", - "mappings\/18w47a": "eb0a5de929a6b988646e99ad536fbfa7cc1c78f1", - "mappings\/18w46a": "9fac42623572a3a50d5c1c1a47a0157af4c0ac70", - "mappings\/18w45a": "97e014a25f74e172ab90939133c3a07297003c2b", - "mappings\/18w44a": "41d36944554c032ee3b958a30b3471d601c3dadd", - "mappings\/18w43c": "86147b4c942d57bd93a62e8025356d41da3be414", - "mappings\/18w43b": "29a11a1721baadad6adadf6ddf9dc75818e0f8a0", - "mappings\/18w43a": "3e7f6e32216fbf38129b87f92914eaa211059a88", - "mappings\/1.13.2": "83face79970a79e01a9571889acfd2cc460f86b4", - "mappings\/1.13.2-pre2": "671a5a8825460b62818607013de5abab63b8b742", - "mappings\/1.13.2-pre1": "ad9e5c015d8cb653a8cad3eb9babd598be8d67d1", - "mappings\/1.13.1": "10e39c3f0c72bb05276d6f99b0ef93205ac048d3", - "mappings\/1.13.1-pre2": "15e74f07060c3c6d13daeeb607bccb560a275a4f", - "mappings\/1.13.1-pre1": "844b19a0677b60090dff193d6f8b5c68f7cf990f", - "mappings\/18w33a": "b2593bf1cbb7cde2b64a09d3f0e833af74f0e719", - "mappings\/18w32a": "b874178f9c361934b28a7393a32a286c4536984c", - "mappings\/18w31a": "47994175ee0894087d9891e22839f9b6fdc39ef2", - "mappings\/18w30b": "57b16a0c6f972b491aa23b60186d5eb71f91eb62", - "mappings\/18w30a": "fdcd9cfba4c179d751eb4e73cdd33bb59f87b9f7", - "mappings\/1.13": "6011e9f868c38c0f71fb5d0764c24a17af6d3daa", - "mappings\/1.13-pre10": "a3ca1325cf6afa82b394ffc4bff3ccbda0b7bc78", - "mappings\/1.13-pre9": "c392d7e63c6ea5024e77210f2a0fbeae32ee28e4", - "mappings\/1.13-pre8": "7f3683cf47d4417b54186aa9ad5bbf66b55d923b", - "mappings\/1.13-pre7": "5ee595080ae104b18f90b1175c0cf2f0313cd660", - "mappings\/1.13-pre4": "093e2d68d308608e091f91967e13498630fe4b05", - "mappings\/1.13-pre3": "8e279bd76e19eab80cbd86024c39d42dbb0473e3", - "mappings\/1.13-pre2": "ec1edd616f98edd758310a106aecf68d26cbf563", - "mappings\/1.13-pre1": "c818c4fb641f95e3e5187ae9e9bdd8c9c9c56acb", - "mappings\/18w22c": "4774d1376706acf49ddf75c3f44e037f736b78df", - "mappings\/18w22b": "295ed5e5e04ffaec977d48736393817ad6310c42", - "mappings\/18w22a": "b2d31faadd6b7197089fdf4b6bb8237e6855b1ed", - "mappings\/18w21b": "f5f6393f5ae4b29c3413ccc1180d5f7cc493fd39", - "mappings\/18w21a": "75de43c794b682ede7cd40d70c94a61a373f1dbc", - "mappings\/18w20c": "555fee42f5e3a24faaa8ea65c80d77dddc2f893d", - "mappings\/18w20b": "12e8c45e0f149aea61b4402ef001a544b2f2e776", - "mappings\/18w20a": "eef52dd3ae193c4f78798d3a97f5a470f0739b2f", - "mappings\/18w19b": "8dd5aa05385f63dfb10d0bc343d18181f77202c6", - "mappings\/18w19a": "eecd26420f947ac300dc6034a1f41356a7df27fc", - "mappings\/18w16a": "6554ef1f103e9bcc98775a66905b25b8f20cd8a1", - "mappings\/18w15a": "0a9fca5a8f13f320755b3b94b0c5819d94be6bb3", - "mappings\/18w14b": "af3103b6f491d06e8c9be15859c29878db02165d", - "mappings\/18w14a": "e916e69db1d442bf8563fad7a15e0fa78588d496", - "mappings\/18w11a": "84d908bc468eaf39be9a556fdb45c5c1c92a517c", - "mappings\/18w10d": "dc32749570c535c7942b00b5b8fef363209dd1d0", - "mappings\/18w10c": "523f157ab69cd645529b77a9b2254c4d4643fe17", - "mappings\/18w10b": "72e28f45037ef000ebd3781d0c0d1ff5fe5d77e3", - "mappings\/18w10a": "a9c32346bff62b3d584b0983b5b688dbd17fda98", - "mappings\/18w09a": "e2a721e8862d5e478254bb68658b4d5610ad22d0", - "mappings\/18w08b": "ac4064c84705b317be6c074dfe7d19ceab3beefb", - "mappings\/18w08a": "98bb1fd4fadac177a53a5eb3aae02ed25f726733", - "mappings\/18w07c": "7f379e43d907377eb1482526509b642f75d2b8d3", - "mappings\/18w07b": "3349bc4f24eb38adbda3afdd7a1db933adce6c07", - "mappings\/18w07a": "cb7eefe2812df54b4e48af075d946209a4ddb406", - "mappings\/18w06a": "1ee0548f7733a4f2732f28752f7a4410a8eb548c", - "mappings\/18w05a": "d0d7b246357dda0429ef3515e8b54af5e41c5ef6", - "mappings\/18w03b": "f1f6754462048515bb0ca46d986c862b2aa52646", - "mappings\/18w03a": "55b34560d15d01c9bce67517e6736fc7110874dc", - "mappings\/18w02a": "ae36420f405cdddf9f2afb1fcbbc138d05bc8484", - "mappings\/18w01a": "f6295cfefc49788684207deee0cde959fb47aad7", - "mappings\/17w46a": "793bcaf8cfe749f90718953675b919aaac8b9bd5", - "mappings\/20w48a": "6e278a76017493f8f1fda6d0aae710752e2a1aa1" -} +{"mappings/1.8.9":"2ba9ab3712e5db6b8395e08ee15acab0a83c6558","mappings/20w46a":"135401a57a8cb5ce0818c512754db37450d16b86","mappings/20w45a":"203695c4ef2f0a17676e1f1743d0b1d2c3c04239","mappings/1.16.4":"24bb239b0e14ea742436fe9f08ccf179ca88b7d0","mappings/1.16.4-rc1":"1e088b54f971faa54d3f27f61a12fe040b6c20ef","mappings/1.16.4-pre2":"d27ff6aac6271a99472d842fbef83e03553ee2f2","mappings/1.16.4-pre1":"388897795ad27cbbc0fd7b626c803965b35d1934","mappings/1.16.3":"a575d45d4367578ca8e2b70018b3c031c82ce496","mappings/1.16.3-rc1":"c02763afe8aefca1beff0c5e3fb8d77d48624082","mappings/1.16.2":"00013780a993f90a6f68141939f91af02cc31d0d","mappings/1.16.2-rc2":"609a840d4c452210476940e00e9344e2d1f72491","mappings/1.16.2-rc1":"67dbccbf3f3049c6563f56b5de9f46872ddcd60d","mappings/1.16.2-pre3":"c8cdfb870e2457eeec407d356c57986102ba54a8","mappings/1.16.2-pre2":"b1f88258b0d10cbca8db7a5006e533e7f8d1279b","mappings/1.16.2-pre1":"74afcd2e469c6b884cd6cba77396c8153d3b5345","mappings/20w30a":"51059d88d40567727f68705ea010ddc382cba472","mappings/20w29a":"c53e25e119d2404cbe3411369c6b9f265371e7d0","mappings/20w28a":"7d4ba9874038ad167ab98c09ee39bf4c185159f8","mappings/20w27a":"8694af12f21653bc1bd22d89834271e50ce6f29c","mappings/1.16.1":"5f3d51e70bd22728fb9fd26ef8c5894d610e83cf","mappings/1.16":"af2a82457c48763d17575a450e3808f3a3e431b8","mappings/1.16-rc1":"0ab71b56bd55007d8a03436d3642252e85f58626","mappings/1.16-pre8":"02949a83bd37de9bba46b9c03e8efb7b2240c0ca","mappings/1.16-pre7":"39715549b3e31904f5d3f5c2a5ccf0b61635dab4","mappings/1.16-pre6":"2b6b47db379ad28214065a1192a199bfd6bd4aed","mappings/1.16-pre5":"5076854bba855eddf2e74b1ca87e53649c0fbe49","mappings/1.16-pre4":"0d0cdfdfc3e29f719d4c5d4b161442127c500560","mappings/1.16-pre3":"b232316ce4e7b5add7442e76dd226d0b72ff8d3d","mappings/1.16-pre2":"b71eac2496fcffbe8f13ee99af5d1f33da81454e","mappings/1.16-pre1":"f748f7f14c3940fd705281fa9210520254e51ff1","mappings/20w22a":"9a09f7b7fc69c187c63687c0097dd9424cbb08c2","mappings/20w21a":"bd91a8b3534562f28e7fd9d448ceec60944c824c","mappings/20w20b":"f4385e126ad2ea36a82d52a71f057028bffea0a0","mappings/20w20a":"5ac7c5b40c0a13259d2e8f5886b39e2f672b1dda","mappings/20w19a":"ff64bbdc04e5c378f032f15739fb418b18e154b5","mappings/20w18a":"4a0816ef2975962a3de95a5e5c716ea81b760e7e","mappings/20w17a":"28298f3613a2ce7720242126da27ae1fe8089c06","mappings/20w16a":"25df7b68d7a5fd288d8ab11613c77e274a0e04ff","mappings/20w15a":"598f38aa7da8d7139b2fab3980ca3d8418672601","mappings/20w14a":"6b6218e9e2bd463d3f94047674ccff6eb1ff270e","mappings/20w14infinite":"3285db9e8431af974f159aea87ddf8a39c340ef1","mappings/20w13b":"c23f7c357d3109a6566a5ccf2dbec3237f7510fa","mappings/20w13a":"4400239805718f68be44a7593c4bb528a5dc952a","mappings/20w12a":"2412680f56f4ecf33774ea58676db78b7d4129c9","mappings/20w11a":"13c444e9be54b40f018afdf2a89248ad2a016792","mappings/20w10a":"12c99669ecc5a24c2bd70a06bad7fa5a41b07699","mappings/20w09a":"755ebbf9c13f1d8b3dd5f9d68522106dc7aa772d","mappings/20w08a":"c1260870c8a15659c870c81dcccb6406bddf2ea9","mappings/20w07a":"48335917cce12d608ba954bac5c32e3c7e52478a","mappings/20w06a":"79206e553b0fc1f19ec1d87160c886f963af9a77","mappings/1.15.2":"760141d986c6d4f4363aac56426802c2d8fbba19","mappings/1.15.2-pre2":"595d8f2e5daafc064310b42790600c39b056b8da","mappings/1.15.2-pre1":"991fcce3b22b2c8a0e614aca5e8b457e896a1288","mappings/1.15.1":"de7fe2e2253c5b60fd47c812005ef69faaf9dcb7","mappings/1.15.1-pre1":"0faf609dd84d81c58135cdf43f430e83676ec820","mappings/1.15":"b055f178e93382622e6cd97985faee3f26491b72","mappings/1.15-pre7":"ecca2170a62af538a6f9f3106676c1cd5fe53319","mappings/1.15-pre6":"9218a3480df57de8a7bb9e84706b2fb0664ec563","mappings/1.15-pre5":"bae7926afd5239b8c92d2ab036a479127790a745","mappings/1.15-pre4":"28c075af470bb56343543fc12a13457d16b0aafa","mappings/1.15-pre3":"677fc1045b273ea100c49dc8970828639b198987","mappings/1.15-pre2":"cf70a4b82daa2a4fb390a75a80ae1a60ead8f491","mappings/1.15-pre1":"ed04495589c8a4eca828c640b29326451231ebcb","mappings/19w46b":"15e9f7cac5e105ddae1fd38e1ef876ccdd524f88","mappings/19w46a":"c9c36d4f2a2b9acae81952cfedf952080351d898","mappings/19w45b":"7eb55286ab71c48deac3092d1c26c39732262297","mappings/19w45a":"9906b35137314bd0da1b261a1522db0a64e79893","mappings/19w44a":"4823b850300c27a0aa4299b59e6cfae3d36b8877","mappings/19w42a":"098baae5ba0cf9c2dea72b278f6809a6927ab6db","mappings/19w41a":"8498af26e9488e4e38a97a63fa2c510fef61a27f","mappings/19w40a":"ab4c89d1c406fc0ecd8d0117dedb7858a6c091e1","mappings/19w39a":"7f111cd21c4ccc6d2fd3533c2e27d7aa8261b9b2","mappings/19w38b":"07911e8ec2c51a736b4b47c49a6129e8dd061054","mappings/19w38a":"fd55bfaaff5193b2a0f3c9d3b74893c62af0e6ea","mappings/19w37a":"b4edb4bd2d250ec10379a1bfa4bff5c658e8cf91","mappings/19w36a":"43e202efd313765da373014bb85347f4f52a4f26","mappings/19w35a":"f6051daccb09e355145abefa497a826068ee6161","mappings/19w34a":"1cf8d0bee3cdba2a3a2804d2212521ba9f730b01","mappings/1.14.4":"cb02473d3c2592bb31fbe626ea2c56fb88390ed4","mappings/1.14.4-pre7":"96888b0fc949fc0c23d43b8bf4e3883986e88605","mappings/1.14.4-pre6":"918127a4ca6c75e384ff4a0235b318f5bed4f158","mappings/1.14.4-pre5":"f9d92456d8ccaaeb778343d1fa821e82c4d40b18","mappings/1.14.4-pre4":"9b49696c6d566fbdecbc0f0ae893a547e64c1975","mappings/1.14.4-pre3":"ddcf3d83877699aca903582c3a2200edacb7b2b2","mappings/1.14.4-pre2":"58f73ac669a23acc68279be3425e69763b86e2fb","mappings/1.14.4-pre1":"d39a29979bf00d2ddbc933ececf54196772a3c96","mappings/1.14.3":"eb1a3c66eff6bdabb152e5986751f51e119822c4","mappings/1.14.3-pre4":"31dd198b67864060608a108be98f6aa65617c836","mappings/1.14.3-pre3":"3a4b094b37b308c8e1b89d82fc30425d1ae4d303","mappings/1.14.3-pre2":"327eeee3ffaffd27a6b1eec61b213c288e9deae2","mappings/1.14.3-pre1":"212078e642cafdf6be1eef8462b084a862e4fd72","mappings/1.14.2":"bd23992e0c6ba76f6aa8e123bf08eb80af369d18","mappings/1.14.2 Pre-Release 4":"fde42da350db8cbf86c9847483e13db874871175","mappings/1.14.2 Pre-Release 3":"50a13f43de758354897fd21654450811abc47007","mappings/1.14.2 Pre-Release 2":"c93acaf686f0a40d640793a0b56e82de273b1537","mappings/1.14.2 Pre-Release 1":"773c65525f0eaf35a875285ee2c833138dadd623","mappings/1.14.1":"211750d534cac03e17f1459aab6225184f60cb25","mappings/1.14.1 Pre-Release 2":"ff1293551c65034233da76fd453339e51176c799","mappings/1.14.1 Pre-Release 1":"ef73c44d8d3100e3b5d428d70265dcedffa8bd2d","mappings/1.14":"687ab9251d5b0db28ad2fc712434254bde9620a2","mappings/1.14 Pre-Release 5":"b091fd24039be333047eaba9b4532785f6bdb79b","mappings/1.14 Pre-Release 4":"120334251501a378f9772edd474234295bbc45a8","mappings/1.14 Pre-Release 3":"4708e3cbf7e59b1fc4caa4681030e5c74a9fbc13","mappings/1.14 Pre-Release 2":"d76cac61812e58b6fd78713c128c3fe43dcfe61c","mappings/1.14 Pre-Release 1":"4718f5dd3ca546bdfc0ddf39fb0d3a717823dad0","mappings/19w14b":"540a5667d5b6b24c2373480bd7ca336febe1dee5","mappings/19w14a":"3dd508ffbb27e9faeadce06e6442caeb3ca2ee0b","mappings/3D Shareware v1.34":"d53778ed9204e02361476996fd0399ba6c3a4e78","mappings/19w13b":"7626244a7b4d6a860a0c17b9ec0935f55fa051d7","mappings/19w13a":"b4abb080bed89286d9d8cb769e9a030829e16304","mappings/19w12b":"26026b46e5d8afe60a699fddbb1302f1f6327154","mappings/19w12a":"d50337a1503e36ec8b9b9b42c2f555583bb0d78a","mappings/19w11b":"c61345545cf63703d3c899d8bfc8998ddc7d0114","mappings/19w11a":"fe6b539524a153bc78cdfe33b3b5e832a6eb7387","mappings/19w09a":"5ff1c14a8f044d879ea737e925db3de79f9f7cae","mappings/19w08b":"88ac17a8d607e80f25dc430d5b0e21a0a99994a0","mappings/19w08a":"c171b27b3f81e14246f9662f476b302a9f2f56f3","mappings/19w07a":"445ab1c442978b0b3636fc78309a8b8ded315665","mappings/19w06a":"0561ae3129781dfef84e243417407687cbd97d7d","mappings/19w05a":"78db36ecda238996a563002a71f7dbf7b924b661","mappings/19w04b":"2db5b82b0eb0c55bbf8a697d0da78ec27147b690","mappings/19w04a":"f41a11b0a872e7494a1a499ccba708e07efa77c9","mappings/19w03c":"a58ea221598ca8b8c6db74fc431525ce205d0f12","mappings/19w03b":"6f107c0132f11e293886637485f3128fd6df7db7","mappings/19w03a":"93b30e5b14e89d1173e2789366321c8a818effb2","mappings/19w02a":"d92ae16d3ff9eebbf3fcddb627eb5f7edf48780c","mappings/18w50a":"ad6cba046e712e7ba31950fceefd44bdcda6ad05","mappings/18w49a":"b6538f1dbeb7ae819dea48a1e3ad9798356e20fc","mappings/18w48b":"b57ad1a4305bb639393aaca0c3d573d74f09d07f","mappings/18w48a":"bc7d039bfe9578290913f4420d9d373dfe6cd1ef","mappings/18w47b":"bcf862b16a1a5a96559b7327ea2e7a2c73279321","mappings/18w47a":"eb0a5de929a6b988646e99ad536fbfa7cc1c78f1","mappings/18w46a":"9fac42623572a3a50d5c1c1a47a0157af4c0ac70","mappings/18w45a":"97e014a25f74e172ab90939133c3a07297003c2b","mappings/18w44a":"41d36944554c032ee3b958a30b3471d601c3dadd","mappings/18w43c":"86147b4c942d57bd93a62e8025356d41da3be414","mappings/18w43b":"29a11a1721baadad6adadf6ddf9dc75818e0f8a0","mappings/18w43a":"3e7f6e32216fbf38129b87f92914eaa211059a88","mappings/1.13.2":"83face79970a79e01a9571889acfd2cc460f86b4","mappings/1.13.2-pre2":"671a5a8825460b62818607013de5abab63b8b742","mappings/1.13.2-pre1":"ad9e5c015d8cb653a8cad3eb9babd598be8d67d1","mappings/1.13.1":"10e39c3f0c72bb05276d6f99b0ef93205ac048d3","mappings/1.13.1-pre2":"15e74f07060c3c6d13daeeb607bccb560a275a4f","mappings/1.13.1-pre1":"844b19a0677b60090dff193d6f8b5c68f7cf990f","mappings/18w33a":"b2593bf1cbb7cde2b64a09d3f0e833af74f0e719","mappings/18w32a":"b874178f9c361934b28a7393a32a286c4536984c","mappings/18w31a":"47994175ee0894087d9891e22839f9b6fdc39ef2","mappings/18w30b":"57b16a0c6f972b491aa23b60186d5eb71f91eb62","mappings/18w30a":"fdcd9cfba4c179d751eb4e73cdd33bb59f87b9f7","mappings/1.13":"6011e9f868c38c0f71fb5d0764c24a17af6d3daa","mappings/1.13-pre10":"a3ca1325cf6afa82b394ffc4bff3ccbda0b7bc78","mappings/1.13-pre9":"c392d7e63c6ea5024e77210f2a0fbeae32ee28e4","mappings/1.13-pre8":"7f3683cf47d4417b54186aa9ad5bbf66b55d923b","mappings/1.13-pre7":"5ee595080ae104b18f90b1175c0cf2f0313cd660","mappings/1.13-pre4":"093e2d68d308608e091f91967e13498630fe4b05","mappings/1.13-pre3":"8e279bd76e19eab80cbd86024c39d42dbb0473e3","mappings/1.13-pre2":"ec1edd616f98edd758310a106aecf68d26cbf563","mappings/1.13-pre1":"c818c4fb641f95e3e5187ae9e9bdd8c9c9c56acb","mappings/18w22c":"4774d1376706acf49ddf75c3f44e037f736b78df","mappings/18w22b":"295ed5e5e04ffaec977d48736393817ad6310c42","mappings/18w22a":"b2d31faadd6b7197089fdf4b6bb8237e6855b1ed","mappings/18w21b":"f5f6393f5ae4b29c3413ccc1180d5f7cc493fd39","mappings/18w21a":"75de43c794b682ede7cd40d70c94a61a373f1dbc","mappings/18w20c":"555fee42f5e3a24faaa8ea65c80d77dddc2f893d","mappings/18w20b":"12e8c45e0f149aea61b4402ef001a544b2f2e776","mappings/18w20a":"eef52dd3ae193c4f78798d3a97f5a470f0739b2f","mappings/18w19b":"8dd5aa05385f63dfb10d0bc343d18181f77202c6","mappings/18w19a":"eecd26420f947ac300dc6034a1f41356a7df27fc","mappings/18w16a":"6554ef1f103e9bcc98775a66905b25b8f20cd8a1","mappings/18w15a":"0a9fca5a8f13f320755b3b94b0c5819d94be6bb3","mappings/18w14b":"af3103b6f491d06e8c9be15859c29878db02165d","mappings/18w14a":"e916e69db1d442bf8563fad7a15e0fa78588d496","mappings/18w11a":"84d908bc468eaf39be9a556fdb45c5c1c92a517c","mappings/18w10d":"dc32749570c535c7942b00b5b8fef363209dd1d0","mappings/18w10c":"523f157ab69cd645529b77a9b2254c4d4643fe17","mappings/18w10b":"72e28f45037ef000ebd3781d0c0d1ff5fe5d77e3","mappings/18w10a":"a9c32346bff62b3d584b0983b5b688dbd17fda98","mappings/18w09a":"e2a721e8862d5e478254bb68658b4d5610ad22d0","mappings/18w08b":"ac4064c84705b317be6c074dfe7d19ceab3beefb","mappings/18w08a":"98bb1fd4fadac177a53a5eb3aae02ed25f726733","mappings/18w07c":"7f379e43d907377eb1482526509b642f75d2b8d3","mappings/18w07b":"3349bc4f24eb38adbda3afdd7a1db933adce6c07","mappings/18w07a":"cb7eefe2812df54b4e48af075d946209a4ddb406","mappings/18w06a":"1ee0548f7733a4f2732f28752f7a4410a8eb548c","mappings/18w05a":"d0d7b246357dda0429ef3515e8b54af5e41c5ef6","mappings/18w03b":"f1f6754462048515bb0ca46d986c862b2aa52646","mappings/18w03a":"55b34560d15d01c9bce67517e6736fc7110874dc","mappings/18w02a":"ae36420f405cdddf9f2afb1fcbbc138d05bc8484","mappings/18w01a":"f6295cfefc49788684207deee0cde959fb47aad7","mappings/17w46a":"9cf2f31e3aa318ce06f3896cf68ee514d75c685d","mappings/20w48a":"6e278a76017493f8f1fda6d0aae710752e2a1aa1"}