From b7aa648e0350380ab085b57035e38f814688735a Mon Sep 17 00:00:00 2001 From: Olof Larsson Date: Wed, 6 Apr 2011 21:43:57 +0200 Subject: [PATCH 1/6] first commit --- .classpath | 7 + .gitignore | 19 + .project | 17 + .settings/org.eclipse.jdt.core.prefs | 12 + LGPL.txt | 165 +++ LICENCE.txt | 674 ++++++++++ README.md | 21 + bin/org/mcteam/ancientgates/Conf.class | Bin 0 -> 2389 bytes bin/org/mcteam/ancientgates/Gate$1.class | Bin 0 -> 572 bytes bin/org/mcteam/ancientgates/Gate.class | Bin 0 -> 5670 bytes .../ancientgates/MyLocationTypeAdapter.class | Bin 0 -> 4176 bytes bin/org/mcteam/ancientgates/Plugin.class | Bin 0 -> 6556 bytes .../ancientgates/commands/BaseCommand.class | Bin 0 -> 4755 bytes .../ancientgates/commands/CommandClose.class | Bin 0 -> 876 bytes .../ancientgates/commands/CommandCreate.class | Bin 0 -> 1617 bytes .../ancientgates/commands/CommandDelete.class | Bin 0 -> 1245 bytes .../ancientgates/commands/CommandHelp.class | Bin 0 -> 2867 bytes .../ancientgates/commands/CommandList.class | Bin 0 -> 1877 bytes .../ancientgates/commands/CommandOpen.class | Bin 0 -> 1725 bytes .../commands/CommandSetFrom.class | Bin 0 -> 1512 bytes .../ancientgates/commands/CommandSetTo.class | Bin 0 -> 1316 bytes ...nymousAndLocalClassExclusionStrategy.class | Bin 0 -> 1320 bytes bin/org/mcteam/ancientgates/gson/Cache.class | Bin 0 -> 442 bytes .../gson/CamelCaseSeparatorNamingPolicy.class | Bin 0 -> 1826 bytes .../gson/CircularReferenceException.class | Bin 0 -> 1550 bytes .../gson/CompositionFieldNamingPolicy.class | Bin 0 -> 1577 bytes ...ltTypeAdapters$BigDecimalTypeAdapter.class | Bin 0 -> 2541 bytes ...ltTypeAdapters$BigIntegerTypeAdapter.class | Bin 0 -> 2541 bytes ...faultTypeAdapters$BooleanTypeAdapter.class | Bin 0 -> 2536 bytes .../DefaultTypeAdapters$ByteTypeAdapter.class | Bin 0 -> 2499 bytes ...ultTypeAdapters$CharacterTypeAdapter.class | Bin 0 -> 2562 bytes ...ltTypeAdapters$CollectionTypeAdapter.class | Bin 0 -> 5223 bytes ...tTypeAdapters$DefaultDateTypeAdapter.class | Bin 0 -> 4065 bytes ...apters$DefaultJavaSqlDateTypeAdapter.class | Bin 0 -> 3313 bytes ...tTypeAdapters$DefaultTimeTypeAdapter.class | Bin 0 -> 3291 bytes ...dapters$DefaultTimestampDeserializer.class | Bin 0 -> 1694 bytes ...faultTypeAdapters$DoubleDeserializer.class | Bin 0 -> 1770 bytes ...DefaultTypeAdapters$DoubleSerializer.class | Bin 0 -> 2069 bytes .../DefaultTypeAdapters$EnumTypeAdapter.class | Bin 0 -> 3016 bytes ...efaultTypeAdapters$FloatDeserializer.class | Bin 0 -> 1761 bytes .../DefaultTypeAdapters$FloatSerializer.class | Bin 0 -> 2067 bytes ...dapters$GregorianCalendarTypeAdapter.class | Bin 0 -> 3529 bytes .../DefaultTypeAdapters$HashSetCreator.class | Bin 0 -> 1274 bytes ...faultTypeAdapters$IntegerTypeAdapter.class | Bin 0 -> 2531 bytes ...efaultTypeAdapters$LocaleTypeAdapter.class | Bin 0 -> 3214 bytes ...DefaultTypeAdapters$LongDeserializer.class | Bin 0 -> 1752 bytes .../DefaultTypeAdapters$LongSerializer.class | Bin 0 -> 1884 bytes .../DefaultTypeAdapters$MapTypeAdapter.class | Bin 0 -> 5738 bytes ...efaultTypeAdapters$NumberTypeAdapter.class | Bin 0 -> 2493 bytes ...efaultTypeAdapters$PropertiesCreator.class | Bin 0 -> 1090 bytes ...DefaultTypeAdapters$ShortTypeAdapter.class | Bin 0 -> 2511 bytes ...efaultTypeAdapters$StringTypeAdapter.class | Bin 0 -> 2470 bytes .../DefaultTypeAdapters$TreeSetCreator.class | Bin 0 -> 1274 bytes .../DefaultTypeAdapters$UriTypeAdapter.class | Bin 0 -> 2701 bytes .../DefaultTypeAdapters$UrlTypeAdapter.class | Bin 0 -> 2708 bytes .../DefaultTypeAdapters$UuidTypeAdapter.class | Bin 0 -> 2528 bytes .../gson/DefaultTypeAdapters.class | Bin 0 -> 14409 bytes .../gson/DelegatingJsonElementVisitor.class | Bin 0 -> 3567 bytes .../gson/DisjunctionExclusionStrategy.class | Bin 0 -> 1783 bytes .../mcteam/ancientgates/gson/Escaper.class | Bin 0 -> 3796 bytes .../ancientgates/gson/ExclusionStrategy.class | Bin 0 -> 317 bytes ...tionDeserializationExclusionStrategy.class | Bin 0 -> 1284 bytes ...tationSerializationExclusionStrategy.class | Bin 0 -> 1276 bytes .../ancientgates/gson/FieldAttributes.class | Bin 0 -> 5407 bytes .../ancientgates/gson/FieldNamingPolicy.class | Bin 0 -> 2260 bytes .../gson/FieldNamingStrategy.class | Bin 0 -> 220 bytes .../gson/FieldNamingStrategy2.class | Bin 0 -> 243 bytes .../gson/FieldNamingStrategy2Adapter.class | Bin 0 -> 1123 bytes .../gson/GenericArrayTypeImpl.class | Bin 0 -> 1105 bytes bin/org/mcteam/ancientgates/gson/Gson.class | Bin 0 -> 13972 bytes .../ancientgates/gson/GsonBuilder.class | Bin 0 -> 14406 bytes .../gson/InnerClassExclusionStrategy.class | Bin 0 -> 1351 bytes .../ancientgates/gson/InstanceCreator.class | Bin 0 -> 315 bytes .../gson/JavaFieldNamingPolicy.class | Bin 0 -> 929 bytes .../mcteam/ancientgates/gson/JsonArray.class | Bin 0 -> 4491 bytes .../JsonArrayDeserializationVisitor.class | Bin 0 -> 6538 bytes .../gson/JsonDeserializationContext.class | Bin 0 -> 465 bytes .../JsonDeserializationContextDefault.class | Bin 0 -> 6393 bytes .../gson/JsonDeserializationVisitor.class | Bin 0 -> 6430 bytes .../ancientgates/gson/JsonDeserializer.class | Bin 0 -> 588 bytes .../JsonDeserializerExceptionWrapper.class | Bin 0 -> 2488 bytes .../ancientgates/gson/JsonElement.class | Bin 0 -> 3706 bytes .../gson/JsonElementVisitor.class | Bin 0 -> 1452 bytes .../gson/JsonFieldNameValidator.class | Bin 0 -> 1724 bytes .../ancientgates/gson/JsonIOException.class | Bin 0 -> 770 bytes .../mcteam/ancientgates/gson/JsonNull.class | Bin 0 -> 1198 bytes .../mcteam/ancientgates/gson/JsonObject.class | Bin 0 -> 4629 bytes .../JsonObjectDeserializationVisitor.class | Bin 0 -> 7396 bytes .../gson/JsonParseException.class | Bin 0 -> 758 bytes .../mcteam/ancientgates/gson/JsonParser.class | Bin 0 -> 3313 bytes .../ancientgates/gson/JsonPrimitive.class | Bin 0 -> 7380 bytes .../gson/JsonSerializationContext.class | Bin 0 -> 340 bytes .../JsonSerializationContextDefault.class | Bin 0 -> 3206 bytes .../gson/JsonSerializationVisitor.class | Bin 0 -> 9953 bytes .../ancientgates/gson/JsonSerializer.class | Bin 0 -> 502 bytes .../ancientgates/gson/JsonStreamParser.class | Bin 0 -> 2920 bytes .../gson/JsonSyntaxException.class | Bin 0 -> 782 bytes .../ancientgates/gson/JsonTreeNavigator.class | Bin 0 -> 4535 bytes ...gSerializationPolicy$DefaultStrategy.class | Bin 0 -> 970 bytes .../LongSerializationPolicy$Strategy.class | Bin 0 -> 348 bytes ...ngSerializationPolicy$StringStrategy.class | Bin 0 -> 1052 bytes .../gson/LongSerializationPolicy.class | Bin 0 -> 2068 bytes .../LowerCamelCaseSeparatorNamingPolicy.class | Bin 0 -> 797 bytes .../gson/LowerCaseNamingPolicy.class | Bin 0 -> 1001 bytes .../mcteam/ancientgates/gson/LruCache.class | Bin 0 -> 1973 bytes .../gson/MapAsArrayTypeAdapter.class | Bin 0 -> 6829 bytes .../gson/MappedObjectConstructor.class | Bin 0 -> 5459 bytes .../ancientgates/gson/MemoryRefStack.class | Bin 0 -> 1776 bytes .../gson/ModifierBasedExclusionStrategy.class | Bin 0 -> 1666 bytes ...rstLetterNamingPolicy$LetterModifier.class | Bin 0 -> 1415 bytes .../gson/ModifyFirstLetterNamingPolicy.class | Bin 0 -> 2673 bytes .../gson/NullExclusionStrategy.class | Bin 0 -> 840 bytes .../ancientgates/gson/ObjectConstructor.class | Bin 0 -> 358 bytes .../gson/ObjectNavigator$Visitor.class | Bin 0 -> 876 bytes .../ancientgates/gson/ObjectNavigator.class | Bin 0 -> 5067 bytes .../gson/ObjectNavigatorFactory.class | Bin 0 -> 1565 bytes .../ancientgates/gson/ObjectTypePair.class | Bin 0 -> 3595 bytes bin/org/mcteam/ancientgates/gson/Pair.class | Bin 0 -> 1629 bytes .../gson/ParameterizedTypeHandlerMap.class | Bin 0 -> 7745 bytes .../gson/ParameterizedTypeImpl.class | Bin 0 -> 1752 bytes .../ancientgates/gson/Preconditions.class | Bin 0 -> 980 bytes .../mcteam/ancientgates/gson/Primitives.class | Bin 0 -> 2851 bytes .../gson/RecursiveFieldNamingPolicy.class | Bin 0 -> 1195 bytes ...meAnnotationInterceptingNamingPolicy.class | Bin 0 -> 1685 bytes ...treams$AppendableWriter$CurrentWrite.class | Bin 0 -> 966 bytes .../gson/Streams$AppendableWriter.class | Bin 0 -> 1501 bytes .../mcteam/ancientgates/gson/Streams.class | Bin 0 -> 6870 bytes .../SyntheticFieldExclusionStrategy.class | Bin 0 -> 1065 bytes .../ancientgates/gson/TypeAdapter.class | Bin 0 -> 300 bytes .../mcteam/ancientgates/gson/TypeInfo.class | Bin 0 -> 1607 bytes .../ancientgates/gson/TypeInfoArray.class | Bin 0 -> 1514 bytes .../gson/TypeInfoCollection.class | Bin 0 -> 1425 bytes .../ancientgates/gson/TypeInfoFactory.class | Bin 0 -> 6172 bytes .../ancientgates/gson/TypeInfoMap.class | Bin 0 -> 1638 bytes .../mcteam/ancientgates/gson/TypeUtils.class | Bin 0 -> 2502 bytes .../UpperCamelCaseSeparatorNamingPolicy.class | Bin 0 -> 1110 bytes .../gson/UpperCaseNamingPolicy.class | Bin 0 -> 1001 bytes .../ancientgates/gson/VersionConstants.class | Bin 0 -> 394 bytes .../gson/VersionExclusionStrategy.class | Bin 0 -> 2210 bytes .../gson/annotations/Expose.class | Bin 0 -> 496 bytes .../gson/annotations/SerializedName.class | Bin 0 -> 452 bytes .../ancientgates/gson/annotations/Since.class | Bin 0 -> 429 bytes .../ancientgates/gson/annotations/Until.class | Bin 0 -> 429 bytes .../gson/annotations/package-info.class | Bin 0 -> 146 bytes .../ancientgates/gson/package-info.class | Bin 0 -> 134 bytes .../reflect/TypeToken$SimpleTypeToken.class | Bin 0 -> 807 bytes .../ancientgates/gson/reflect/TypeToken.class | Bin 0 -> 8908 bytes .../gson/reflect/package-info.class | Bin 0 -> 142 bytes .../ancientgates/gson/stream/JsonReader.class | Bin 0 -> 14912 bytes .../ancientgates/gson/stream/JsonScope.class | Bin 0 -> 1494 bytes .../ancientgates/gson/stream/JsonToken.class | Bin 0 -> 1571 bytes .../ancientgates/gson/stream/JsonWriter.class | Bin 0 -> 8096 bytes .../gson/stream/MalformedJsonException.class | Bin 0 -> 864 bytes .../listeners/PluginBlockListener.class | Bin 0 -> 1537 bytes .../listeners/PluginPlayerListener.class | Bin 0 -> 3181 bytes .../mcteam/ancientgates/util/DiscUtil.class | Bin 0 -> 1715 bytes .../mcteam/ancientgates/util/FloodUtil.class | Bin 0 -> 2616 bytes .../ancientgates/util/GeometryUtil.class | Bin 0 -> 743 bytes .../mcteam/ancientgates/util/TextUtil.class | Bin 0 -> 2989 bytes gson-license.txt | 13 + localexport.jardesc | 21 + plugin.yml | 7 + src/org/mcteam/ancientgates/Conf.java | 75 ++ src/org/mcteam/ancientgates/Gate.java | 166 +++ .../ancientgates/MyLocationTypeAdapter.java | 70 + src/org/mcteam/ancientgates/Plugin.java | 144 +++ .../ancientgates/commands/BaseCommand.java | 146 +++ .../ancientgates/commands/CommandClose.java | 18 + .../ancientgates/commands/CommandCreate.java | 32 + .../ancientgates/commands/CommandDelete.java | 24 + .../ancientgates/commands/CommandHelp.java | 67 + .../ancientgates/commands/CommandList.java | 37 + .../ancientgates/commands/CommandOpen.java | 33 + .../ancientgates/commands/CommandSetFrom.java | 25 + .../ancientgates/commands/CommandSetTo.java | 23 + ...onymousAndLocalClassExclusionStrategy.java | 39 + src/org/mcteam/ancientgates/gson/Cache.java | 61 + .../gson/CamelCaseSeparatorNamingPolicy.java | 73 ++ .../gson/CircularReferenceException.java | 45 + .../gson/CompositionFieldNamingPolicy.java | 46 + .../gson/DefaultTypeAdapters.java | 893 +++++++++++++ .../gson/DelegatingJsonElementVisitor.java | 117 ++ .../gson/DisjunctionExclusionStrategy.java | 52 + src/org/mcteam/ancientgates/gson/Escaper.java | 160 +++ .../ancientgates/gson/ExclusionStrategy.java | 95 ++ ...ationDeserializationExclusionStrategy.java | 39 + ...otationSerializationExclusionStrategy.java | 40 + .../ancientgates/gson/FieldAttributes.java | 229 ++++ .../ancientgates/gson/FieldNamingPolicy.java | 99 ++ .../gson/FieldNamingStrategy.java | 40 + .../gson/FieldNamingStrategy2.java | 38 + .../gson/FieldNamingStrategy2Adapter.java | 38 + .../gson/GenericArrayTypeImpl.java | 70 + src/org/mcteam/ancientgates/gson/Gson.java | 597 +++++++++ .../mcteam/ancientgates/gson/GsonBuilder.java | 571 +++++++++ .../gson/InnerClassExclusionStrategy.java | 43 + .../ancientgates/gson/InstanceCreator.java | 92 ++ .../gson/JavaFieldNamingPolicy.java | 51 + .../mcteam/ancientgates/gson/JsonArray.java | 312 +++++ .../gson/JsonArrayDeserializationVisitor.java | 112 ++ .../gson/JsonDeserializationContext.java | 44 + .../JsonDeserializationContextDefault.java | 88 ++ .../gson/JsonDeserializationVisitor.java | 112 ++ .../ancientgates/gson/JsonDeserializer.java | 88 ++ .../JsonDeserializerExceptionWrapper.java | 71 ++ .../mcteam/ancientgates/gson/JsonElement.java | 338 +++++ .../ancientgates/gson/JsonElementVisitor.java | 47 + .../gson/JsonFieldNameValidator.java | 56 + .../ancientgates/gson/JsonIOException.java | 46 + .../mcteam/ancientgates/gson/JsonNull.java | 72 ++ .../mcteam/ancientgates/gson/JsonObject.java | 208 +++ .../JsonObjectDeserializationVisitor.java | 135 ++ .../ancientgates/gson/JsonParseException.java | 64 + .../mcteam/ancientgates/gson/JsonParser.java | 98 ++ .../ancientgates/gson/JsonPrimitive.java | 387 ++++++ .../gson/JsonSerializationContext.java | 49 + .../gson/JsonSerializationContextDefault.java | 59 + .../gson/JsonSerializationVisitor.java | 236 ++++ .../ancientgates/gson/JsonSerializer.java | 86 ++ .../ancientgates/gson/JsonStreamParser.java | 123 ++ .../gson/JsonSyntaxException.java | 47 + .../ancientgates/gson/JsonTreeNavigator.java | 111 ++ .../gson/LongSerializationPolicy.java | 74 ++ .../LowerCamelCaseSeparatorNamingPolicy.java | 43 + .../gson/LowerCaseNamingPolicy.java | 50 + .../mcteam/ancientgates/gson/LruCache.java | 66 + .../gson/MapAsArrayTypeAdapter.java | 168 +++ .../gson/MappedObjectConstructor.java | 112 ++ .../ancientgates/gson/MemoryRefStack.java | 87 ++ .../gson/ModifierBasedExclusionStrategy.java | 53 + .../gson/ModifyFirstLetterNamingPolicy.java | 107 ++ .../gson/NullExclusionStrategy.java | 37 + .../ancientgates/gson/ObjectConstructor.java | 47 + .../ancientgates/gson/ObjectNavigator.java | 169 +++ .../gson/ObjectNavigatorFactory.java | 61 + .../ancientgates/gson/ObjectTypePair.java | 136 ++ src/org/mcteam/ancientgates/gson/Pair.java | 62 + .../gson/ParameterizedTypeHandlerMap.java | 200 +++ .../gson/ParameterizedTypeImpl.java | 91 ++ .../ancientgates/gson/Preconditions.java | 48 + .../mcteam/ancientgates/gson/Primitives.java | 114 ++ .../gson/RecursiveFieldNamingPolicy.java | 46 + ...ameAnnotationInterceptingNamingPolicy.java | 48 + src/org/mcteam/ancientgates/gson/Streams.java | 190 +++ .../gson/SyntheticFieldExclusionStrategy.java | 44 + .../mcteam/ancientgates/gson/TypeAdapter.java | 35 + .../mcteam/ancientgates/gson/TypeInfo.java | 76 ++ .../ancientgates/gson/TypeInfoArray.java | 69 + .../ancientgates/gson/TypeInfoCollection.java | 46 + .../ancientgates/gson/TypeInfoFactory.java | 175 +++ .../mcteam/ancientgates/gson/TypeInfoMap.java | 58 + .../mcteam/ancientgates/gson/TypeUtils.java | 95 ++ .../UpperCamelCaseSeparatorNamingPolicy.java | 45 + .../gson/UpperCaseNamingPolicy.java | 48 + .../ancientgates/gson/VersionConstants.java | 29 + .../gson/VersionExclusionStrategy.java | 67 + .../ancientgates/gson/annotations/Expose.java | 79 ++ .../gson/annotations/SerializedName.java | 74 ++ .../ancientgates/gson/annotations/Since.java | 61 + .../ancientgates/gson/annotations/Until.java | 66 + .../gson/annotations/package-info.java | 6 + .../ancientgates/gson/package-info.java | 11 + .../ancientgates/gson/reflect/TypeToken.java | 375 ++++++ .../gson/reflect/package-info.java | 6 + .../ancientgates/gson/stream/JsonReader.java | 1121 +++++++++++++++++ .../ancientgates/gson/stream/JsonScope.java | 71 ++ .../ancientgates/gson/stream/JsonToken.java | 85 ++ .../ancientgates/gson/stream/JsonWriter.java | 553 ++++++++ .../gson/stream/MalformedJsonException.java | 44 + .../listeners/PluginBlockListener.java | 44 + .../listeners/PluginPlayerListener.java | 74 ++ .../mcteam/ancientgates/util/DiscUtil.java | 32 + .../mcteam/ancientgates/util/FloodUtil.java | 79 ++ .../ancientgates/util/GeometryUtil.java | 15 + .../mcteam/ancientgates/util/TextUtil.java | 48 + 275 files changed, 13973 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs create mode 100644 LGPL.txt create mode 100644 LICENCE.txt create mode 100644 README.md create mode 100644 bin/org/mcteam/ancientgates/Conf.class create mode 100644 bin/org/mcteam/ancientgates/Gate$1.class create mode 100644 bin/org/mcteam/ancientgates/Gate.class create mode 100644 bin/org/mcteam/ancientgates/MyLocationTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/Plugin.class create mode 100644 bin/org/mcteam/ancientgates/commands/BaseCommand.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandClose.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandCreate.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandDelete.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandHelp.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandList.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandOpen.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandSetFrom.class create mode 100644 bin/org/mcteam/ancientgates/commands/CommandSetTo.class create mode 100644 bin/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/Cache.class create mode 100644 bin/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/CircularReferenceException.class create mode 100644 bin/org/mcteam/ancientgates/gson/CompositionFieldNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BigDecimalTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BigIntegerTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BooleanTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ByteTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CharacterTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CollectionTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultDateTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultJavaSqlDateTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimeTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimestampDeserializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DoubleDeserializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DoubleSerializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$EnumTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$FloatDeserializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$FloatSerializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$GregorianCalendarTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$HashSetCreator.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$IntegerTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LocaleTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LongDeserializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LongSerializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$MapTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$NumberTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$PropertiesCreator.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ShortTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$StringTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$TreeSetCreator.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UriTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UrlTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UuidTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters.class create mode 100644 bin/org/mcteam/ancientgates/gson/DelegatingJsonElementVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/DisjunctionExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/Escaper.class create mode 100644 bin/org/mcteam/ancientgates/gson/ExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/ExposeAnnotationDeserializationExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/ExposeAnnotationSerializationExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/FieldAttributes.class create mode 100644 bin/org/mcteam/ancientgates/gson/FieldNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/FieldNamingStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/FieldNamingStrategy2.class create mode 100644 bin/org/mcteam/ancientgates/gson/FieldNamingStrategy2Adapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/GenericArrayTypeImpl.class create mode 100644 bin/org/mcteam/ancientgates/gson/Gson.class create mode 100644 bin/org/mcteam/ancientgates/gson/GsonBuilder.class create mode 100644 bin/org/mcteam/ancientgates/gson/InnerClassExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/InstanceCreator.class create mode 100644 bin/org/mcteam/ancientgates/gson/JavaFieldNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonArray.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonArrayDeserializationVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonDeserializationContext.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonDeserializationContextDefault.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonDeserializationVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonDeserializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonDeserializerExceptionWrapper.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonElement.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonElementVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonFieldNameValidator.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonIOException.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonNull.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonObject.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonObjectDeserializationVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonParseException.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonParser.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonPrimitive.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonSerializationContext.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonSerializationContextDefault.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonSerializationVisitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonSerializer.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonStreamParser.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonSyntaxException.class create mode 100644 bin/org/mcteam/ancientgates/gson/JsonTreeNavigator.class create mode 100644 bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$DefaultStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$Strategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$StringStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LongSerializationPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LowerCamelCaseSeparatorNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LowerCaseNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/LruCache.class create mode 100644 bin/org/mcteam/ancientgates/gson/MapAsArrayTypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/MappedObjectConstructor.class create mode 100644 bin/org/mcteam/ancientgates/gson/MemoryRefStack.class create mode 100644 bin/org/mcteam/ancientgates/gson/ModifierBasedExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/ModifyFirstLetterNamingPolicy$LetterModifier.class create mode 100644 bin/org/mcteam/ancientgates/gson/ModifyFirstLetterNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/NullExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/ObjectConstructor.class create mode 100644 bin/org/mcteam/ancientgates/gson/ObjectNavigator$Visitor.class create mode 100644 bin/org/mcteam/ancientgates/gson/ObjectNavigator.class create mode 100644 bin/org/mcteam/ancientgates/gson/ObjectNavigatorFactory.class create mode 100644 bin/org/mcteam/ancientgates/gson/ObjectTypePair.class create mode 100644 bin/org/mcteam/ancientgates/gson/Pair.class create mode 100644 bin/org/mcteam/ancientgates/gson/ParameterizedTypeHandlerMap.class create mode 100644 bin/org/mcteam/ancientgates/gson/ParameterizedTypeImpl.class create mode 100644 bin/org/mcteam/ancientgates/gson/Preconditions.class create mode 100644 bin/org/mcteam/ancientgates/gson/Primitives.class create mode 100644 bin/org/mcteam/ancientgates/gson/RecursiveFieldNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/SerializedNameAnnotationInterceptingNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter$CurrentWrite.class create mode 100644 bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter.class create mode 100644 bin/org/mcteam/ancientgates/gson/Streams.class create mode 100644 bin/org/mcteam/ancientgates/gson/SyntheticFieldExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeAdapter.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeInfo.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeInfoArray.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeInfoCollection.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeInfoFactory.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeInfoMap.class create mode 100644 bin/org/mcteam/ancientgates/gson/TypeUtils.class create mode 100644 bin/org/mcteam/ancientgates/gson/UpperCamelCaseSeparatorNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/UpperCaseNamingPolicy.class create mode 100644 bin/org/mcteam/ancientgates/gson/VersionConstants.class create mode 100644 bin/org/mcteam/ancientgates/gson/VersionExclusionStrategy.class create mode 100644 bin/org/mcteam/ancientgates/gson/annotations/Expose.class create mode 100644 bin/org/mcteam/ancientgates/gson/annotations/SerializedName.class create mode 100644 bin/org/mcteam/ancientgates/gson/annotations/Since.class create mode 100644 bin/org/mcteam/ancientgates/gson/annotations/Until.class create mode 100644 bin/org/mcteam/ancientgates/gson/annotations/package-info.class create mode 100644 bin/org/mcteam/ancientgates/gson/package-info.class create mode 100644 bin/org/mcteam/ancientgates/gson/reflect/TypeToken$SimpleTypeToken.class create mode 100644 bin/org/mcteam/ancientgates/gson/reflect/TypeToken.class create mode 100644 bin/org/mcteam/ancientgates/gson/reflect/package-info.class create mode 100644 bin/org/mcteam/ancientgates/gson/stream/JsonReader.class create mode 100644 bin/org/mcteam/ancientgates/gson/stream/JsonScope.class create mode 100644 bin/org/mcteam/ancientgates/gson/stream/JsonToken.class create mode 100644 bin/org/mcteam/ancientgates/gson/stream/JsonWriter.class create mode 100644 bin/org/mcteam/ancientgates/gson/stream/MalformedJsonException.class create mode 100644 bin/org/mcteam/ancientgates/listeners/PluginBlockListener.class create mode 100644 bin/org/mcteam/ancientgates/listeners/PluginPlayerListener.class create mode 100644 bin/org/mcteam/ancientgates/util/DiscUtil.class create mode 100644 bin/org/mcteam/ancientgates/util/FloodUtil.class create mode 100644 bin/org/mcteam/ancientgates/util/GeometryUtil.class create mode 100644 bin/org/mcteam/ancientgates/util/TextUtil.class create mode 100644 gson-license.txt create mode 100644 localexport.jardesc create mode 100644 plugin.yml create mode 100644 src/org/mcteam/ancientgates/Conf.java create mode 100644 src/org/mcteam/ancientgates/Gate.java create mode 100644 src/org/mcteam/ancientgates/MyLocationTypeAdapter.java create mode 100644 src/org/mcteam/ancientgates/Plugin.java create mode 100644 src/org/mcteam/ancientgates/commands/BaseCommand.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandClose.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandCreate.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandDelete.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandHelp.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandList.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandOpen.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandSetFrom.java create mode 100644 src/org/mcteam/ancientgates/commands/CommandSetTo.java create mode 100644 src/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/Cache.java create mode 100644 src/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/CircularReferenceException.java create mode 100644 src/org/mcteam/ancientgates/gson/CompositionFieldNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/DefaultTypeAdapters.java create mode 100644 src/org/mcteam/ancientgates/gson/DelegatingJsonElementVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/DisjunctionExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/Escaper.java create mode 100644 src/org/mcteam/ancientgates/gson/ExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/ExposeAnnotationDeserializationExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/ExposeAnnotationSerializationExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/FieldAttributes.java create mode 100644 src/org/mcteam/ancientgates/gson/FieldNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/FieldNamingStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/FieldNamingStrategy2.java create mode 100644 src/org/mcteam/ancientgates/gson/FieldNamingStrategy2Adapter.java create mode 100644 src/org/mcteam/ancientgates/gson/GenericArrayTypeImpl.java create mode 100644 src/org/mcteam/ancientgates/gson/Gson.java create mode 100644 src/org/mcteam/ancientgates/gson/GsonBuilder.java create mode 100644 src/org/mcteam/ancientgates/gson/InnerClassExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/InstanceCreator.java create mode 100644 src/org/mcteam/ancientgates/gson/JavaFieldNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonArray.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonArrayDeserializationVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonDeserializationContext.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonDeserializationContextDefault.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonDeserializationVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonDeserializer.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonDeserializerExceptionWrapper.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonElement.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonElementVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonFieldNameValidator.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonIOException.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonNull.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonObject.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonObjectDeserializationVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonParseException.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonParser.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonPrimitive.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonSerializationContext.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonSerializationContextDefault.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonSerializationVisitor.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonSerializer.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonStreamParser.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonSyntaxException.java create mode 100644 src/org/mcteam/ancientgates/gson/JsonTreeNavigator.java create mode 100644 src/org/mcteam/ancientgates/gson/LongSerializationPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/LowerCamelCaseSeparatorNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/LowerCaseNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/LruCache.java create mode 100644 src/org/mcteam/ancientgates/gson/MapAsArrayTypeAdapter.java create mode 100644 src/org/mcteam/ancientgates/gson/MappedObjectConstructor.java create mode 100644 src/org/mcteam/ancientgates/gson/MemoryRefStack.java create mode 100644 src/org/mcteam/ancientgates/gson/ModifierBasedExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/ModifyFirstLetterNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/NullExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/ObjectConstructor.java create mode 100644 src/org/mcteam/ancientgates/gson/ObjectNavigator.java create mode 100644 src/org/mcteam/ancientgates/gson/ObjectNavigatorFactory.java create mode 100644 src/org/mcteam/ancientgates/gson/ObjectTypePair.java create mode 100644 src/org/mcteam/ancientgates/gson/Pair.java create mode 100644 src/org/mcteam/ancientgates/gson/ParameterizedTypeHandlerMap.java create mode 100644 src/org/mcteam/ancientgates/gson/ParameterizedTypeImpl.java create mode 100644 src/org/mcteam/ancientgates/gson/Preconditions.java create mode 100644 src/org/mcteam/ancientgates/gson/Primitives.java create mode 100644 src/org/mcteam/ancientgates/gson/RecursiveFieldNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/SerializedNameAnnotationInterceptingNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/Streams.java create mode 100644 src/org/mcteam/ancientgates/gson/SyntheticFieldExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeAdapter.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeInfo.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeInfoArray.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeInfoCollection.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeInfoFactory.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeInfoMap.java create mode 100644 src/org/mcteam/ancientgates/gson/TypeUtils.java create mode 100644 src/org/mcteam/ancientgates/gson/UpperCamelCaseSeparatorNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/UpperCaseNamingPolicy.java create mode 100644 src/org/mcteam/ancientgates/gson/VersionConstants.java create mode 100644 src/org/mcteam/ancientgates/gson/VersionExclusionStrategy.java create mode 100644 src/org/mcteam/ancientgates/gson/annotations/Expose.java create mode 100644 src/org/mcteam/ancientgates/gson/annotations/SerializedName.java create mode 100644 src/org/mcteam/ancientgates/gson/annotations/Since.java create mode 100644 src/org/mcteam/ancientgates/gson/annotations/Until.java create mode 100644 src/org/mcteam/ancientgates/gson/annotations/package-info.java create mode 100644 src/org/mcteam/ancientgates/gson/package-info.java create mode 100644 src/org/mcteam/ancientgates/gson/reflect/TypeToken.java create mode 100644 src/org/mcteam/ancientgates/gson/reflect/package-info.java create mode 100644 src/org/mcteam/ancientgates/gson/stream/JsonReader.java create mode 100644 src/org/mcteam/ancientgates/gson/stream/JsonScope.java create mode 100644 src/org/mcteam/ancientgates/gson/stream/JsonToken.java create mode 100644 src/org/mcteam/ancientgates/gson/stream/JsonWriter.java create mode 100644 src/org/mcteam/ancientgates/gson/stream/MalformedJsonException.java create mode 100644 src/org/mcteam/ancientgates/listeners/PluginBlockListener.java create mode 100644 src/org/mcteam/ancientgates/listeners/PluginPlayerListener.java create mode 100644 src/org/mcteam/ancientgates/util/DiscUtil.java create mode 100644 src/org/mcteam/ancientgates/util/FloodUtil.java create mode 100644 src/org/mcteam/ancientgates/util/GeometryUtil.java create mode 100644 src/org/mcteam/ancientgates/util/TextUtil.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..e040f58 --- /dev/null +++ b/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2e706a0 --- /dev/null +++ b/.gitignore @@ -0,0 +1,19 @@ +# Eclipse stuff +/.classpath +/.project +/.settings + +# netbeans +/nbproject + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/localexport.jardesc + +# Mac filesystem dust +.DS_Store \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..e0d9b68 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + AncientGates + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..a4b9403 --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,12 @@ +#Wed Apr 06 16:59:25 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 diff --git a/LGPL.txt b/LGPL.txt new file mode 100644 index 0000000..65c5ca8 --- /dev/null +++ b/LGPL.txt @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/LICENCE.txt b/LICENCE.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/LICENCE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/README.md b/README.md new file mode 100644 index 0000000..712fee3 --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +AncientGates - Minimalistic and Powerfull Portal-Gates +==================== +With this plugin the server administrators can create gates that will teleport anyone who enter to a location specific to that gate. +You may design the gates any way you like! Build your gate of dirt if you feel like it :) + +Try the ingame command /gate +for more info. + +Usage +--------- +Read the full userguide here: [http://mcteam.org/ancientgates](http://mcteam.org/ancientgates) + +Installing +---------- +1. Download the latest release: [https://github.com/oloflarsson/AncientGates/downloads](https://github.com/oloflarsson/AncientGates/downloads)
+1. Put AncientGates.jar in the plugins folder. + +License +---------- +This project has a LGPL license just like the Bukkit project.
+This project uses [GSON](http://code.google.com/p/google-gson/) which has a [Apache 2.0 license](http://www.apache.org/licenses/LICENSE-2.0 ). \ No newline at end of file diff --git a/bin/org/mcteam/ancientgates/Conf.class b/bin/org/mcteam/ancientgates/Conf.class new file mode 100644 index 0000000000000000000000000000000000000000..c91ea4e78e35cb24ccc1670c4fd24832bbe81b1f GIT binary patch literal 2389 zcmZ`*=~EMD9DY^;IeZlwL`5w|Kntjew%%YXhHz*&9>CB7iKz5W{{~f{R8?(b^5&T#t$j9Q2J@1E4L&KteSC3h`or#UkEgC6TgKyrn3=Mmeie);nexAEE z>`pnBlN&a&b4E_X{-m@$S6Esy-B^4!~PR|;yblxDNm@xEQYGGVYn}xgvtxrRs zCuNzo>At9;rlWJ3p~RiE;m3YjtPUoKgE-_zvxb(P5;SHNGNvtX7)NN=wDT_WM`RHd z_I4@tG`d5y-6C)l5e<7XhTEsRdcR|(73_}Atw{}_RVB=xk1pmNJA@{*3mnG@4Rt-` zNZLBK>Ubwru?aV4+L`Xo=^!+82-Ko3h%TJ+VeggjoiK#%0rj3@e}){6qW zJ5FRrj&@Y+3fzhPW8x+{%v2F<5RIJ`xQ@v7aSYWTm8Wk9m ztYBa7_{}>{_~Qcg2-ICW!U^CX>&3$*d zHLDvd1P5>Wv8>_vPA&?rX~p`?d}@k61ah)pJ9&4G*->Ln-Aa%4W~yOPm=hgjZKYcB+k;i(v)qiMC58Ecnx0)=$MlU{#xK0 zJYfAP$6eR@)VOb378BnIJjC~0O%j_|)Qj6>plVsfEj^##Qe|)9cL(sJhW5>zs{pEU zUWq=+4L;!%aw$W;5jcHv2BNaKIL44_ICCM~ms?0pANPu)Tpo&YQ7Fo_peQ$hq8xWc zIopbIhDk$ma7pWU3Zs$s_wn=)K0bk=$7q@@;=nqd4Ig`iwi2EzqO*i(5obzxp@{P( zTq@#930I4Fsf6oA^p!AB#83&zB1THMwGR^|O#Mk?yD-CNl=}+&hPh-8a*?zUKszCH z(fJuVzrfn}U_Y*tJ4kphD@_m>7e*Ogj8x-&ZPz2rZkn!Bm!6971n>%8rC<=R;dS1~ z*xCt1etbnt{Xy!%@^p_@+y!w5ZdPCJB2v$_TfAde2ooO W(4N|YHh`MuTMDj*p9pXle*OLH0!kvW0O*OPuhtYyVzkk`fnm1d)TL~ z#YT*a6+STdcUsG&8;dlRDHeyuvy?1>V>+ET^tbe7N$gh0nW#g8UO$Q literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/Gate.class b/bin/org/mcteam/ancientgates/Gate.class new file mode 100644 index 0000000000000000000000000000000000000000..9e3909e6494ca239290e5f17c9ab758c5182da39 GIT binary patch literal 5670 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 Ac>n+a literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/BaseCommand.class b/bin/org/mcteam/ancientgates/commands/BaseCommand.class new file mode 100644 index 0000000000000000000000000000000000000000..cfed904e586722c01282c979c444af1c476c78f7 GIT binary patch literal 4755 zcmb7HdwdjE75?sKlUb4>!14@_Fuaou$pQsh2z@|!G&Bj(gtP=vC%cnmV6z)`W`VTT zR%^9rReV(w>#Jh%ffbMhQnXUv)7MwZuH#n1RnW|o%~cLRHhEujuAPcE*^XPUFsse(NtUICj=RTdO_>9-Q*|ony{2=3=y)E` zYJdLQ(x6o$XuAV(e;=)d1y6-aZ_RW_i$$(0?GFT7vdd1}?p+E+Rn;A|(U3`6r6|HO z9gDFJCBh z4jr>mE~A|~7NMk+qg^`g1XHV@V%a2_{01|X@-p42;U0x00g6r_lbG3~BZ~QAX0MKY zSi<7#x3b-tY@foSiAfpgFC=Dmn`24iw!CMu|5}8yc+cx01mhb9#9X9luZi9TS z7rX5`4ugp(G5h=Jrb2DdKVNd{^Bf5XN8U5f!~1u0sjq$y!wK+&if;KTqFNNNZpgqT?0{Uv*^APr*rBXDI9wW6xu+fwlv; zfDe>V(iGD<9jAoe8pX23vl7XN?nE%4u&JFYVdSAQ5@y=Sq*DV%mu2J}D`|8M7`z6k z`i8HrPMuhONXNr?m%?lsZMCv}w&U07h#X2zDUK$@W;uvnm z5aPW@w6(DmC-In$_X!Ki+)PvEw3Th(jOiw_bc$9|CYLy2yT;7LY& zSPE(2{XaVYXU2euN)0WSb0QqoA;TvY6BdAQ;QrWO1*L;HNzPXaq0u z=a>-k7dn24Uy+bzl1e;*Lj@$sp{BF0G4|Ij&*7g{GLk;gWaIe$`gCG z6*8XCycK1I_r>glgtGIdw1J$P(gjMjy(ZQ6Rdy0>nOrtu?YE^znHxa5PGZF>E-hm7 zD_hte@u~4Gga}7$k|w;fRhsb5Mu=;vKq&Wq*+6-}Y@fVe-pbxDiSGUKvJdPpjqI4tGS80hq0T}4H8B; z5JoLiQpeP6Vn@1}P0m)@+{TpM!9aF+9vHs$yaznTONMy3UV1B@zMo@1Sec1%=74uf zC|b@)*e>xY38>+p>{H`d`k~$#2vv=R$_qTdv4bvzxUrG}-F^cHnYgAaXdXdZ%?R!v zLFXvm9-@X604()Z-@_d3_AD>*caMcoi7wA!#U>%aZ+=dao|A)o57W|`no*F>Ef)~2 z9mNTSn>g7V+c*M;uPm3LTmKlxGU{#FOTFDkBYR1P0|D%W7D53U#c7YA3y8Y75X4Tt zNl6HH3lO@+q=Ypnje4N*f@c9J>0o_G)K;D-kX-U}yikyN5qA$U+tD+0vgl$=rbh7K z5Z02`2aiPGeGQLtj*z{Vs6`+5q4U>X#g0*YK!M*^d4p%L!r%2F*%cnahbJ!IFvvRM zuA)(VEF{=8)m+D?hEU<}`Yd?%38^Py@pp==P+)H_k&yu&#c*zwU%TZiW zQ}+foYdHBY!lgnP;-_@_(~1C9vO2 z4Xh#@z2V0o?k^w2+F;bbqicT2(wjUpT53h}d^Orn9sqshMuu?q^FL~be8}MeRz((P znEBHfA`h-IgRk)SRXl>%@hJX@$5c5US5Y>Kx8VsdZTI>KDO8=>hCh&NR3480$Px8Y zZNZ<&k|NrF4S!}$hIvXQ{=&Ipo>7UvdZU7}`KuyaC9K*C?F}p^rEXE7G_p#uN>7dz zYW3pkTU3DJ;0IQ&kmj6E8r0_nO^Yon8o{fRrT@tQ`?NwB49X8f3?0iG+QeW)QcJuN WoowfvXUCW3lDr*-zj1vCfBz3|{cVc? literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandClose.class b/bin/org/mcteam/ancientgates/commands/CommandClose.class new file mode 100644 index 0000000000000000000000000000000000000000..cd7d60ca94f495bb7977b5adea2cdead352c4412 GIT binary patch literal 876 zcmah{+invv5Is)PY`WQQ(xol80x9K^gf`3lB?uvc;3Zt7Rz*VM!Pzy5tGxunmhHTU3zjWV;`2l*5x?V#r@{!OE4ai^kZ}d;47KTt8)n2!!%AXvuX?zK z2HlNBGJYX+q~zGhJR`I@x*elrHtbSZUuNRXBpnE~%Lj?DVR^)pJ+7qnXFp43B8W6^=)UXX4z?X^F|40PYU4cAP_7_kSlJzk zsSJ&;TsNkTh&wLv-t%ad9#9jt$l}*RYd$3U6Y|gWu-$ie@`;MXOKHVeo_|iqHWM3! zSfud;3S`lI(C(1;aq0t`?VqT$zrzjuU#J)Gp6s>Y;>->%|G<@R)8q}>*9ZW#N(55} zH5D$dqe=@jaE$g%`fkw4aPx@j*^J63=vxP9w}Z|B?jEE1(*k`etA-`QJx247&>j+I H0gwIzJ|D|I literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandCreate.class b/bin/org/mcteam/ancientgates/commands/CommandCreate.class new file mode 100644 index 0000000000000000000000000000000000000000..938289b2b82094d14dd2fe2c8154a94e791fa67c GIT binary patch literal 1617 zcmah}ZF3V<6n<_JyW8|OEdh!^!6hmtDP*xKQi@euETUep7WgNoO}QN_qRU)%%i6v$IuAEp6OY! z6rL%3%aMNE6S0g;EATww+mX4FIxC^1eGLVMOD{dMEFzhmV;H;P_)fgUkgwJ@844?b zEsMxwoZ}UYje}u=gJY6G6RtxiBZleb1MyIp!`N}nrW3`BI;JR+m5`XgF&x)WW+)v- zah$+O$|G!>;bb+9;R?TJ-swJ&R=im2=r~0HU+$>9r#a53yyZ~-ICMg3Z-`KMGL~Va zW0oQ3*a~)@<24uri==PMaBUdH%W}gNyE0^89R;ayysjX;FQQwdQxZtWn+%hwaE36H zt_u4WM-?@OslIdvH)Ujn&LDOIpAw8PZpESF_ZA7(bbPr!^tv)^i>@mbEU<*TDMClB zv&}->cSyJ^&6hUkP(vw!Hjv@{AoLWsD;#etMT&z1C6wClaJ-B6NVuMim9n>MBTO@G zHM~!KOB#|$o)%EV0v0t~XP7;Tn9_^m20ow$%b%#(RK}s^Wm42S8a`w=^?Zuuq2p3p zbbL(uxBD`biPT1=h$XD3A-j1*z)gi%<+z1UDYqC5sJ{%CM+fIw?vZ-att=}I=4TAY zDu!@rHtk&_t)QVIH#yd@&Y;IZdWPXdbyT@5c#(wP;P^uEoKQ2iCZkC7=#ng;#W968 z!~6?L{hy@7jBZ;=scY;wao=!kqoU(0n&*nKBO)WcOm@Rq4|a^*U}!}BVCdS{HFOxv zqe4IbF0^F48U|hw+Zb2o9>=%%jwGQ`xf@9;qbs-4aY>tBH2=)$7cArcP> zNlyilm~6$u`e98BvKcS7f?;UMRVTRxhvvAUrUDm8$vnMoK#n|mUC3&*`Z-wx3-x{I z^F-$DE`PL- z<+(k4Qoc=Q51;Sh&LaYRxt0FD`|S7D!EgGpy}ggG3xz#=L+~f~eoL{=L$SVyak9rz zQZFQZ4a~sAX}Z;CXhzTC9?n7Fe8PMtWtTB8p-nZ`r~;cJ=wScA)Nqy7lGZug{|}FV Bj`RQk literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandDelete.class b/bin/org/mcteam/ancientgates/commands/CommandDelete.class new file mode 100644 index 0000000000000000000000000000000000000000..e6f866a9c32b112e7d880bd9411a5b9114d1cde4 GIT binary patch literal 1245 zcmah|*-{fh6g?e65|UvtY%YjnR7@gfkVV9>2?(NLQ81LeHJLUvHJOPs6DWVc|FKGf zOO+qsM_JxZA_ggnm!8`__nv$DoZG*CfBy+!6!|a$3>n8Q8l{3Sc*)>)K?>V1a$k5x z!6}uvZFL&w=H4L#_kKHM}JdXsew zi`zwGWA8u|{A_ABf__RMoCvNFpestwp->!dXc$l&;;#5mk*+W|xyws*W!H;fkRc#V zm8NUBjRd86!ZwAwR`L7=v1##-!ew9tf0v=Xu9ePpC8eqw(r_P1hR%Iqm6wE9aAnz- zj!igCB)5E5+QlrT<)kgvE2TZ*Zu31$s5Ga*tvq+7+BXh^{=OuwMsk<>amGVx5H1V% zz2lY?H$%e+9+5AKEW_Z1Xe;zT8^stV!Wd^5xTvej)9@G}hSq}Rcr-Lm82W2g)y$~h zbD<(FQZRz2L2l)I!2V#%xPFt zv}0;M)`aKrA`SZ(HZ*i%Mn$hRyulXf?eRm>n;yk3Lv+ijxCOB+Yi6IZE2D&?p`%oK zw?Kd*dN;I&Y4@qN2j^)$X7zuAaej&Um;zjKUxpKHh| zS`&!S8bXlpyC@z&8}$3t@<}X95Pjmrhj1a zU3}^U+4{k36$|lYTB>+a#jD2QSFC@<=FUGNeRNGAPBgkPL@#>;y+op~srkfd^KHru G;O!rLRU>Qw literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandHelp.class b/bin/org/mcteam/ancientgates/commands/CommandHelp.class new file mode 100644 index 0000000000000000000000000000000000000000..f8ed79c81c6e7ad36b9a766768ab80b196edc21e GIT binary patch literal 2867 zcmb7GYg<%R6n-~M&Nv(t2SE*r5m9F*WK2m@5HBD~f>0nPT@S-{I5M}+IT+Zz%%&t}csn3L=*4i4)~A&9_Y7za#8`z(d!<0KB4Y3(S~ z^qw+Lo5@Mn$|U#OwmIEvIc^*G3|i@&=}y{OVc+fcwEqW~F>~qUple&XbXy1i6hiH( zjFq$84u$eqd{`mSnIF?ZR4P>8MnD(_RvM^6SYcVaM_dkth=IGXEX>hL`KU2ai!}kQnDItnqz#%Lr~va5geluo&A@sS|zQD|B0 zMReMlhlWuvy6RCA#QG($yL3hiJ1Xp`us13s7kl=gcDwC-HjE~rHwitiuw@DKp?nxI zA;*NgWijdGr&51G=fY?fZnJRjU&6tinY=@%w+eZykRMpW!IGq5vWR7Nd|B>E&%FGO#wk2~PTwY*~$W|tP?ZOSyh1pGh)-0?DKif-FsiQ57a;%iR z+-qPT_A3Ozktjls(7SmBP zDgvUjtm6hA#R*1F&@SzyY|A@GqUT8~b(g2P;}%_O>0NAY9i~~Xgg~;4xLcg z81pQQPEJf%?rc+=?P-HLH>Pb?APe8|#tM!9zn`%$X!~T|&Pq5&4WuM);lfA*@ z!Dxjj!O_HS=`?8+ZXPGLmM2mC9yUztFh_XSId!GE*ig#8-v*8mqaqInGM{S8n)XSq}zu2_+&@D|=?4BUK?tFSs&8eHFE81Lf!Al_qY+$puZY8=v2?lC@820p-tV%Bmq+Plh4 zi_%Gf3LhExSfW-T+0~~Vhb0ukrwVI_nBHD(M91sccz&BZ5KYj-}D?Of!y zt7owGIDvWs_X^P915pBv0&MVsCIXuT*z5x_0to@`^MPgpEdnHcU@L)b0&MqzRsuT& z*eSp-Se20POO#oT2l=^;DFbY$6FU&WPHZ6Bie0SA-55q2(rCvN_Ark+@D=vr2fDnA z41=ylaGtxCan`l~Y3GcAoDB@lF<26qeTggBllToCkptJzRfgl<_)y8XXKs8Xa?~G} zU&cTpGISZkqPome-AEOn{Qv`BMJ@HHloyoBtEetQoz-(Hc`ioqn5XG+JV7PAEPAVG zi}nIP%co~mt`=D1F>8yfK2vr)iKn=(@bsKtfAM@t3^&kDPt0pzfnUU08JAzfco}XW za}~MvpAhKdg}Wyrr>|hDZU)aqUYfxxyo?!~mD%f@&ESozcxMLZ&#Ies7f@MOT>c*6 zMC22~ml6cX{p{)S#vBXE;O%7RdIJIHf(OMotV;rjL;c%t7) literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandList.class b/bin/org/mcteam/ancientgates/commands/CommandList.class new file mode 100644 index 0000000000000000000000000000000000000000..bc13f9bc5486042d5af28f45280faf1fec42ec46 GIT binary patch literal 1877 zcmb7FZC4vb6n-X2yGd9mhL+NnV$imP1c+9xFF_PSThTzPywu|BkPOMfW;gCG9^+5( z5BRwrON%|Hr=R`k4-%i*EGI$4qbDbmnLGDo?sM;R^ZTE_JqK_Tfq|I7lnA>3>?=naUK^K zMb>Hp7jhjBwsh*nds{oI8k8nClej1lvwa=(l8MW>B49S8f0qg0m!5122r69_xUy*Z zEnBv;GOL4T-R*49P}vX}ZT+%|EXD=SHI&_2RDRX7T7l&{0-2t`tAS@Z^%B)8mZMho znp?_SlUugZYHn598`87%IT9vD*vY@bZ@kjx9xgO137`AE-dq&C)*moG$xQr zqkw4xQv#!>`PV?0m_dW6@Vjy&|%)xi4#7emuf+(CU| z&$4UEOJf$P6h6d)f%$*QyzDyLCdyb8NL5|i^_Y8`PYz45wYR%#1;uhh2F%a(O4{ok z6L;|ufs(D3a@cdz|I~9Qx*>WOT@>)KiBC`wI76(L=;3&JQTOOrD>~M_zlDhIqw1VY zJ$&V-CO*?4l7ZXN*J!VqSO>Xiu=iI&V9Cu*&8*K&Jj5pP_N^b;r4%nE@g?D1YbZ}; zCBKf_p+UB-f|)eA@U@9=@GWWV6NY8w`?5~cV+=fc>V~ewmWisyxi7?dwe1J0nFLK@ zQ`t1?unaT=uAkPU;ZRuPtJgUlOzdEniCE2+&AB3QD=I>FbeyO_=_F$8u((wt^%9!l z0%NB#P&0(u?2BIdwp&LOzShGP&Ai!@;pb@IzZ%Hu?y_t}%ulbndtO!DvGi;h?3uVT zy00-#nByGUK#V(%O|Aw{+u<3=<)0v#{}t)XzySthco6P~qka4_M)H}_#~6DQdU%EF zW%>ZeZUX%n!~jOQjw8c4F@#sc8^JY)Yq-u|fg49LMVdAV%KT@Tc=!a9m8Zxb;5C7j zpHY}Tz%79nC@dGAVV2i(zu<#?+@9LU(ms~=ali8>>a7a=bofW%01vo9I-mJsA74Gn zckLwYGPRD?Q*7&7hD|^}{{~WAhmphx#&C%g8NqEPv4X2uqhy`Qc+}LXWJBouD3v63 yVKZqKnV%*cLg-SJyz4E|q%`q~-* literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandOpen.class b/bin/org/mcteam/ancientgates/commands/CommandOpen.class new file mode 100644 index 0000000000000000000000000000000000000000..09558ec3e6ea5afc42adef808772fa1c935feee5 GIT binary patch literal 1725 zcmb7Fe{&N>7=AVlz4UstCDJMtbStPyXcMS{*dR!XC2C5m3B^XMZgSgnY3?rG?SXs) z`3Qaj|7Hf$5oY|C8NZ6(!SUTotOcesFqzxz=H6e=v(NkHuYVr@31AVfg%rbl5Ozvl zTT9`Ugx^-u*Bzl{RB8vFCww<5Ee|$pJ?UFWzl=vkL~`iGFnU?}N?&0Z$>lc~(#wG> zZH!>d!4Zs(fnnT%gQE#9dK}wd$5?D$?Z)CdoCR62@^1uUW`4OgwAj z;5eo!i*Q|r>D(YfSNNUMTI-H%>vFznlD+QW4U;Sz%AaBtN_Sm^!joEtQ3kUNDdlEx zlA;^DT<-|Y4Ijq!EeCIdGfeKtZtuE`+M()c75EhFK(@LLmES3oSxx!!X6&_O*buF* zG-g3tbT>q(%z5}@TJI==T&%syMNoLFC&TR^^h{;%JIEnV44G1?&_iS0p!a1PXR%;m zp5f$SIgOozB1)8}BlSucctl+;p9F5jySqx43>X8SF6TVM;${$YFOD>iq$b`Z-zF#C z9UAd%6-K(q8v*TpPIz6isqzmTe25FAfk^u9s*EDhApp-@-;mJ!hJ}w9N{5yFyk6^r zvTa<%m|2z_lyRBi7~#1UNy^iZUay-FHj`^M^Do|^A?k{QtA>UnxW;g)9*1(C zw_?rxK+Azh%q=EL;cg%!^MdyRQ(0kTT0x~>c}_>AG` zL4LT63T~J-xnSXQhJ{yv-Uw_|4e%<6=L%LG+{7Anqv(;YsY4bHcF2Dezd*sTHj+#Q zUpe?1b%u-%2KEfcNfFP(N#u3Q!6c~Lspp#+d_$HEQiM?_zb7JY8dHKhD@X1r;3fWHw29?e1 z^*yXSL6t1OFqU8TQR`#fyiVdZeuY!W-lp?!#&2`q@7u(0i~N2ten0N}89*b%jQMME zXq_M!lLTlAoJRH>P3NAm{^ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandSetFrom.class b/bin/org/mcteam/ancientgates/commands/CommandSetFrom.class new file mode 100644 index 0000000000000000000000000000000000000000..1740b904d0de98a6168888739fb085fbe9cfc3f4 GIT binary patch literal 1512 zcma)6jdD{(6#h01+%&yFxuq@CqDw$c0`!WCN`t5^6k7wWrld3qxJkC@()$zlZeaQb zybd#(g3Ry$Je1?vB$O7*;AFDd%{k{g-#O>oef7`ZF9Cdx-yNhF{8+dAuwkSKeGxU3 zj7&=ynfQ%33`NvT{Q3T-BF%!1LkDSw3-1k@6NwxIG913DB4w^I4CM<|hV*>glvxa6 z*u^0n9tOjR3l~Qi91$prOc+MX55*(lcZ>@BvPw)TgJWb*q}d=ABRGyR2Oh)G{cbK! zV4M<(W|Lt&-v4`suY3N@Q=(#1)e&(rdcj?%KZBD4slkvhp>iXo+%8B8-w zQ`J0YGv>I7`F7mVJct{@s5qLjKp(pJ2%O>ArVQHGWzx{9ZH)xICwIkY6}3v_R#uU` z-3jYbuZnsgtsB7wRiTwV5B^M>O+`JpRDN%t_Ya3MIBlsnVjWs?pSsASKn=GOC9dy; zyGizvjX3Y(0xr_T+JV@XnqjIJQ}1kTDdUqil-c%IdbZLCd|Yzy8N*3S^B^CWWcCG3 zwd|@x>YeOlE%lO*CSJd@)m2G*t_y$+{O0asQ?D+%X3RMTxkI9}sdJ5=I zVXmWsrqmgHOQ9BFcc7g5#%-&3E{j=wXVv-rTPhk%vQV{b=UmL=I>RBVZ;|wNf+~AE z9hEhU1s6B*Behku+cF~0i+h#%8uLG~1F9tbC5BTut`Z)_kNM+GsioB-PYm7A8JnT( z;+Cb7F>xO*OVeC-v0^J2Nhs+pnIxhmGx&w!To0KGzF}3*g^oK>lbcOpc%9_E#R+!S z!Rr6H=>r8WQ(;+DFl?7K7k9DFaGV-*Cy|tPRfZ%ftHOzVt#)9WF5_1hzu_L~H4%@< zlU|D&L$*Sft|1qcy)9$=^*&>}jWbm05It!?igxs((CX0XUhfQ?E$$#w{1aL4=yQyw zutxg{@6=%Leef4fKkWsdp>=`)K;da*Fp4au>0!#@2z^02M(bJnoTFcck9Si&A%AOI zBIr-(TYQcghAzG=zQF9dcXbEXtfh+|y13yj($d9GUED5uKil;MD(gGAlTLS0rSmh? l*4{9hqAVaTqx9za@JM%KxPfsj64y7ZmUda)C+`#<{0sNJf`b46 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/commands/CommandSetTo.class b/bin/org/mcteam/ancientgates/commands/CommandSetTo.class new file mode 100644 index 0000000000000000000000000000000000000000..729c7774ef02a2c5373716fb6e82aef9d1013405 GIT binary patch literal 1316 zcmah}Yg5xe6g^uCDQ&=7k(a2kzFL$<1$YBzHa~xT`vKq@)(nIgraZrD*UC!pn$6v^6t1drB?7zb z)oR?W1ol#UlNYMs83;36J~U*J2ci?k&^Iq#sTLS|Qt2W?c*(1XD0Q@obnKiAR5pSm484I+%8TJBju}WW4F2t8VhG2HhF2;K$5U+x zhr3n#d1*tGRW|)bvyGS-)ocl0d}v5tR93mqYeES>h+v!{Br6e2FpN{hR#JIMOL^9| z*YGXJD|011H=|)rnK%uL;mEph>dPW1`?9W$1l+}(SH5(sS#rxsS3GOfO2RMjk|VSm z!8t|lOMUMA8CL6(>bG-;_PBd2gm2V^|IYJkI<<=?Qb<#)^&~0N1Hm4UJ*y)wnYfH8 znpNH5+rp>fTQQ}^`}b1WqzS3E?bVho8-tCj2CguS>LmZ?W0Jh4X|7eFbdl}0jHJ@t zpu2`_6tlQt;5x&^K}G94P29w-wgw6wai{(ZmM$8gZj7{)(VBgG0*ejlRD>VFZHD23 zw>L_QdS>Z1S;;8oa7SzM?mqQ&W|%JOOczZoVVUxv+8&Y4hN!CjWK_}|R!ls=Lux6n z*M&=-Q{9T(#r!9>lPC%PF~eBWl7Z!VTh`XP@P$^P6)3uu8O@M0@l>Z0QC=G^N|StU zVpUfV3yAco2m)TE+ct}rCh{ndCIY@mnxMP*h9R0KS(n9%)OtMHt*DHy31aX*KBdwsi*1PVOKw`3cd);8(;$Sfl-LVyv@IocN5BA6vm^XdNa1Pvu%InX+-u@~;t?%P lJZa+D7ra>e!<`@$5Nn*i9X5_(nm!eOcxU!_Uy)Y`#owfSMaTdE literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.class b/bin/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..ebe9b04635d426caccc3698a7e7c2018261c80dc GIT binary patch literal 1320 zcmb7D%Tg0T6g{2Sm~nU`h(SdKO#(9DYZIi30kFvbo8Au>iDP7ET_w9SnJ@?$(zyJLF1>hCl8OSi~1fgqpoLKOV&3#7-KX!R6 zBHN7u-`?^A|Fjb%(U#wC1P=GMJsw57UmY)rWZ*aBkbK=!138BABmRZk9`{{)uXQAx z*g%0{btwJ-5<_7_`ZC^R$d)Vn47u%~Elgx_*MfmN3}X%Hi;qdCCBjd<ozbe^T{!7yjx0ZOEdq{gKk+zYi#4AbR- zn92bI`%KOHzlv_Cl2R%*rR(!J38^u&1DQ6eo1_Cnp2|2oW0)AA!Z35Qou?;PEuFsY ztk4WRXBh2?ulj- zUK#5ay&H0|WYl{N3?t2$JI5dRNjiIGGe|;5)TNrvmFo@+e?zN^D%PlbS^DzyM051f z$kVAvJDXNUYrc93^E+)au;^dV#yO18-s(DF6k~LvN-#lx75tvOGqe_~%RexAiTf9H z=m(hB05e^u6oA|@kB0=o@CYTkd#s}tG-QL$3bIgLPVusRgckbn3fFiAJi${!dq#0x zvdXeZmW&$MTN$D>Luqn}Sid;O6fG;~Flkx)hJ5ZKtIEjfw4)>&2¿?DiLU%F0T W8c44!D*bDXlc86}@P_soy!{Ixb2tqE literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/Cache.class b/bin/org/mcteam/ancientgates/gson/Cache.class new file mode 100644 index 0000000000000000000000000000000000000000..b0a97cd9057e6aabf5a6d83d5dedb0094a5c744c GIT binary patch literal 442 zcmZvYy-ve06orpV)3kv?`FR2cNER$Hl8Obj5-JiytL(Jf$;I^!c%(W$zOI7HU3Tu?5TAI2n_pt}ifYb}pOq>Ys4^2QD&d>i_@% literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..6d5d0d8f124e7cf2272660f8dd32f60f27188308 GIT binary patch literal 1826 zcmbtUTXR!Y7+pI#$!XJ5TMB83A{FqGi;&`_Eu^$fgGix-N=g`c+dbK&2Tsn3Cnq@g z?4RhPPrT}kmX6H$1Dx^a_~NLzc9NF#V#XOCa$Bxh2_B71fl14E>-i8;)0B_g%++X2KAd8whYu z+3ld^JXJRw<<|NS3yih)Kr3NDP=SfH$MUJnyV9%YyK4o3_=4j(;i5n?eRMlh6);ME zO(hV;hy@dtKs24HCh!KvO^gX-2NGNll9+m_=Aq_!#=_e;D=^y0TMX*$24&#I z(hoD$VF|LcrCXJOqvyRvBiwSB@Y>qIn-A8Og&(bi z(tdJBHhZw6VIaMh%kH3#%)N1p9(@W0>XFM*8@X*+IB1qoy^qJ_U?A&(hK zY;Vb+*b!_sQ%cZVpP2Yq;N)w75+fvC7FhTcvjQVd>wdGT0_`m=bScA5$YS2Y611B-Bqpw@| z3^xRZLVwSlr_x8yX@7uOwmRsO-UxovXKzC7xJt5eolikR}t-%uQwHpN! zNc908q%0sD{#Hpq>(Hq(=Oqn&z#Jsj>*OoP=KL?cB9N%~?ZD=HrtNoOu!%0|2EYs* z9OaWsw`v=66yey!5WmBmeZzT#|I^tQNaS`gI&m_$gXA{M=yMpxF5b%Ke!}z*42j|# zzmtRk`^dm7LFV|*%;PK@=X__c1BDBCmotKPQVP7s@d-p;A&H0yVG;z(>^!`W512j8 z?Fcd*KEHEha(??IvR}TyhgXg0Z0tE^a>>{ZF3!f2@m*ZrMlxmWU~U_uDI@zMrguixO)EYq-M<+CF96<(;R9vW_o!<{l%h-pO02FkaVU Y9MQipW+E&8#5wT?A96luT#w-XKe`dv4*&oF literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/CircularReferenceException.class b/bin/org/mcteam/ancientgates/gson/CircularReferenceException.class new file mode 100644 index 0000000000000000000000000000000000000000..06a2cc92ebe744d944cbd64fad0eb1350a05aca6 GIT binary patch literal 1550 zcmbVMYg5xe6g}GlEiocgA?n0>B@9Y-^b5Ly^cZu6%+t#d<7FINmlE7#);owl$v zt`~%5Q~u-my9{iB;b_)0Y=;|8f$J5~s^(vO`*QE)dkUDPk}!&zp)Q$4!4S#StLHbj zh2mrw+GaFEb8ax4i2oi=6c}2vbUBPphCamyAG7w*$Ao2>mV_W8GGrWYDzoBP)IF0Z zw1XltBphKlmeUNeR4H!?Yn5;69xziOUYyv`-al+{wltezD)*my61QH(5+way;c!hC z#eJz69>xD&c1{y|@wP+oH!C!|Ork-Xd0iJO*H;`Wy`b8W!K#p@}k#HV$h~jGIZtl+z>0d?53&m2*yGfWf=LZ#!X_#NV_~j#AAt-&cC5GWf*uDk-AV3&b$=Z_3d`iZ&+b!&vHBMp7kdy0NOwY(JnJ8|!GTm%a=g>C( zY-n<~X*zZ6f1Iy`TgbW=r$?7;WZ{e7p#AEWWj=F_OulF6*nfncj0|J{<~%Y%*;X0) z8#)}EExCG z5mU!ge$`KC@osK>M07n_#hG24T}*vNd?a$NilIn?7B`ftBJ~dA6pdV=qbjb^x|V!{ z?yuXyt?IUijk5E=}7k6G!?;xQ8^=+f|JRuoECx$VJIA)MQ9w`rTtcGPD h@djowM@VHn#63@edAi?@zz(g%(i61wZH)tRiBdNMeXSRYELjLVOyQp{{Os>voFrXyPC7 z$yZHO5>4>Y#DC(S5brDvln)z&54$^a=iYPAJ@?N3{QY$gzzpu{2rub8KrzhsJQPYxomkwfv^NElve9 zB)1e`0A-6N!@|?@Ik8F%(M8*}2tT~(2S5XQCd5rjE=&5vE>L$nrk}^Q97`< zr0vjTIm%ATm2w^KZ5qQOC93K^; z)*hGnGt>TyL^`G!`cIax;}&H*vUb+2V}@ZcI6F}$L%ia(e2ab!YOu$5VsA%kw zHAdfJ{u2h*7xcZkXm~F29+?q69hq6sMzlh4>I=rpZzC)nNk`x9|0;Y4uoSfvMFTma zk|(?zy^8^@*?@BKkX8}bh%{4qi1^KbbPKA6#fo-8CVu22#UEVDkOUm2Te?3mY~Q*lMs!y6jeSpL$fqBGfT}hl=|RH zo>Qq*-u(^c1*?*(RG#yrQaL@d%MQ4^!<)WrPoM2`zVm(O^yz>9`}1!AxA4Hi0AaNm zG;Gh&Qh2uT9VLC;5L$+IBW(KivfLK?u3mq>Cl|NGo|Zv4eP1<}rK3FICd?MHgwb7b zAZ%Co4g2xtu5`48JfYeb;d_Ru%RmWNy^w*0LBedR!?FyITnPDj=TWdPP-4G1R`<5}QcT`AtxYif`)QZ#yLq}N> zek-j->Ucu$*c}OLu{F{xklQYcW*b>+{j*4_CbVk$OHE(PXS!BS_gitL$5pObm>^X8 zk~J_t1zHerN$)|I#C%16TEi~s9;&n0nAw|#APs{R#i913l)SLT(BUhCf z)RSET+%QS;EUBx8FZ6!E$6h7wY+Je18_^ydGMMjvK^IOjggdRP*RZ zeT6XBH@_~ldFXcTYvSd_6zi730CKSSUFS#Lyn1XK=AF$e@tUi=LGcg%7{D3+%^Tyu z0nYMwF+PA%e84+?8*z?*jq?)@o8@)rFN{B}zQOs|yh#Rl9tEhxhgt#nI4Aq)d(bq>n)HRgUm)C zHzMMO!yKP60_4Z&5OXJE|C~@DAIBbD

kem12n#G${^Ns@G=^@#Tp~jA687s_Z|8 zuX%6Kt1YkLO7$PyF^;v~jz*<#TaGil8r@9Y7P{BX{GGww2=yKoqxC+Pcs0c*EMpag F{{cr$$*KSV literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BigIntegerTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BigIntegerTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..db6e9947d024a76c4710c2673c83ccb45f6159bd GIT binary patch literal 2541 zcmd5-$!-%t5PcOdlQ<595FqSZ0$vCc_QfF(vap3sMv*vnoX#-OcpS}i5by&W5CVj_ z@(pka5=e+MABCu%vEw1wp4{N#o-TLQd-bZi`sc5&-vOM)4Fg?-*_vmW)ryj$Y6`bv zOIKM!N#C^mnrlwWC9&$LN6%N}grXyU-yuYw4 zE6PBcQ0$0sn_#tX<>mr)szN<6 zn-Z2nYoM7YmmC(&)UuX3vxurDlwEVDYFv_Ms+5oSn{i~7t6Va$gHY(0tcH2u*;QNF zPg&AI?9!4B5q8wG33!LnmbCT>->VRIwoa7=QJmWSrLsOW)Gl*^Q3Gn(L8_1 zKI|7a%5(nRpg2;pKstO!Hh44@O-)MmB9#(8#qSD z#d_AW%OZz7UkOX9Nx#{KT#j5@n#pBu18$Xg0U8o=3ByW1B3z1hYoi;XTh+?Svt5fY z*x(nmTxcz2a0+J(oaTg@qi4zyzMsWen1nvgvusya9C=Sv`QpF%5BeZ7A2|W;@hlGF z5aD(7PKERHpH7F%EPAVvr8$phF@WuaJ2850ep=?|b=*Eerd(U~DstA=gLobJ0j{I7r z%|o|&Un4Is4zX?tbRh+U-*tY}^{dCWUf!9!60fPk7i2&4M;Es6Z(19>UScbMXTt;N z$2Q*a+lcM_tDPTm*d(t#-!S;N_ys#Z@g^GJRS=*M9;yf6DCU@;rr2F5o)}%j`3;d6Lu<*Yvi|@s@?N7C>t4Nu v;tyQXj-~dFTBR#>#}Qt&Zn|z0t?Q=$PT*>QdJU7odL2`|>f#foF^kM^!PLuk literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BooleanTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$BooleanTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..eb217f427f0b17d08551558efb4fd9757d45986b GIT binary patch literal 2536 zcmd5;TT>HB6#fp0nGgm=KxNm?zH`2F>G|~e-3I`d@t1)k* zXjsCn+0s>Yp=4my1JAW)<+^A(YWex5oLLi_O8UXMyPoGr;l^YJ(uAQ6u_Y`=xOHoB zbwk#afefM4)BHoms7l`!j{QRV2C{^SM1@%y?5GejQ?_fXX+kPrSRte<-kQuIg+UYj z$Ptdr+pb(_Hddv-ELI&!7@qfP!dVdv%lk-}R!{AKFgM>5{$O;J3H>`R68_E4cc_WT zE5}5>Tz8l*OA}h|jUVSrDBE)@o~z_DRW2m!%{j8c$t@c=Mkw|SQ^PFzcEeWo7Lz%O z6PnC1!trjQXxdYOUn7jfqG|`qTqq7~alNWfjKxmuiko26TCotWB?r?knq4Fi2G%;Y zLHIwPY^cr3etsoe=#=9wX9_Wk9WHWn&uVg0XD%@CE5S<6gYW~nqm{!relu{MkWbW% zLNk#^fne69nh7FL!fttzLkSZGE)b4>RiGv=!s4WC38%@))2V;bJ*4yoR|{8EGE;4? z*=(yMmI*hK)%GEnkX2q)`LpTQH@l_lV1SW3cDq)a0soITA zM=pp4Plo@#mx5^xP!51_%fwGOOZX?=deQe-iS25pWKO&G&o>Ma?b#g@!x$mlPhjnU zL$k1=jSdoWRj=vS#;7{7j-syu2k*1D^%0xV=rS=w8=?qkTwa@pNgrsn|1mC zv$#{5``O^ed*Hg#56ez+(?1|g_Vlbvz)Tb{c2c9O)uv$JRcz5pwt!zlm& literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ByteTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ByteTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..38f18b808f0fc45daea223844d3a5996f6e9936e GIT binary patch literal 2499 zcmd5;TTdHD6#fo2USpPoa7k#AwltTlJ*6vR*LeRe^T|OFMX|gX4l4RV!ZUNFP@z|Z229P0K-mqP{*{JPGZ(Hm-k}$GSuLx&HFfGrU#-#e*_6enpp7a;cqDUAxjgRnS zcB8F}maQ0>dvf1lp)4(Bu{U#6DWUATyIgmbe4&cDc)wLg*0`oc1LK5z&jdBiGtaKs z%06Nl$8b%{I6)YX<`K$S)Osg;ufnyDBo!pdA}CI3Yrm|QCnC!oITMUZmuYh|KDXiagXM^9|f4Sn&lAo-a?mGPsL- z20kTZV?CRBnaCo?C8$cZkFiLWqA z7-A{PcJ0uSo1(^Yy!yX1NqALq0)($ke2mGUf!j$m*CTD!ae(4A?RsYZ!=<4kTQo6( zQNn7BY8Sa4b2}Pwh>$7Q8(u{|w)LGn(ZzLItH51cwyUmC4Uf0Ij_A-*CiYOY6p-G0 z#638j3m3R`+fCUOfMBkXIt=t&S)1q+*g)N}vz@F!-tFcUnJZ zY#Zd6#Ut_9pFe^53xD+C691;OvF{ID=5I6HfMHzW89#a$?+Pcl z`ZG_W0DlGm`EXMcfVblVTn|78a055lL)$*YM+`^0aoO?-+mbxH6%ak+FHMv#9OKTf z$e-o;E5egL!7NB<9d^a<=S0f`uk~q3Jc4FT6$I_|5r_TBxO_<6R!Lbh>n< b?xoYq2`mS!D_9N2$9Te{u0P=^){*%ayM?zk literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CharacterTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CharacterTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..4710322b17313e8011ac2078bcb7326168632327 GIT binary patch literal 2562 zcmd5;+fo}x5Iv1#tq=<)ToU3Wj^o&gF2G_tnApM)A}}$bY^UU+DvyI0#8RsjwL7A4 z{vl;op7RmO3wAkGsXXVST<%%j1|n(6n_o1$y>t3>pYG|=zi;3C4d6C@v@k^2s0UT2 zR#8&a9N|}7>8q+xGIXk8-FMdIzG!&r+4Cd0wkM9148j|w0}%)Y1cuc@k}!TKj)mh1 zzv?{MJ(Lw?Aw?(*B-mn>vJ70|xxdK3LYgoa3s{$72SP|KyS}Sd2#IWNhmb7Q_hbeM zjM^ARhH!b?_2uJ6ZI>e!yPhOWY}YHo+YwC5?=53e9k?N3b9*5DMFlAmhC4wLUS_wu z;&cQo8pc5Gdn}owMJ*1F!PHDBx9*qfzLF=Zn2X14c(TSNE?Sr-5>Xe#^!?YAe$(u6PgKwmcI|&hTiek=Zz@$Rl09(88AlC%zgY2xSMA!A*Q^;VVKm z7THS9Mix23SXHXEuoFvka!MH#FlS+wFxjJ3ZOp^r(i{t~!6np9Q0kXh@{l`+yDMI? zw&v`(*&5FX_u^rFgeIg_y{rP)uM(!RW_V3&F@q)Cv+yks1tUjKgrSZ5SR{%R7-7mocufXbBAA5-h&y`I^@kA=^gy z&Eb`Jy_A0i`%iut!WjRiv@x-S%lvFNH((qe@Ec#3nB-p#{)yctc^&=>Q$H78;ln@p z#dL5#a*%IsYB}KT_!w6rr^EOJpE5$*KEqXZN4lBW@&((H{B}Jeddg3lC|x+kjn~MZ z=UFv)(jA^O7H})#N%Q}kCQq7q?nFG_V3EJ+G!}T(8l)!Z6nD@2UN=NYHGPk-ag@dX zM49CnqbT!**|}3JpYy~VT29WE@e^2Su@_pXk$mAFM8MVlKrPf-3wV=PEuAji_q|J} YKPOO%Sl6);tq-xutFAxc2W%np4i}Nk)Bpeg literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CollectionTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$CollectionTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..6baab764cc70271b5c182a628d9597e77396cf01 GIT binary patch literal 5223 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 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultJavaSqlDateTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultJavaSqlDateTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..666d71dfd2429bfd438453c244bc86f7af4a22c0 GIT binary patch literal 3313 zcmd5;YgZFT7=A_q3n3~-P{ArusLe$US`|(3LP1(7C~YW}-j`$uipZ7BJ_dmb>2H+xW4f_P{R_$`O zQgo$W$?8_okd|B4UFl@YPSwgz%T>K@x{Hr%aJZJYlsN+ zt#d7F>Q*^>Z)IH;T@76VnLRDd(p*8>hHe^PNkZ!uIM-HTS~?9Cfv(l6UC~{EBXb@A zS3YvH3g3(;&vVCwVHxfXfsSNqNgy&+Ey*Z4a4?2m#55cd7;35(j7rUv%>%k|SfF=) zem+q;n|RE>DEcscv*9F%$ta3iJ)B}NIG4voRaB$AB%c`*E_l6OU zn(i7^YpQA~+ViRQdbdqkVYcO?NZ_=FQv&@>?whPD_C^Fo1Hg6H2oR@2kORUsye^R5 zlQ@NV!8R&}YdmD^M=`)`aO|Rrk7vHY2nln^z`fOiT0IuBwu>MEt>`-~Fy7wlogClA z7E__r$kR#3_eSN1hbWv<0{aWDUVJdG*SvhuaDk#-z%{(d5@>3M(Q3FXaJel(tw3rR z7dYHJc5%(Fe(C3NZ>d>_0^cOtv#=BUkb_~EFOhZ4(%;2okQAXHMsGhV%9_eeN5h0b zwypOIy6wn@RyWu$PA#sgE zD2QPix7k+8(rpI5KiML=Rh_&Y!#lVm&{Zrv9|sc9$T*ds6ks41uUs!K4k5Ldt)PS z*d8@3bJYXoHS68X)BZZEl@Y;hPZPcdJNe-Yh?4!BO(Vh?5KnL6KzbW}%klUY z`hUUEA1U33L4F_LDG(_>_tJbeWiUjU(x(=V<28#Wh3dIadbHs`BROV zO$_Hcw=udr*tvx>gOR_U@bi=gx~VwK?ZY_jjUArJIAK9#`7|6uTwK5~=gRCQ5B^AC zmPYUfk{*;1q>$!$N|wP{f{4?>b2v|pETzXGp3y)jsn9T{;i861nxaU<6&}E>r*e)P z6(4!UjX1)&@?<9S2S$Iu{%z!!+%LsQQ*b6&vXO7d2X*?EnA( literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimeTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimeTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..f00d062f2cef2c48eb8b6e81bbae734c2027bd78 GIT binary patch literal 3291 zcmd5;ZF3V<6n-vEyCn@!LJJhc23l*H0IA4}Bo(bKL29AJgi1kyZF-w**=)k@2Em`; z=;&vE1v=W!*ctKVn?Fi??rvT&bn%l;XM1nX?s z7Fkc8;TO|}Ww@6Fdg7DI0-@Q;nhc`{`yv=XM8kf8BQ4dOQLdV@WuPAi1j40Kx?D~> zPD~GD5W`CIpulk4_vs~_b8W*aW+s<+L*Q@(yAc-Hw_sTEdab-F?YzEfN`dG?rJ$S3 zI+Nz_x-jIH3`gMV!j8!|zz;46v)jt+w z&>{!cn*5w`{A?64{*j@;o}8-}9$eF_9#J&BMNvoK8r~-LTbk|BYB(owE)bw@L29@l zaG+&2U$QHo`ve|XYxSSNSMgvJ8ntgruszIIU|p-_JCLlCqOFMG%a04Ps<`QBm=;I{ zX1}D{j%;f6gLC3|z9eI+L@}pSshMlBRT2l?D*RBq3%OOFT#4XATovf8su){c(J^j(P+N@>#z(lOVL@Q8SH9+(2(Dw1 z{H1R-1H5rKAI21JsA={w2V;DGa#=%OU@9=5+!M>yA2(qOBZp;W<`ec#`%rB1hI3KF z3g3D`c|*DrdHUaAx3Z&OolwliZ(7EDF<9*-ETU&sY@T2*VksafKH`hJ#GKK%#!%`V8Sp^nqTT@J<5 zient;IiqOlZq4Rr-?q)3MlykAYYawdPy6c4L38O}&8%+v0+FkhCGA;LcO1!KRSjyp zE{SsTH>8~xG7b;+H+G>H8h2538R5OJmk+Nzl96{T+R2Y%g0*;wL799l_-ephR96Qk+g zZH%vs^lo8dB=pBqKF{c&pNgaWd=w|Vwa0TAWmph7-UaiBikleaUb#K%g+EqzODA{} zaW9lHOd>&hN|wY)1`%a~r*N7YDN2t*Jg0+RLZM+w!x;@{H3gA|^E5!ZQ#s8K6&@Ld zjX21?$|Rfo4ddTo&o(kE(Ra7--m@1{dw&yImE9Dx+r<19mKq7BL)*x$jD)su^BJv; z;2gby&qZ(D&);d>;y&%Ie)1;>3dC(_;tuh?ixF`T6XHJ3bDtKgJkkmt7?=F$nqXvc z8+SY~viP(PMwVcFMldFLW4()e1Y?>kxDTDtC|J&*Xa95FiF{mUJX}^AxICv~$OEkY zLZNkQaE55Dy@(de5aJ)upGclOwF&u@d!IjjUQC>!o&?lCh9YH(f62PmKqC1orj%mo ZrHYJZ!!z*!rni=1aa99Lpn`|!{~N;KnO*<@ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimestampDeserializer.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DefaultTimestampDeserializer.class new file mode 100644 index 0000000000000000000000000000000000000000..a87cbd266b2f6f45b17feb762d37fef065fd14f1 GIT binary patch literal 1694 zcmb_dT~8B16g`(NEG)HrC<=n#sHIRA6-6x}A%GE5#e@dqPm zAZlWK_D31->{5!MwrY6T&Yju2_v4&%r$2sv`3B%F9-8PNJgWpHyX+__%C_(wSNf_X zlnm`sSn=&;xh-m*D!i@A#iFPx8HD5YGq)^5CCb%h8Op#Fp8HM)CJaLVj(8(%PxvK! zeQQTL%0w3-+cMD_XFDE<&^7P+u38`@(i58mW2sV<782-9!bCTrFYo&Dd9A!9gM!%d zBw;XLafG)ixES6a9vbSk8xq#@Ez{R~`rAHpgx+GKZ^DOk>jb*L6;GBK-dw(cPawBF z2FTU`=h{bTAS9Gq@s}#Tl6xvQ5l0MnJ-bk6g)6jH_8eK&j-iQj1iK{!y22MC2<6dN zCe9O5QL#1UdiFBwq8G!sXkvsg*EU-7YLn>4C}Hyy06Xman9_14F0l}znty}C!Vs<` zaTV7HW=SfIQzWf53uCyUH8sv6ORq&*+hHsSnf8R#DdnJwDO}$!5QhK6FFQFgV}wWT zV>gG7c{Pem1dmyq=ZG49^Zpb-{qMq>uwj8!rwJcmHEvXDfg_)|dQ^v-4BWJ4jnK2< zmVBXV0lU3C24#Ge{L_%gV7}R8EHF~ZRo|Dvk|)AY@^m~P%(T>VlX?kb_0#&$H7Jt- zYmEiQPbc5D34Zw2;$070Hm}5MXXXIbCpJ2eec8LmCWUrb^OM*kugl08vKnhP=5zdJKImEFg5BWu(WN7XIqhzZO@ V)*b%;(I@vX%d3_N;XdZj{R>TJ<=g-O literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DoubleDeserializer.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$DoubleDeserializer.class new file mode 100644 index 0000000000000000000000000000000000000000..1c6c9b6ede2b05e98f01e2597b00575d0a73cdc5 GIT binary patch literal 1770 zcmd5+T~pIQ6g^8zQ%aD6p!kgnnzld?{K7KMFfEQc9bl%&`x3S>Oqz6(Erb3E|BAk# z@Jd+xdS?)M*GzX4c5S;G)R#Sd(=X-UDGCig5yc+%!l zgr*((o>>(Q-gf2gyO!8E;4LYFaIWgN_gzsHp$HuAI`2iGAxNWmT#SqVYAlv`txO1W*9x_X3Oxw=nt#1+H^&eq%7CEssy6pk}ReYvpg7~ zs|%No?^S$Hiep(WBoO0D5Wn2!u_ao{Ez~f@VD?R0@!R1+D1Jxfa0xRSE;ASdBRiSt zxPq&sj4k9w7!!$#R?Xo$Zfdx3sv}|t9k(#cpdE3yEw&pB(?+#tKIucE$WR=t(l4C} zRg$jTja`PBghZ!ACnqbGkzs8x_FpQ%kd=O2299SlOc}`pVrw~vA{I21s9n3|uedx6 zbu7YQ7$eo{PP65TE#9Oa{%<-eo?J?RVOd8W6AUj0bo)7nsIaF%N2yoqemk(l3r7v_ zOpoX#r5VFW-LX9`+X1<~NmR5$@n6a(g7pMIXKJ3)+~}`7PXtkA1WnEwW!<;`d$6Sk zCIBwN6A(A{uRq0W5Ya#{>Q*lIbl|f6Us!@b);NXP7Cw7PqUM zvY_|gU?ez_v_-Kz68FC$CC@N-F`baOejd@Y&kWxs%LD$xY5AcMPtW9jFfraV)A2G3jqPbyYf{;~j?iLDE~cEgIY|c#XEgu<_gyEd^gklHulH zo*8%~h(~Q{*Mt|t5~kEG6UQ=ENEf`-5>Aa_Wth-Vki@`i!sI8AV|Zdn-*DW(;6{gp zT{FTQ)k|9#+&5anGq%m0is37D)}__uH*4&I8w!tBt5a~@#Otx(qttCtJg?42v;48bsE2Hg7kDR1@Mf6j$H(Yy}9 z|J?LHxsYKyj<;}=jAOcO&k~zbom{i8IDfK=Ng~gb4TlG9kEWSJ(EG_;TE#w7!dn|! z-Yd>Jl_$RCIKnI1-1mjA<4cAIBZIyID;+Cgz`K(a0qA zHZevQ5KEsRo=*IN>7VFr3~$i=s+y}M5Ygrk)oxP+5O3YtcoWy@jn?4?MWx?|Vzd|Y z2Sn%sO6i|5{Q|3*W6b`FJ1;O5_U6CG!YS_WpJHkM1SuL!&t#ABVCFr#9pi%&eEi2L z*7h?eSpSjYXk9dS2tPCfx^@ov7aNjd@B^2<8P!SdssVVFw zY*5x39#cPpvBceL1;YNMhdtB7KAFzE#I5C(V{9o1AtB@4P>M=5qJVwT?UnJg`>bGx No{CzAU3`U!zX6dbLvsKC literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$EnumTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$EnumTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..fc891c12d3cbd7908782a8a9fbac81b33b4db72c GIT binary patch literal 3016 zcmc&$OK%%h6#j1PdQxZ7hLD6nffne)kE9a{rL+#A&ZDKpO#lsz|WeBD*mUD*wlA6(q{W0kBohv64aINNZ0vB`3A-X7E>M8RdDDckXv>)6uWmXwy(i7^{~Gibr{&48=M&Q37O32lE5^X<0;Q3Ja?cNar|pE!KFQ`B-ZJo}z?oq{O}vfs zq%BXjsjHbnQR}H5`i|GCf4O;M+7OnsdY!VHOfQTg^Ie&uiO5 z<(r~;D=!t z3|tkk(kYaFpbotRzB|#52x0^8)2nBoqBU0rK^`CAx`7V`3aK3>c$@f$l{e8+VKs=Q z#47#R#7*2HMeIwrN6Hbnu4^vJrVn0Ugc^GZ*4aIp0Gg6?{`v|K7`M5bt!6{uX1d=o zyi=I4)9+{rRTHb+=_GYpciLT7ZAQcP*J>OP$9KJl~k8r)pCWR@Yss0#?PjQ}3GqkJpWN35K;sCc_%=U|hZSG&#vW4PJRjI2rs(sKEM=nq= z+|78Yys&tHb&fqY;El2}Z-gBA&)`l{PdV|LD3zb#96R1U-Vvmcdx_&EdNK{Hk^8I> cEmxuu-p=6jXs?za{{Wk`W}yje;Suux02(GwR{#J2 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$FloatDeserializer.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$FloatDeserializer.class new file mode 100644 index 0000000000000000000000000000000000000000..513af6d3a69ccf6a8fd4024d57181f408579a2d8 GIT binary patch literal 1761 zcmd5++foxj5IsXeHY|$-M8!KQ=q6ki@rt3S;ucFQ1ym))`>;&nQk&h>?u0@=LVrbH z(DK0#@S`kycB5G^Civz({R~b@fevcu&;U5ScDGVFXkYyMxJD%8XHTFeN<@>H+7%%%a zclS7vp>x}qmT#PpVYA#b{JD}VG7KMdl4W>r_C{4nZMmXBLKe#%Q36qONfk>;S?rI{ zk%ddg_cnY_iep*KClI4L5IueC*cMIY6>6AZuzDt~=CKK|U5}cguSVD&7{@8y}pCK##iVPgDt`bP{kF7-=1pRjNxS;Zs(hy{GP%brf#YDt-ux~M~&@d zm&*&PXBdVmPTk|O6_8ssQP4KSf2p1bRuTa5z^u~97_U4}1W{cC4b3v;+_Uw&kYyN) z@H(v`0!&e+Df$i413QQT^=8p&h)x!*Oj!$`p?{*y01W!iC}YaN2*Iqq0eII6*w@N*5{b#et!=WScP!iylxaOo-U z@SM$^Ms92WsjyT8;|!URwl~SazzoBz-?v$535%=;j-=DrcBP}L+-?h>f$cGjFG@$M zC5CWvFIA;()vbv*3``^t!$k%onX1M>uo8$M$}m}yjwrXA`@-Ad`?g@1D!CT7tDK^s z@7`os9Y}JqQW}Z-UvQFVxN$m~g4-rf{V-xD%M4#9O9T3Xpz}i$o~YYIXin!KKN{IE zqg+YXS#=#Ho~eB5{BvuzXj1O;aa_kt1aA;&r$8le18*|K>pK5I90Acqed1OECf;Hg zlYW_(bz+LCJ-slSz#Y91m;Q!R*J%?Gyv=ZXV0^>2MT6VRUZbrMtUa?tOM{Of$#8A3 zucAB>!%AD)HQ~i^4-@*8Nnj51qzT??38%&|Kg?!Vj1>PFX7W+w7}ibcn~tkYZgxo2 zH8TiNkK4lJzS$Chwj#`EA5j4t$%Fy3Q$ zWbTUt-jS|1XSRJ|u2X^Z!p)w@rp%^L2W~B^aeR=#0zPDjD!1#M;Y#wKJW#&x z;$vMlq}i*()b%k}Blv_NJ+dUU@U}hKluCA}5Et>Ow)pUr#cl!Sb;TOKXE9tJN=sMw z3^7GI->O&i`t;EHOJ%?ivAWV`SU6wXmEOhjQcW;SR1~+qc+6Y9^8aQy{GM{oLhwJG z{-;7@*i7JcT%+o#xNXl8MX9f@=~rApS*>p(uOb@`S8b2BJsE=D59Zt?_L&mi;?VJK zZk9+Pi4DgQ-m1-gU-%Jx&TxOE%~wFBizTo(a79-KDT3MHZ+7TA>)B5O{JdEz&;B`B|HxLGPbDK L)G}=238H@kYllRV literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$GregorianCalendarTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$GregorianCalendarTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..116b11445ec85dd549a5ffd3d5cfd1c7fdae8fd2 GIT binary patch literal 3529 zcmd5;TX$1M6#k~oy{8fa!9qa+xui)UsK_l?Elmr-HmOai)(d!&Owv=6lX!B16koji zqRUs8zrhE62`*X7<+Fdlf8+9-xV}mysqEZlU3cUBy)vzS)?PMKw?)%x9Ke}xog#UC@nt%0_O%Aq-ArNgQUaqhb+c*froEz9TQY!AF5i&4CE#7iWtVRS5T;nGoA#Q3mY!a{ zmz%ri%p4F1mGq5Vd7(Q!aw~UdNzHRv0EYyEYxS0uE2s4h0pCIxOCAQv$=Wi4}%3Q!mL7hH*l}F}xtKZ{9FvwpA-gYgsQ; zxlLrgUev2AI#HtTeDv6BMpGa+zbjhLT1P?_+`?Air&t%%mTgp%Pt`x=Lfn$&Dl48; zoJj2+le^@)ZPZQH$d(W6)Wl%B*{ZCOsVP4u1kUc7x^mN{VF)pt2w@WE{WvEu-r-6A zlr$u9fu*TPo27|mCNd#*%tb$571-b7SB3#sq^03CToUl#SLDi-1rE`|1&XsQr2@F3 z;VP~PjOeA(qE&B5%O-8kIskW?#$l~%gDwqHiYLQOt0-`6*LtvcHu2Au^J?vwYol%D zVZ@}Of?VM8V9Yn$b6c$#P`$7&u!ov;i$G?LlzM$D@N;ai>&eK% z!DZQWLMnC{OD9(co9$3d0g+*lcD>s{0tX3MuUnnI3gIIZ{LqPUZ*HclH=7!YxXa6e zS>}yeqbjp{jpy!<{{x1)Zc`p30%Z*|NDKVnF0RvIu9Ua+`(RxAw)it~MZnN-24@A9 z2B7xLSJK3aO8f+yGSBYaoL~-P2ww1ch9d|< z!8^jI;Se+ji6{@Ox!2UKjp>$0CQpkE8-!_ z;5mgd|nXO%Xm(iIwgs;U$c zZQSbS+D5jGw=a2BqK@pN9C2hn<)|YED33XEkn*@AhaO{cHR_G}qW)+g8jOY>;m(tJ ze$Hq67l?>2`5gTUaq%^C{RTJ0x5$d`I(as_k!|H!z`I!Ow`68l? zd%ftpH2U5}BVRYd@H7!FJ&7={N)P{mKs+&dt_}IbPV}J&$(qsr3@VQIgkv=lPyB^R sWw^GpAxQpp$M7^qMF2(qkNcBfO%J2m@mhn~8S7|pR0s%sf+j-$0d+UF5dZ)H literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$HashSetCreator.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$HashSetCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..9d52f650ad658a1b3b5d21b63c8d0df92495ffe5 GIT binary patch literal 1274 zcmbtT+iuf95Iviuaq7Bl5<&^(QZ8*t(ts;o69q-75S60x;3|U0jk|SSId)`kD#2I5 zODloI2k=pdS=&`YDXA(Ryx!TJIdjg;?9X4{egJrlriKi|n;>+|ku3!uncTNs;Y){0 z5t&XD_~xEC<`YjIej1DJ5g$ttMw{<=bYcnF3k8=!s3FHtJmqKH^tkVs?}w+tmKyR5 z&AHI~ek3WONO2hQZP#~Yhap?54;XU2;7I7mV#$Dp0>f(G^~J$tG!)?>A9{kJ+z)K- z4S47(J3Y+F6E|Y$_UC55Sy+o<#a0@{B~yl%wfdD1Kx}KR9hyWHX z*YUZWghY1tHnHtSr={U8Ln+QT3#+4oB`S}kv<%gM5n?FFz>=ZsI}DXt$}etFa@x}I z5RWxHqRLK1^*kO$1~#zHubB(P=KUc zw}MG%i?^;Cfa*1Ee5J%Ne3&UrGLx*B3UN=nL2G;K>tdc3=CTH>M$#@OnW17zzSB$qW6dr zd6i?|J26O`>_Gnw5t2Cu literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$IntegerTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$IntegerTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..93b96fbe9df7209fd6c97e792d27b273ec68d7d0 GIT binary patch literal 2531 zcmd5;OH&(15dIp;S|Ju219r&64oUpb!+5b1#~~sliolL+3P_2f%Ev(r%2KNpwL7Am z{D(Y_`5E>FQgM~bH&^-MOMZ_lJ-aKkV4=k~Uo^YD)BW}Lb@z;3z4`Y!fZKRzV2Ds{ zdrhm=P*Suk;WljPs-{rVx0-(2wHD>J=s0Tq*IilJ61z%z{*{`mWK()En}IZ8Y)9+~ z%MotVTHV}{4P_uhC=Cq%fHCUQvxQ^-COrdL!c3yWqVx}42$^}?wbcS4l`m`%($)5s z%prwQ6T`?6&Mn)nTiWG>yF zIidk!WUJR2gun91fx4oclvi?uUN;^|rVxwR(;~O@xFL6S;d}#M5Uk`f2+x;?UO8OF zbpzK3`9#l%nu$CLglto)iqDw@gHp?(gc$=j27;kK zQMj3sRqE=@VZ(Mql*w>w@#-m~>NJ=MqirmiNRDRsN)3f1v=+ut!My5b}bM^^;t z&BxrkgSv2vW4PCvC&eI`HP@A1&~}mszDAfGm{}jfd|gFZ#qL{7vs@_*;S3DE%K0AG zcOBbC_|4*#cs)}*fccakhH#dDGuk-x66g5Y3^!m5=lP8xFu}jt`DYHB=5_cPCLfg! zaPbMh!~?tv0u;kdQ2^eK5AjhDbQmAw6ZX)yOSsJ8NH;NCK4V*&-#!n3*7!*SWlQ_G z@(+r~abCx8vWGZX%;HvnljT1!Ax@TYz6@}_!X5smY0UDfHOP$9KE6I4`@fh7nK1TP zg|jTbm1UlD46-biZp`ds{#Yc&&~h?c_8-SWgkFlgMvA2u2pqpZ*-;Bsi5#!;s-@GV d`>}uN^yd_+0qP=_g7qHm^Q!C56Nv}N{SOa1!_fc$ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LocaleTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LocaleTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..250a6dc71cc7c307d84425c99779ea20d1ee6bfc GIT binary patch literal 3214 zcmd5;TT@$A6#fBgiSa!IblvtnAYJh zIKDaKzrYtVBQuU~o$((yIF?VvxYS7oNmjKmMaxaZCtMC<-9%ja9xfp>+80(O1)FXte%&? zErB4RZB5_MwY+ZTwArOKnY9H%gyfOhZ?K7svF3Si4Xo;c;5kl*fVal0uVM$tZ`chsJVvhgwI-BLSw;8lojS^ve>PYj) zLL*IR+Vzm|USi5YrfeH|&4n)Q?l@RkawX4TX$sEt(boNF>9$cc$BL#cAK2->`f?L_ zS>Vj31x^wAj|@_oxoH^%!!|Y;$}YqOx~uv1MG?hgI86xK#f)tkW{%L2=<`M9?xrK? zz!{Z{#|fuAES$)_|0-*Nl9g47`4>2S|3B1lVRhKUZ2PBZGHV$7P z5xjvn1-R~8Yc|L7dZ`q}TPn3JOt*|tSkKEDy}%LtA4<{j-@Vwlr4ina;w+x6wRiu2 zAF2FM{s-+{dG<~eF|-q|*J)tKyUhCLmChFKKAB?K%F1hoxGQa5TcW&DJ_R{lA9^tU4utb{D5!?CtaU> z4(T{l2fD`-;sZIJEtvrvq2hfI-yy7N+ zcK#~iIaV7~Cw9=WklaRR1wC85_Urh<(b4ao^K>YkPdIL=*;9C$CDiO0^s+`$9Oj*K zycgtELfN84cE5>tHrY;pD!2n}As&o9SHY!JBc(!=5|j$Z8@KVohlr>#l?v@$ioMHl zTs%T79)5(D9ds?kLlwNVrIxMkGA=3@-m1>y;R;?>u>~A_MmZADm;9Lgidp?NI_Vq4 z>09*Bcj%?>k)$7RiGD1yUwq;OTS@>euqhaIJn$#W7@@K6Qda8m^n_2 zd$?>eE)#4wgbiH7b;hI}242M^BhrZ#+~BhAPo(c3|5mP)1W196O(D*lBu}uOb zkQA5^xG8W;Ky$u4xdog!(cZ>Z`RT-8mDxcal^3BHZDVeKPXF}rBINqsHo{q3*q=4F z9&|Dv?oXZ{*v9RBn%IV77-yg5W4Pm4PkK_#{mDa&iTlK0Gyl!!?>IhHT zT#C@LL*KL3MU6LIx%avuiif-*MG(%Eea~JOp$HuAI&VavA;pkA;>X-_xo2BD2S=hR zHKZ99dV+7!32`8X^s3`Ia*ZKr=JpvjW@M=Qfyvp1;HwBd?6*;pudJPAb2B~vVAWT8Jo z#}zIe-z)i^6eqHfiy^98Aa?r3NmVpdQmA2)!RjelvD@WAD1PnIaT!w@t}vK=ceZsI zxQc5GgSL>xP|=94YfHxs+|qE9VWgv5eKv3#(+t`%cbj6T#xP-Sby1Q!B61A*{_gzr zmoO#yxl`L?n2K5Ro7t39ZP~}L(jWUT&NF1BUy*^M)J~dl`mJa|M;`MU=BP+J@=Goc zLjwyi8HUNPic@d6Vw=~ga^L+gmDK8262P!zAd4}E%|6^N)H=C+1vx}DTJf7fRctz{ zVW+z6T~v-yMO7TzBx# zJjN(%oaQN7O++xe6iHDeGk1zhpK$#>&ErUC5mLUD(?+6f+`-)lJ%f9gp&cqVi~AAT z2QcZIBDqAPBAFg%r^ubh{u*PMZeeGO#B%WumL{DavCPlSFPy?UheT&6y~H95vgl#^ k^jR7eGiA|ocZ<~LBpyYZALB_hKE*Q{RfRD;#|!8`0CyVNO#lD@ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LongSerializer.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$LongSerializer.class new file mode 100644 index 0000000000000000000000000000000000000000..6123ae2c3a631d60ecb957417711a0b57ac0602a GIT binary patch literal 1884 zcmc&#TTj$L6#k|xTXtD4A_CqoAnta7BBDr^Xb4K8*??rpz7J)nCEb>^vqty}#-D<> zC?q}@pZ!tBGwrThkSxlJ5AEd4ob$~&-*-;?%z;(++*ld?L1Z-IeRRJ7RH@??@4ZV`bm7D+Fd@M~b0;o4?|w%RSp%-PjhE z)RAT=wuOF9_$?TQVK;%xrQ>@qeAlsd86K3|0wwcF#FZG*3y$Z=M-21%vq2Q945=l5 zQ)JPBo*XjhW$4Hksu@txIq2wO=qo#(SgF@GM6k{`T){9<_ATyKIdMdGV>2aRIw8Yi z`%F$Joa)MiP5K$$(9=oJfcg;8H@y>@s+@MZ$yz2$qcv+BB4-r8pzkAD8qU$Xmtvvq zBc;7VMte^Pz) literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$MapTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$MapTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..fcf1133d48616a816373abf244b6d5b6cd6576fe GIT binary patch literal 5738 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 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ShortTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$ShortTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..81fad797a0454cd94975b51a3f4e6a8ba252c2d8 GIT binary patch literal 2511 zcmd5;%W@M(6g}4x8d)9(V+=7QBqV`E56n2cL5_(c+dSd|QsZ(J%eLGW;~LGlW?C-b z8+dH^5ZIU$siIi(1yr%ghTll#_KakY99d&_*{G*)_dVy{)Ax4k{XcKs0yu}?4Ga-# ze$cd94JAd(5?;fRo@xpuL#rA3o;4@eMB7zMk2Yj&Rct63gs1EWevq^n$P&iZ#ip=a z;We$hE9{Z&~& z2BRj1Q6L;#bUb;d-CB{sl2~yiVSLeV2zOa9Ezdi~ta{*tg!BBo?%)70-l0gK#L3RGcNtpg60$YqnmWOsw}LO)wg9B81E7nRKhA zM*+gf>P}G*o)y!9x{~Y_S31H@9rgrMN+5QXD9k@>$PImHp@AO=R{9Z$Ae7r)1)RoD z27V+IQ$0J0nJA(}C^V(2g;5+)i`WHJFlFEjcgC)|G;tOdAIGL}+k9+1+8x4lRR(Um5(F}f1SU?$-n zx9IFXF5jK9?2kY&Z+V^!qJop$=(h;d1EcDbEWe{sM2YtnCt0WrhHwA|Kim9f>z9pf zBRsQsBpwfxU&DOGA4B+pe{ zk|#-kj}bsQ-qZo$?Kps6iCDc*9!-sq%3MLtJXJp>_uf{Rhi8ze8W3 zN~S)y{co*$Q7|}tA!71a%x$uDd~E{MdeyfIb<>rC-kn04Pn~CDVwjBR%J;UND}gG zy+31$qI4}`TOXxspp!5f37C=I4up`LupCQG5@MO`A|XCqU6v`t(33_NQiQ|vmLp%T zSC*u^AeL-N=%25aguN)3miK`%uHIW7VP?K9{ejdd5W03EBz(%uH5r$YW4(LTYxiB-eD=JOdXAW^@sR>&YEd3M05|;1VGdi3~DJBZDj}Qw_H=V;6uUdd)KW)L>?fY#=fu!%dcZx&2 zxhKR72dG2r%;m3)ZsFE0Pt2jUl!rQ2-_h!yKc{b(ytbQ@nG7(!#xgwzKJ(Z^vsU6(AoWOgv|U+GJm zXyOm>M;Y%d+kmywG(PO?+?jjNJ?Gv#KYxAu0pK<222u=fLh0ILM+rW*dEj^=P%c*@ zvfU^Q>?3i;r@rcco{07-pC}=t-M$o}CsaoYu0m-b!;l~GPu%u-;M(toBjG3mS%&&j z=;I(#lu#r%4B4g^c&f#au2csMnND~rOr)`9!9b2-v+D)oWI7%S+2=!FFciC?!~Fr5 zp0<<2jQZ$B4DIgH>^BQ*Fl;zlqqt6++`@l`4(YKl(0tSQIwXU{4YWbITiMl^a7WmR7v>7Et;J+OgzM6 z1COY(b5R|iN0EgcY%{F8LiN1y#1|)gOu6beDOeZ)LT7kpA&&yXQRTmzQ5|SN(rxy_ zsdU6!PY*!(nl`@DVi?{p6lOM)jpZaRyPV8p^Y4c0rnIQ5)^QLB8COa~25QvX+s+!z z)}PM^Pe@*xz7=|#D@f^)Cu@}~oBm9n)-GUvrA-PJtyz7T9$}sK*31DL*d&YIBMRhI zjD7FKAWgDUWaqx4^x*~1Cgh#e^aE_-}qRB_AA)a|q0iGu@d-T`bbpdv-FMz&IV=oTgPlUff Ng={@G3{@P!{0$ltIX(aY literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UriTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UriTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..2cc8d3e5fca7bce9506562d987fd5774e89b7aea GIT binary patch literal 2701 zcmd5;U31$+6g@X~tkhA`kfy{XgwGcI(Nv)nO6!nfoD@>rq*QKZ`nYj6u7WLlq)kcr z0n9KA@K?%9GLV_JFTC)h81724Bd1B!H+a!%S9{OB_uR90_4hx2J_B$Sbpu0$TOF@y zwHr!`wk6z#BVE-LO8QpQ@3_{I+!8x2Re#czl}*uA((^Aq@SND(K$dIm-abBP8^((juPG7FCDs6|35UsxxktDQ}mMG9jk z&LB%TTXS5wy3^i}UR`XoBw@1FX^7UkV7EMv7SrmH;}a^iQ{5+1Q6`+}he!A+Ukhk) zrLrE}Unz&PfFw_DwU{MK^H@IJZJZ{doQ_-VxJvG-av|Anxh30N&$5B@gyN~$X*c&g zr|l@`F>^SL3kGroGoFEoH!wpOQ=N)kU0Jb}=eSM6RK5^PEnF>UF@;%OhPMdkBO-#- zqwl(2Dc@@l#s^tq4i&Sqwq@&&xft>QX#}GY5<$40%tTLU0}K*IHxKnh_&J{p)T8vI zxRMbLB|H#J#9>b?gzWNeLw0q=eFFu8m0UmJ`Lb`7MG12TE)(*JmQhwFuIK`fHl?cg zVWG4XW(|Bqm`_BppSViw#sZkf$65l{xQ=lN)E{}B@AdgB7uF4YN|=eO><9`U>uuI1 z>o=L&UU66)p@!;&8_8xTRD?j>F=hwkc_cVK@ng0UjqmP?Zq!UhRHw(>7x>aZh1<|! zcdWLA@0+Lw=ZI;xop!e+S4EpW{q{eQU#x}m5hmO=aS0y~eu>vFZ1MkLKhu$|n3%*l z!cqcjuh6y&>l$#3kDT4v@fz~BqpynGF_u?!CAmY{PSX`?$K!3k#yUZdnB> zq;*Wn&i%LKk4KilO{Li!AlK6 zlxG%?#N%*rALj4;GK6t{X7nQM<1D|M;Ra0LHJm3J}dRW@S>-%`~ zDbM2=e*_rCa9@O>G2aft(r@qLJ+{zq@8cpPl2$FRe8_8Qp5+5yKk}DhUdbI`TKnR7 zt*1BB2bh0&A-#{Q&v_?!r-@H^r_N!VN6<5v^c>^#B8cN!h|!NDhwJz(u*~5`6i1HZ zxEWw%QN{wt@HwL~BQ=Au35%HFr_O(#N9{E;Nqe|;H1oe=>}5ia6BW*F>80HA>_hW7 zQY>Ab+r#n^B=(`}z#OstB)*Egmm;gtV(A5@wc*z%8-i7 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UrlTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters$UrlTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..6af5bb6e2aef2edc1cf7a91ea0a9b1fd5dffd1a3 GIT binary patch literal 2708 zcmd5;U2hvj6g@X~ys5KELz)to(o&!We>B}t3Z->OG5LTNCn>cXsgDz9;%->)TDy~y z@&k|%0)7PI36P4A5~-1ZXMPmo&U$UH+a%jJc-h&RoqO)R=bpK8hqsGO(I~=UR($OYAtR{b<>TGPX%foz+y&27a#xiL$#zSQY;iry22K--$7ZM9 z-1Y62t?Wn4;WW+|$PvtV1}0v?S;DyTmUdYQu5gw;zeSkJ7h<{9lyAGuau!oKr|WQ@ za5`cl%su+93ziD}2ICFV#3U-FWo@gbKjvb{1FR8@Mu!Q)^<*l#N*kb%FuK_n6ye)^ zGEkS(qvA?N=xcZ&n25u!S_s*t-G*%Ik_QF~1S`3K!VhH6DvJ_k3|uDU6D^~xOkB|w z9&Jih2|9(+S~zFm9l~rPO6{?$#BMBrS-h(yaEHansy1mdo7p|8+GBw%In8Yc{&?NVddr9Z_kTkh958m~- zzyzf*gkc!`3&H;n`kv*rQJz^m5|6{heVD)T%Mix-nbC{%BTn+W+1Y>zyu>rUjd6;f z+PKcJX}#kBQx8geczGYMKH+&BYuz5ywk*cyi?~e&Lik&nDh(A>DMrh zYaNVU964Oa2ccySH=;Ol9LLQNBa1TTIED`yjTxyLj7^xwS$^vLXL;0KGn2H3ThC_x zdyKtI$KynWb6b2aw>T-W@w!)vZTr%(;Ou3$AB*Kn6dEgZtbR6Nel=O64Xc;=~(D$4bxg)x+UjKSeE^UiFErW1&qpP-48y50}$zAb6IIi&8 z&XcWO+0qsYgxW~o4;i2-10`JbjSMUl33HhSD>6JVAruyrr}QErSFUUl^2`3VEFp&p z8z)gBoNg#jKJIq5WUwx_TuGQ}_$}dX3Wnu%vYFS~u;#>U!8JzhsV1#-t_q8vkIeKc~KDWR3`E&HC9FLk|=ZMW*m4%f79;Vhv#GC>3L zG*BI-)eENaJT6$6A)Gp#gN?WG4xy<1rVf(WBzZ z_Rtscpa{gmR{3l9!F^roQ8Csh7gI zSVjx;Hg4c1N3;|8onGZ$qjWtu-80K29eq%|GWWf{spJJzKH+; literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters.class b/bin/org/mcteam/ancientgates/gson/DefaultTypeAdapters.class new file mode 100644 index 0000000000000000000000000000000000000000..e0736f27f122d0214fa0407a846db335cc72e36a GIT binary patch literal 14409 zcmcgy37AyXmHrQlk1n4;(};k3Bnk*NQR6}bQe9o$UC^6d)nK=nrs#e&1=Uqebv1$u zhzp7)E+{H)!3A+et&&B`m>82x;v^F_Giow1&KP4dqh>OWGZSY?^56GfZLiuU{i6B! z=yR8P=bn4cf6u-5ocr=04!!{3ba_F;2*I3qqNlRAD`|v#E5os_h!IQngp)>pWlw)R zR#{`L3=c$;p$&b8w>#XIG!p$9MhV8R4zCMWM#Hh5%H|cTjjp7iyv7^ycZS+q{GHw! zZ%fGEDhMLTwFZ)foQhR#6-YH>Z#B2FZ@Hd;Dfc_`5M+07>u z>2=I!lHwl>c^g|gYy3ffYrxwO=uk>)c0Ct0NPjZi+gD@s8;M9b8o9(sP<7@0rnW|h zX{v`mia$2cTWpi@ZLJLszTV;UZA(N;*akiewvl4C6WZF^0yPfCF7(hg5a}-FT+z_% z^ENoqQZsy2G{n2YQ3p_t@-;U!_4m4UMEmo2wxrPsWG}DyokIY_(rIX$D>BrVS)1M_7eZ;0-V(woQ`vnuio40_0b_abW=Bc$$hKBi7+<{ zhiWQnn%k;N@b5x1HSvKJQN!WBCe$`GdqWQ4T`aEJXgr*B@SZq0Y+Q&wC}zqVnw!)D zDD>~X;j6tN9wYLLe0l|4dUc6OU1+6gpm&ASo)d!g&8<$2yO2A$DxN4jJa8|n2!>h% z)JgF{!G+wxWFivlDPE!zT3VZ1{H>vYKiKJO^?O6j+)rKbZb`)Zj6^bG^!pMN)p(t& z-^DSbE@AYcWAh`(4q7i^e8;5n7e9yIMy9C z65L9t^s->2Cl*c)Bn&~+HKTb$f4PV!-C*v#G;ijDss$YS$QpY#g{znIi4Dzci23{( zViYd&tRPdef&`j)Tx|0BvjC(py`Psbffx^xu`a^~YF3sp^SYvuSR}bXFmn2gC4y1D zc(gP-+1Xhc8_alQ@>V>D2& zt|#L-=X=m<@m`{%3?2;^2pZjrKj`t^gQeC87wR}1x`vAc3x_>|<7n@}GIS~%EEo8v z4~?-wu87kd?5bugQTkn>;|Pq^&@DJ`*b)|B5Y**6W?poSXrnaNpn1X}C+^8#cO1Z-yT1z&%RTdj<6_pjFDzmhica?swx&9JfplcH%)Lx7=y7l%p-@w{^_GOby==c!!Np=cV3*m+(C$ z<=@cHxj?6rpDp7LbexJ=8vfRe#Y=(%9=wbnDIx#PoyAKS+ETuvV>V9H@R}PQVe zyo$e9LjHq0O*;A6GQOds5_2^C)Qu)f!WAC8iGNf={@k4=OBmWx{zAu>aJq(nawBC) z;KPHr@s5)6m+qu2VQ5SFD;;OxObx$wbE+v0qImEg{zZxSukOy;#oTQ9KG5-HoTcHn zZsaSD#(3}{ey8O7cX#p?bF=094;^RY91Z{J<~})89LIx?@!v|?-wRq@c%h+q+p_G*&AK`^;Xh1nSQHM5QRSWLfQ-t-wm-#>>4xK#1hDbP`cc^pkf=rU4` zHnnK9!jMb9`e3w<^Q;dvUB;*njxGAY5gIYS@#yeko?u)uGb7s#r^`V{25`WyalYlk0uiY=M1^S4Pge4lp~5Ng+Ep8nw*jSsWrSEw$0_$1k)Wn;ey7euSSY@(M=4-+zU`3v3 z?gU;YKGj=SG^8y_nbfMjMOlNGEUiVUNdp&Yo}anXm&s!F`{ttGTidHb(D}Nws$k^! z-tZcuE!G?Fj;u5nGh?8=;Xc8n;w4TXnafT-d!Q{0Oa;i88C zg5`(s=PD3h$h7JZuD9g(np{|`E{@@+Td^%3&&6jXq3Wt4}nE3g!># zmYpW@ukSMYRQi7@(ZL*-N7hJ;+r7lO6Ae>p`doU(?t;9epmONl%qb3C#v%4U=ND?; zOwRNe%;Y*x3uQ7O7i+RkaORLoQ3%U!abcy5mUuMMwLzEl!tF-0^DTn2hMvr)u&Gk3 z@KRm+g>lRN=^gHv90CqQY`0X;uD|}Mu1*!3+}!por;@dwg78M!tRQ?PcbMrNGnOc) zeYGyvsBM3IcH0lE^seaV<2FsMbrbM1-Bsb3TV%5)*SonL6v9SHzg51fr2m@Wl0z)O z!Y>POTQxMo201}aE9Ar{VwTQsQaZbt9_0{X423=A5>D#RCR2lbe6ACYn#yCcz9k-s zC6|Pw0|w8%+!SzBbnulZI6TKA!QYPWHs6Kh_0PD_@F(pA4j0O}mFi7MAzv3yZXDPk z+p&f7GMKM%@lwEHA}TBI^9nagBF3MU#GlB&IF!PMwnSkb z(`+bwyGK1b5{a0@u)s*ZPd*M)Rl=X8sVXaPQfAOi$~?D8nN2n+v$iH>cGRTIL7J3V zK9e$kW>V(7Ov-GMNtvfH>G3$hq|7#$l#zUsGE#0*#-dHiSg%PLPcsJ znUs+&lQM#2QbuY_%BY7)8IRyB=d(Nl3n&xA4Y~S4))`93)vGz@G4P>=Eq*}WH?;#f zJA>Nx{isi4aR!YnHK);%K`Tq4G}HSRlF^YJ2Kdzig%}R zUj{o>@qsjUWw2WnA5G(l4ECtv(`lqL*sF^B(>R#H^Q!nl8ZTz>k}7^TjqhjhvMT;C zjUQ+5sw(~@jn^}HQx$)f##l8H!7*&ZGxW?olP#lX z?w2F-(>Tm*v_8?TAIMl4#~*rBY>jM8oXL0-J+BZwWFp68q`ZBlUrbM7t5uqr!eXm;Rthav>9kzioD|xu zw$oGi#44ScE1i|X%~snvDcoU|=B99;Dy3weU8<0UDeSV^s_jyR_)>VnYV+Hr3aL%u zMXRmeE>%b%g&(W73R#@O>sD{0U8<0#6y8#8`=n*&)70Ha6CxX#Aq67zKdZO~*U-B} z={b4{oETSpoS^BWdDhbS30#1FtROI=7{EIIy8;&z9_w)%HsC&7hDUHYQrO5$)Fyn7 zy{}+1eugXYF0R6FaWx@wjf}t+n*Lgugsn0a*PAdAIaqcnSW+U>`CwrIEb|T|?^L=|_{hTP$`szWN~=4~|$SPp*7$dn`x$R&!iwJ}+oe`Io2 zzv0(%Sx&IaO+S7FMww@$E?bq28QIuAb-!HEG^;{7X77`$W~F4Aq8ZtuIr@K@--uMx&?%ta{Ef49m8 z<>t6E-bQ4PAlFveF1J(rr_w%m$eo;SJ&u+gau-JDouK*q1^oROxw}BYrW525PVJV! zsFaLyD))l|<=#{9rG?XiFUy=?{x0|B2)UQsN63Bhb<&S`Zn%MQpPk%xw~^jYx`Xrq z(w(FalI|vbh;$R_F49`khdJv;(%q!3q>qp;C4H2159woc@Eb`VXMGvz6Z~#3>62{V zLb`|TACo@C_76#)CVigt8PfHnDbkln)BOEb(q~y$-|gjhFO%+L{cY0yq_2`5Abpec YInwt?50b7X&5(AHK2N%q^c(Q}37Z$6NdN!< literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/DelegatingJsonElementVisitor.class b/bin/org/mcteam/ancientgates/gson/DelegatingJsonElementVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..ea4f393cff63d45fffaebb6492c1bf77d7d6e806 GIT binary patch literal 3567 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 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ExposeAnnotationSerializationExclusionStrategy.class b/bin/org/mcteam/ancientgates/gson/ExposeAnnotationSerializationExclusionStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..6b8ab65409db7efdd61d7e996f9c8d9121cb19b2 GIT binary patch literal 1276 zcmb7D&rcIU6#k~WWo6q6)LOJCAfUFTvi`c25D9^p*y5pvgSY82E(6=$W_N0!|A~Kr z7cO2jdNAHh{F{vN?Y6M|NJ=>D%)D>E_rCYuy!rF*$4>yy@x(xi;f)_SR>xL?cP#GN zQh3VYN`#gZ`ku9U*!4rP?s>lAO8Q<)1d_Y59~+y8w%ZFMR0ZVX92w9VCinSAZn@lZ ztheobVJib;3@ca2T!_RlwkkcT))=&MWrsoE@OOm?4Vf$q++dh!NKb6{I&BfW<84y%k1^>EMcxx1|c+1+q?ND75=BPl$_>Xr8l<1OiU zT=fDh1DMBYlg z>KT-(ro#? zz!qCFn%NiEdtfWkh~X)yBKp$wj5Ye`J&-j{CyRDQd%F4!<`+7okfn7j24|3?b9O+$ zO-ztQ&lOX|%E#PWagf)9rXpKArd2x=VK$CX9Q++dh%^egO+H0p528oNG$9OkaF^C7 zwLbBpWapOirLVa63#Df5H`4lX?K>72KEcpFL)R0@JanQjz{Da+Em5M6V)^+&m{a*V g!XJ}}NlBDZA(<-qWuX1Vq=8cQRg}jvK`GS!0}`rHIRF3v literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/FieldAttributes.class b/bin/org/mcteam/ancientgates/gson/FieldAttributes.class new file mode 100644 index 0000000000000000000000000000000000000000..378238b100df44b33c9e6ae8ca9629913484c473 GIT binary patch literal 5407 zcmb7Hi+2=P8UNip*km)IA%wR`Xba>;QfgZZNkg|GfxzYgiLrnhCz~M|vX3}Bi-20+ zt=9UeFYLRuwbhE2(gu=JtJVj#TE%zObE@a)f8jae@4GX*JG%)HPfm8`-uu13-}l{b zUjNTauK>6ae+!{Rp(W)^v?XG$WhUCpWX!gb?u6-D>9&bpJ#WhMOUj zDbyS_kC|<8Gda;VFm}|6xeBZLB6p5QA~28 zU7@-wl}x*4(j7758LI-73fp3-MC({)YRYz7J!@LUfL1e^Ou43Or;?*FGd5|BrtOo~ z=%k&b)|yCv|G;o$xObr6Q?77*bWwM@L<9|}9I_{prkimrg=epVrDJiLLDP0R0*-dY z&2+k>sk1$>=R2R>%eZ#Dtt%CeGk$a~$enk&Et2!Ty_0_mOUJEP+>|g<$H|il%K|F2 zS`yV2?};f2U zf}Awhy$WSXGa-Z%R?>3pn8&ty0S$6O1yy6Fcv}hy-9V?bfj@tsww1IcxRzicN6PxN!x&4`V zTwz7f3a<~ed+zTruoTyX(SgnoZew%EcYp%R4D7`13L!?gUxTQwp)ugNUoaBTI}EJG z5|OyeKsS0kCJ$@N3z)p{3C|t_%RMXh8mPlQow!4C(kJT`B5lCHpd{IlBxi9gBnJ$v z#433kHn0q}#E?5_6R@p|H-e&eNg%5ug7Si_vk-LV!#ITZgmAc^qk3K&crV^ZFONxo z9H595#Mb=Sgz#R$6&`C{Oj(bAk)?m*3_|BKQprRv~3}J%( zCZEjSq-#xBjsY7-S#{HWZc*l-FNEW8+oF}|vc$im9BY&mueayhe@d?lHyittO>a6R<&04rVW#H4eo1rXl zrN>DnB93Dcd3$}e#moVFuin#e-nHBnqQ?;}!t+O={R#$O%_Snq{G5Sxcv}dcC(;&g zmc0GLxDQ{H7W*ZIEx{1`oiX5Nu2)v!%lK*tUs1SrQTh7rG4M5fT_MZ>cgL*+r!_(Qz#8X6A=tjvcvh_Wyq!DAsjnr%2*o=!1uiO2B- zZ$mR3wbL|iQ$tW()@e_JW)m_(?n!(rgs0dv7BY}hpT;vxawh4`9dd2vrzZB}E8xlx zLy^Dj67ugDcvjLBHpja zc}`gs*(r;+R@!1T!?_O08T>_s`g|Yl)ZJTIPB*m~NI=>a6q z=;wrkp}uCQir^BymkqomV3X#hZ#0imVO_SQbhTyMpC(~k!n>?#&JFx{;Kj4%Kql$h z32Veo+ss)(EAgj3EhNuF2`B%r7FLwpV9XarZ+7-B?iJGes&EQFHSjb1T;koUG9c3({3fxAeopf&}*5h`5O+-j@2fw?!v?2ALI=l-bBsKH*I?&GW*&Dm7ORYE7DhDlE9G_NE_3e%ML0cxy7fk6pylCO(JG;rI-W$&QHga^-;|MF>wb+D<_1D&HpYwG^tB@;kzAPW(w+`*Ejg@gI){%kZ=cMY=Y{HiEoh}jl!Hno?$K402Z-!^hIT3$-f~Jl ztChUU8T1#tfmWBD+V^9Z)!Q5yajGx<2S^SKjG5MfURoZ0U?vkEukyAY&i zo$+?Q#~q1(In=+&s_=b0$KQHx?WH&3Pc?1WzwWLFP+oSr^fWiTyn2B<8_-pq3tTnM z&^}KxGh0O_UXYY_mTzS|ctLB3Qk3p<)G*Y{QlF6$_aGeBx?g6Y|3Ito$~c@;5ypAU zQj&DZIlhUdyiDimxQ#nr>P5#nTqwrS#efHuIq{V_@%*Iq0}`y4s01QdY?ri{!eRq$ ze}x|YkhEadp^N;-eAe?nC~m0Osy7!97na$dO1%c~suuDb*JTve+%$)uDD*#rHCyL! zQBm6)eJykNjY9L&C~rB#-QOuZc==x{52uw(JMb1;*WcOg|3QIov19);5btIg%}GNA xel65d{U7lssudu46(dyZb5v3v0;xKbTxN30LO2z|pNZMmAl(dq;aLg(`d>+MK@tD} literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/FieldNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/FieldNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..d3127c3a0c111520b7b79903bcb925011b78a62e GIT binary patch literal 2260 zcmb_dYjfIG5Ir|M1VnXQ8k0J9)1-B4z_E$#=27Fi5R7YT@u+2RG<|qvtWae@@(7U* z|EeMFkf|q`e(sOTWbcIp#Z8HmDIavDy?4*Zzt~HBx!2(_)ycRx0`3 zgIueTLOD=cT$15z*+bP-^G%rD}1mmQ|`8a{0$IgA7C8v6@g5{k?}F6 z83Ljq3_Ih?9h=@M@ri-6%%9^)#J5?4lQrIwPC(}nTT zJfa_IAW;hw>SrG(;bt43u6R6e9P;}&|JQup2DD@yD}m;Pm|#O zYPK0JHVoH8{a|t!ZpIVu(Jm6#L%rEC2zND}c;|VIpnx3--_zCRQBSw+8Z8+LiVR`h zarAE8KJGFky)~8(9~gC)G&XX4X`;FrB#~G7KEtNhZ79vN*E+meIM+YOC}EdVg{&gV|W!|lo-Fg>28XscE_n3TPE*k>|Z@t;to`?YBnt0?KpJkt_PQcte?3>!?ZUj ztX!}xQYp`q_i5twJ1DbEvh&eDRWLKnhYp~X20*N&RI!pe=|q(42$;OgHA>$BQt|{Y zkpCooJt8mu>z;sV(GPtmh-y7t?BjADS03Yxr^hO^m z!n!J~H-o}@>!tOM^puc&JzP^Ye-8_)7U*GB)q*|TQ6FRN5d}Yob$VVAsm#-Jo)V7Z z5^iG=dE{^p8qLc$;v_#!ch@leZ6d)>b~(8)+s8(7@lRw&h!cXMpNNK^3Go+!5F>v& zPpF(6{>JIyRBlqN0Vye38Ce3!Kal;MUIqyUg;5tU^5DP_CX6k7M;6ZLEn=9%#d=uN zc6`Za+B#>T=$mbb+K@}P9p(@rI_PHnd LPf_phWu{*MYq3*a literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/FieldNamingStrategy.class b/bin/org/mcteam/ancientgates/gson/FieldNamingStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..4998ee42468a32ba5edbb2828f5fb8337233bd71 GIT binary patch literal 220 zcmZvWJr2S!3`Rfm(*hC_BS(M%f>^tELNN3MA($vtno4az;%W>WfI}f%F~GoLS^l1% z{e0aY0Ja#X=n*z`V^w7$>q_Zh9EWIiQiKpit@g3w(b_kM)n4YzXFN- z10TRgA;wOiDMF!n*zwNp%o)#_vp;@*`wpOkEfWUeQJe(s$k$SgToL(7Mmi8$rf!hN zk-M*CIP}CwMZtki_&j*q*&T}4S|%ongq36QM!2Df0{8jgSo+#TiSS@yOoAzLSV`#g z7ESLGN>5az^i#sa=Hls2pHO@j52b|yDmKcf5(-VHZ(#*B6Bh`rx&QPck$xNvl~!?- z+PH{I1lvE7{wpum-Z%^i^=9vHuDVXY48p1n6XyxbJrzlBJQ~R4r5J?FM6DP5BJ7Jq zW&ZTAsE<@ic)W0%zX!)`Rd|+B8uC1Owp?iMETrvfov6W>wb6BEdSP9#I=U7%&@iz{ z*qTdKuBa0z8#i#1Pz|KcZzd`ttTktAB=Rt1aZTjdUBYeLHF1Zq^Z!z(#cN{?_XziA zhjAKww(PVu0v!^z&p`M|Ure%f5RVgI?yGE+jX5uAI}-+WSPBJR=XljJMerjvcwdIa zc8NWYeS^Q%)@Ru5FIaB1KcfCVkGssah9cW_wi}$ii3%FH!Y8YfEL_Dk_BcOB=dPHH p>r?E#KiD5oZ-2u2SKKo2j-w4^*d>kw^ZswVCLF%!SCYrKe*vNQHX8r{ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/GenericArrayTypeImpl.class b/bin/org/mcteam/ancientgates/gson/GenericArrayTypeImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..07e94352ac3aa98709390a019c75936c3c2f9de1 GIT binary patch literal 1105 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 Z{)w!|kflDdltAi845_dEl;|lu`vV~%AvOR2 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/InstanceCreator.class b/bin/org/mcteam/ancientgates/gson/InstanceCreator.class new file mode 100644 index 0000000000000000000000000000000000000000..ca0da376e3a8bc42781b2adaf06e0fa720002eb7 GIT binary patch literal 315 zcmX^0Z`VEs1_mPr9(D#MMh2byqICV-ZqnR%&tyBLiPDNIn&&8fdD94?Z96rm3#gkpkEeHk~Cb!0MAW@jz_tM*Co zp+BHMO1!gKG}a(OA9i-`*E#phy??K-{s7p++ZrNSK7bW$mFDA;Q->g>2MGY~-{-bqAGRa-0&gFw*hH6I{<+}`(*7h+&d}v3qfePx2 zc!ny&a!(oA&nG9+4aJF;49%WRggzEd1-o>{{#0cQpL&lrGFL#GVaYpTGEGWJ8Bq*d zy))9vwJ<3kct>K}Gae_$S|*+kFMi01Dm^qmMLt*>$x+1AC%z(Xsu|wfrvg@C$ejF)4>$O+uJ52G16GNLa!3<_4e?{wV+e literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonArray.class b/bin/org/mcteam/ancientgates/gson/JsonArray.class new file mode 100644 index 0000000000000000000000000000000000000000..7b0db8a7a0ca54c63908b3ae37db998f9509d3d8 GIT binary patch literal 4491 zcmb7{+jA3D9LK*WNxLOo+FB?V5%9vLX@DTqqO=y8mO`+AQY-?ZZqp@QNV9dbMZhZ{ z-miECU!2jA7gU_#R+&*BbeQoO$A3V_7ad=8d=tOt?B+6+q|HOq=A7U8eSWv|`EwYi47qteuH%=0}&~7>6~41ezz6-HUPmo-4L1qQDDah!(ugn`P(KXtt^{j zm8x)6fn}{DtXfuELh|p{aTnTH@0Kim*LDPEG3W)o>Pm2(l@Pz-Mn&~5k@xDj2Wx3U z%5-I6C8m($T;%2XE*+hS%arn@GPF3U0>a`?LZFuVyRzPu;62G1uY|qTc6re@>DYi? z4VwiP7PKXpfs~PEnq70lp`OvE#%?K)(QyED(=(-i*mgWq`sJph!^Wt9u1?2o zJ8c>nb#}MhKByxLihHT`uJObS_?KIXAJOpy4$*km&Sh&|aUbX!9W^sUvOBhyzx*4r zNn_M>*x6`zz8ta|p3QY<%Z??s<#%dv6vs6jqiuzfD$sO1j}vVDhT_Z1-(6hE1wpp8 z7xA)&mvU1|wTIl5)bWb+E|f73skFSN<4HUvkG!GdO&KR`*vM|>u0S9=$eUesU5X&G z3wjQ6%uX#30#*AgCria*w}uY{7M1Pue*74`etXPGn!T2sv32>Wy+TGwV1IeI6wft+ zB2RKdyP`(K7Rs{XPZfU}`qCO>{ zC}E{-9X(iIq`f|`y&fxQzw{)Qk4GE7%at0b^fFc!;^1lPWi&Sy#h@l115O&>uvTA3 zSn3$Z8iBLa=-E`Qv~MfY5YB7h;GmS3r*@T{37R?t&P~v?>xP;-vCg+8?gyz(+A?n( z>jU@>!HHVTqWIM1<5P!j^eA6ALwtP(^~v}w$@>=i7&GOUU{3i(Y&>@b2^P|Q-%`@c zxK~9Ey~<(%#)_<7;`96*FQ9r(mP&A2OW}?YcbvEr<#8NUmEg92S;D)M#Jxk@d*yK) zah2c(N_qDQai0?RS$P~sVO=GhXsUx@paxZld-_}HifXO+VJPTU{F{aGHzr%NTcky5z7 zi2Iwkf6C+d7^(#KcnO>cVY;Zo0-=@1@o`lNZmbk;CUH%~%`S(7e4JH+J6z)4iABUM zCT?jtTu45S*qWba!wnJp3^M@H$mUzkmF>}nJ>z(e!!gw9^=(d)wN+=(Jhy5bF9utqu1%0~$;$`6_CcnfdSV!3vb?K8l~$ws`(CK|+IJ}l$| zAfz4uJqTUrLbV2F`lyEY`LyG65ZC!kC|cAIRLeEj>3h+-Crtexk`=%yf6$)(50MOk A=>Px# literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonArrayDeserializationVisitor.class b/bin/org/mcteam/ancientgates/gson/JsonArrayDeserializationVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..08978efcd7a67137ec0366da6447d36bae470ffe GIT binary patch literal 6538 zcmd^D`+F4C8GcW)n@N@-C=g&lbd{hKb2iLr@@9X69>aCbJHosB?S zwJlX!?M16?LoZf)p|v-(HUZN@?ZvkCPv~FLK0LPXIWs%ijqL0`wf&|2VRvWFIo~;BNd?LzO^R#+htSCtcG>w;OiSGHrL#aLsJ{WHw{BAL3WH;}~c6 zn_1JbjFffGaIK6zVr4Bi<7kKo>?%9Mjg19rx-8pr_Xx3}X`t*R%8kx})5eU^o-*vo zcE_AZnMt>O`0TXV8E${%)M<_!G-fRBE#veVNq(QL$fze{XI&>J4a$r^YB)yPbP3Zr zb6h%g(6Gl-rgPYsE@LTCUV;&qbD_b%XCDc3$d{RhY~6_$yKOwJzfNW`!UT@s-C1R4qf@}^+* zlOyieu@~JuE*R6(radmuRyfpWt&qqf2Rh{xJv#QISD@C-c%4hR_ZN&|2f8Gn2X*x0 zkU%|k(p`vB3nfz)AB89v-h=@ihb7dSl~s)~9KkUSM@e|-EO}-5M-?5%F(j~x-UK}v z$0x3@5RRf#Q5jeBQ+e)66+WnAE!M^G5Jok8lrpTyNoB8N3=gvw(8VE>kv2YH&X_5= zguwcuI4g27hDY$IhLa4S(6s`g>i8H8#z~gPEG63hWk|x*Kw)eRox)QJ^IO(G(CL`K zBsmW9f)8kszKXoq<1`*)L~-}WjmLXZMwU5zRnfLpW2baBt;0r!H7Zz` zatI-DF|>jdRqOhxN8qk-J?2T4HO9!-M47a>W@VP1JZL`T8p+3aob}5!^Rn1rE|t>oB=IOai|3wH`KNV! zM)D>Dt0$A5&e%NFkw6JrjPY<@$LH`gRjsz#GsTqFo%PHGMoLmv`9^N2CxK^md>&um z;i7O|AL-!_v8+es4Hnh#e7R_s_#btwwB=ee1ZNw*q~pu@iWl-;jtsgPik0NaU_6WM zivqVT3cWv-GAE4`73VG%niyWdOR`+NtOB3K;p>>y@QtGClaE)mRUH@bO%BdVi8U1h z=S#G|K%;(>ymCbi87cB)yXcbNEg&p@`u&rs(gY2XQX3k+CvekJ6Ur;gLxHO<&8&fW z{S;NaVDVa96u4t)!9107y`q`OsN-fwf+^7E&4tIB#W3u%%oNk$!)4CNYFM|+GRO)hoF;K1++($8eNOuFx`~K z!lTLuL*N!=uPh(TQU^V`teZ*u{}TLHSsSaxI|7N)o=zyfm~VI+${DI^bK{iUqdvWc9{KWVI#ybQJ`_$NrhoiY>Nu~>H788=}h zrt_&p@>3VQF`o}*a!%6hv*gvXF{t}X{va9g{(;&mB`Pr7HQe#RP_5wZdE;5VD+*H_ zspo%XKrKH})SwC)pQ`v?$KRLuCg1B@wzRgzBk^dwW*)IO*iwz<{El%Xcsf{)M%44^ zpf?&Ta1-BXhnumIYsjZnSgl6aqXBEws`c_HhKTBoV?EcG<2K+H`mvGEYy9yma4X+r zUmUk_R0Ij!&OXo6JCvvYQ0>6f0yd4dyoJs4yi4OY^567%3aPT2rm z1o=K}#{C3%FYk8UgliwadohSU!h3))9z=>)8W)G~3?5+N9>B}Inq1)TYrK=Zj$?R} z7FRK(XgEh;2~!}|YxowvO%P?9C)GB*s0gX%de19DBG`#%@g2NEkh@9Rcd?aHJw~El zrL6`lcsd_Ey%IdVPGY=qi?qu1^Ry;VxA}dnBBL4}64$X>!?x(!_3N)g)9~8giGaZO z@dJL#&^$>WWbmyEr2RumoBGV_ntfi7)~H>Lsa<;^wJzB8I{ZlOdeI}A6Rlx$LxRB9is2Oq$P68}}G zf=Dl3!sJgf-!OT5U%mo3#%_s1;3PyN8=XltQh9C3XQMJDX;Sd=nwLvT6s>Z0p|TDB zBKS=6T%seeH&M?@I^~VLd6#5C{XgQ!}BflSrr(t-u_fOAH^w=^Z)<= literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonDeserializationContextDefault.class b/bin/org/mcteam/ancientgates/gson/JsonDeserializationContextDefault.class new file mode 100644 index 0000000000000000000000000000000000000000..75a3ef91c3663a4bce66bc6369db870ea0ffabb8 GIT binary patch literal 6393 zcmc&&TUQ&`8Qlj2vc<#>#Bs25shT{~Ebn>?4c(bNwl{2&Dl9M^Z%L%J&xwcufubG}* zaz;vyXI=45STp8A(TgJ{aQ7v1(aaQ0XEt;8;w3B3)>eThHffpm9COiT6eV}m%=3Cx z;K*30HSKo1Zdz90u0jyK<(35o!tG3$t~qCU#Cy#u{}+;Rs~L)jrZZ!aloNq^aM7bGnLkB6IL)bmzBb5k{s###q$$M%K< zKI#rPu@14}lfqaGpSfPdJyQao{f|T4RGu~uFE&ytSP3*^mw}zQSD?AOXKFhH?lTa_ zHhH(lz;-0$-Temc!VZC*W42?BFU(!E+?;u_$hzzpE9K4Nl*tv#XTLG#y<)TYkA+89 zTX_u@I}2xbt$D5x-^H$3%Ue@v0tdT$!kw;}Lnm!ji&kJNBJVQnlSONe%9R~kRU+4# zDN>3uausKLsyehsx=Eb8lDFoirj_G(R3H;7G13hSyKDus1YR7>4Xm|1v=ss8a@hn@ z=#3*S&>b0>Pk@2_=p!<_EW;gNC>B*6otLH#7sDw1amjN>fdW))t7Zh`mjfSSO}mKIAK z&r*L^HD%IsZD;nW1-n?V+-;Z?cwp4Di&h~yPi0_N^33Gf@npHQ;O4D?WC9a7C)J#9 zuY0S(X*=1TDLLY+2BvYI?_~M5b_xRftB3kIuNJVHD6-q|g21+j?|xISz{JV5BlDPjzOd?6S=bTmqNj z$oeP=asLKh8h+550%70X?aD>li+M^BX@|yLBY_2Mw;0I9{a!hcc}rmGAlq z(url6Wt*Llrc)H{q~lZRpaceB|}xwHYS&!JOK&t& zfdLZR>iKHgQB~GK;u4c;lR3)Wr$E>GOVa;N*C#g(Jn@`%9LpUkn&q;^L+@V%4u^u$ z?gHhiNIwcD2d}!Uu+`kkpz=iZDNTiq0a}zD%7H={)u_M*Xn}Y=XxNI4yv>av2 zaoKXR(sGI|W4Bh&HNAp~>5k`?kz@B)I-Xy`i%Yn$jKV+ZUDMP>a)3TYks;{^NX26$ z}!%|^#;g(RFCYvwa9)Ph3rN>vQc_`n#e{O!70Xdn#j(qgG{DD zBl{_S)&SXuA;@kjWISy*K=yNm?BC2;oNNrQARJlm5`NJzZ8rv5_q478d{{022|9k3 z04E4=61{ki^_XMbo#R)RDFyVDb{nK{Sk;>ZI?NjUtpYk6r0`LuPy+2kyPv{ALi!zk f&q7#DrW~aq|ABUz@JIZK|5Aqj%x&^Vt=s<#(qg1a literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonDeserializationVisitor.class b/bin/org/mcteam/ancientgates/gson/JsonDeserializationVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..34e663aa13e3fe3134fb665ef3ac662c3be23423 GIT binary patch literal 6430 zcmds5`*Ryt75=Uzd1HB-7fBjZC#{K7td$)lbxNApF}O}c5^NR@HKC zvuximJ-gzJ+g01ExEhiQ+h@%sGgmg9>D>9rS*z%2XjM2GYclAVH%K33XhLAW8ri#Y(Qa0#RoA`ajKrXD8>{HZ^l++1kF59s(Ea=RfQArCN7w+Id6I7 z=!R7)Twk!xm`H#y4~D;SMuc&cp8Qyv_X4(y7v3VS2AU2CdL8RX;*`)S3B<5|xW!12cB zH|UHpk)gEGPAfq`t&)P8pkITwV|znN?dxf5cNO;CV8&b6AlFr~ZDvqZRq_4fBose# zedPTFT_r9vuGG{2_x#*bX50^_NRCuWRvHOBtmD0Sgn87H8BgPV=+ zNJl$#X&u(F6Yr7MV>CM`R#xIy{^(UD?z!L(gQiRILxIu!ci zecUjR8nPVLwg;DFalKTvo#~Oqs#lp0my+g@Or$Z2yoND_Y^)&HBhhgl7bpo5JZ5^u z83L(6xYmG-xFVK`r^9DYg7r}y7g6AvVmnKfIV&JxZDFvupqmX~NJXrb{8-n6nAKBH zdu4KVHL48h0)wk?U=u!2cuQt^kpj5cxc5Dju6U#CW64y}@G*t1h9oHb zIiJQ=d|bmdmdRL$Bl^%`Vv@TVyDATZ>dRt2(S`|>bXZavTC0A+Zeu!4>zKiA>cL~e zOP^UCbJ8a@WxG}Gedn3?4d;%kxgBLxbS&T#+~q`eoeHls6OgsN-Mal(yjbFP4)t`V_{a>sOP2Rui{Qd^LPh;bcR40~Bi{N6##2EaAE= z+7C&s`IL@N<1-BZniC4veSoh&=|CM{xP-B`mi^NL+p|=kPolpU;PY_3Q)nuaqOQsb zfCr*A*M_UZu50peRk#lieG~N@((pxsZ5SMXe0`eI_!7RX;bnzKH)lr2SMXJZtz4>x z{rnC6Gq@qxoCR(VZsO~rhi@qL&?XWta6gh9O{hE2W$oDezjcnlrpZy5xetBSmxgG$ zP7=uu=i3s!?{M!Moiw0&;BIl6klp&L_`ZhkDfGumrGC(KyoT4gG8A2lUrH3NG+-yN zvbvw3E6vPFk^TTb((prW^_v-|$EM$jfd+jJYl^%Bnz3s)xpAvNbtgN4!!$PQ#fiKvB;iv9LpUk zo7JktLyi_spL~R#CU~W=g$FGju=t&9mmIJBe;%&*?g6%2uoX!;In?fVupf_Hem@@3 z{C^(2_@9(x7ypGtE<79?Sm?w)KK%#pHU8&}+t{D|1GC5bflKi zXJnVzrK5EjM~uWW`hU+M2|UhU!w1*HX?h8_kH!xXNRE>p#(o^Z0e`7Lp*7021$6ZSub6TA~^?W86}SE-ho zt0#R|XL&F4bQrhL{|2@j#tMd(F>KJyem)z1n=g~TQ#<`Bj}htm|1=PS z7XWKd1i%O{#&1_LDMvnb4yZoK)+s#2U!nZNyu?ejMq;aPci5jJaEaeVLxL1ea|rW? zLxS1loy?|4W<#T=nl!otXK^k>`a3!!+#k%6p1u`)WUTjZNG0Afc$@28!P9vWN!E-=Y2p%V7TVxL0s~^Y(po;@eB#-ptsLb;fY9~ z4~Cuxy)LttFun!qpV+2xKb(}q8=nTWKj+i^CZCEE+3a7D&aU9f>qx1$dvBrm4n}Wb zD$l0<4$9d+dUfQFaFW<4gaTD{iAJBHs-KO(&(`2);WGI|9N7^5Ufx%!=O}#XALvwi zt-?>DrJY~0;bAf4{Z+aokh|_+>2j}-pW)>PK``FN^LZoNcN;eZXpn|`{M5L@w7ANo zxI*@xW42$5fbFV*?ZRgXOu%;G1;T7$PYs`=-lAZozkm(iy~ual@p*h9g!ozrvHK2g zUZxaYs)O=tcR^XAGAtr2G1f)KXexrTyN0s6hO(O|Um?nUbx=xwK^eRglr6HUu4&+# zz6M?qVkU;Fq-Bf;U5r{tCb5z0~Fum)YO6w*4E@budr> literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonDeserializer.class b/bin/org/mcteam/ancientgates/gson/JsonDeserializer.class new file mode 100644 index 0000000000000000000000000000000000000000..9c229667b0167bbab289e729783b7f72a309d3d7 GIT binary patch literal 588 zcmc(dJx&8L5QX0?Axjee8txDZutdos8VCi7M5OEmj2SFPyWYrlP@v)l+=qe#a43Wq z5F3$VOA1@#r}5`EGk*VgeFJcUy%Y)IsB&7ADzGetw92pzS_bw)`^t*zxLvYmXJlcX z*rn(Y_Gj`zib7f~Zf<9+0%361BoSVQ<5udZ;4;3IjT@Nb`y$dr{y68XozVD_!BqC5 zvVoT&J6s`t+sg?3(NgiePV*^x1kvhmBAw^oTZG=!Xe-0QG2!`N>&x@HplP*mimyx& z{T%!q({bHY!tg9VUGK*Ey3{2QHsY@UC=PfNT_i~3sT1`r^kbA@5ZCrswDY6vegdub By;%SN literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonDeserializerExceptionWrapper.class b/bin/org/mcteam/ancientgates/gson/JsonDeserializerExceptionWrapper.class new file mode 100644 index 0000000000000000000000000000000000000000..cd789d9e86e293d767d945926955c1e91851599d GIT binary patch literal 2488 zcmc&$ZBrXn6n<`4*btV2DNxX=t7&Zr&=lHINO;i#ZN>27kiqGUUzX$&mM*)Q%~GqM z{0IJ(I-{U=#(wXQa(r$!B%9PJX8hoXy?gJuIp;Yq&pDenfBo?%fH{1vBPOuy`IYQR zDUjAl)^ba>bc2c&$Xd2i^W5wvmvvc_zHK@757OUwQIgfb_S|oLt6G)54ozVA*m`bd z9m}m`cMgtaDbUd;Fw>P`fp}RuQb7x33tj2v1^V~wifaX@KDF<4r@d4x=2vKt?E13gxn*0G zq-J0Y*945xkt{vi_JZwG#}OD!7dq=hkNY7oVL(S*V5nfba{Kh;K>9`Nz+noL1+Qc| z`xeX2b3>>FM|MqMwY%(eGKQHRYq$P=^#Wo2znQ+M$1zP77LTOaIZaG;f7?J7ci4YwptxlY zjwoS6b8UHSL&z%=bIQcs4$VfoqZMe^jN`t*4fD{l9a%O5&y3KfY#uZ1rdJnO;7>@w9F`Yl+KvCQkSiIbJ>)X&qdjY{IGJCmx zJF%I_(THQsXjOux?|c4Mt-`St`AK_41qSy5tMqKks@7+gnyQQJw>|IFFUd!&v%t+x z5;jp9pS0U5-2&e(6>|}w2Afvi7F`}>D@oE1XA~QUbDmExpQM_?eE0LK9E0*1B#Oa( zC>g{RN{)Gs@qHz8j-jdFkjzZ|it(Q*>B0M4lhC+kxK7d9GzKw)4=5Q6wQwCD@hHE2N*E zBa@su!;HE=!))>%_dL%g=ee2YCfEB4sizaYXIPlf&aw2m?xR7UQ?zR^mQ`Y?sOBkC z|5XNY7elzun|X|2fsrlJ#~f}U&sdjm2g|%&p>%+4P<_q%@s9M`Td literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonElement.class b/bin/org/mcteam/ancientgates/gson/JsonElement.class new file mode 100644 index 0000000000000000000000000000000000000000..9c177b8d8f9721a851c10e9420032bcebeb7a367 GIT binary patch literal 3706 zcma)9TUQ%Z6#h<0J82kNq>utin_5~(P(tgqf~^ohL&G&d1uyLo#xQg;6DJeeKGx+Q z@X;6lfId`R3tY06)dydE^bhz4`~^O^+~=Ih1w1RvT9AZ2`}_9U-@csi$G<=S0^lYd zYdFO)?0Us?soM}EjXfi68%{C3xV38* ze1?vx$$U0*e(3NuwhP`fh7XMoq zV`xJUr;5@k{2i;pkZPSqlQ5J@yH(+aNzXH$h-@}Byhu{COrr^*OT3g+!zG5H6QMQz z&r9r*XO%49+9Lt4(CJTv*Zmn{l3}50+ZqNLuAKI^e08)wX=*2Cr_45I*-Sw zNW(f_LZ5~d!{tV2Wo_Fm8g|~NKAd@6Fw4H>I#ImB(7#HxNzjku`UxX3mtR~+NV?G& zk{IPBOf&Qh=NfEz-?NcG7mJx(5nc< z{V0YmVobTNZ5ob-8EV>w>T6D=S}wbuZ*DKrxEs8L^;*U-jUI*z%>?&6qfCyxc*&;f z1@wHzgtwezhVCO?(pqjZCu)XN4)}Iz?fb zqm3mjSx35LYc5kyd|E36BE4iwWp)hDpq)zTkU3Kul_{$@Z5FJOLBrEqOQ2-IlSPwHnn43H3ann!DrD&}nSEjr$M>}yLuxy}hK&Xv>fkOsODcctq1R;e-YG3=tm z2ioEJH?_p-j^{oSL6hqm%G5`K#B$Tw#d?b|oT_ZmST^B~Bu2_HDq4?xeiX}9trO8z z5X-w&uVBtv{PyT<+WezDaO4Wf(?&NcWy7x=`qYmoH2S3mp})q&Q$RmNY@_V}`j6=R zp6sX4MXxb>2hDXmF5!Z(awfWo0(6?*8QD*#4$$3zoe@R}(WL|8xJZtq7W(Lwhi-s> zL;rVzoyU~mArbF5nD(&(Ja8O5rUcV^Qh*c3!MBuPS~&{v)#Kod5_}EU1Mo7*%>|36 z_A&G|qN!go@az!DjjoXcy!xD;v5bzS5fhUEEgC-;wlJCHK|E&^# z7rBu5pOpA{EQG}WuEZ~5DJ1?+C4LzzA@P4H@p-I<#Q&|tuVFnT{vRd&9zG0*XHg}7 z1Dhf7aV7pEd>j%#sKkGQPebBwDDc32JP3)ut-v#WnFjc$w9~|Oa)>ROzwKOVPhb~k7V+Rw=y=td9RU>U~g<^s#o|37o+WOwP?Sq^bFFTy3nqP!f8YZM){ nay(*)(-l*JPoMarqyb;k;6@_+dji?2WQ)+dOTT+!4Lte}P&&v^ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonElementVisitor.class b/bin/org/mcteam/ancientgates/gson/JsonElementVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..173e304eefc2c23880192b1bd71a94f68ab68574 GIT binary patch literal 1452 zcmcJP%T59@6oyX`87_*0fOyv>Mq?AVEQ||GG$-_@&PGDby6awsW6WfNM#Ky!i7w#qma34tf~oNpwR@B!xK9k2 z=6nx+qPH_d2WL>&yBT5wI~$5y2`fEOprgd$6eUZYN3|b8K^Zl^F-bV1bo}C#R5pPy z_Ubu7DkDVe=gM{jXO7vJ+CFo>(SAAlG~Y<0k|=wsp~;h_J^fD#iky?i2Tb|2JMMrR z^qg6;Gt}Z;<=A&810bKY>`eeg*<=l{^$8$`UL`lp?Ie6g{StBFZY1 kBT6MkuEJVmO%2v#%0^7tj3`^M9Z_~B$#QmAo;n44-<)5hN&o-= literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonFieldNameValidator.class b/bin/org/mcteam/ancientgates/gson/JsonFieldNameValidator.class new file mode 100644 index 0000000000000000000000000000000000000000..fcc862b36df9522973a0bae271dd50447a7d9d86 GIT binary patch literal 1724 zcmbVMU31$+6g?Zek>e_9F)8U6MYN%{<2Xu5TPO)o$95p8KSCW0aZ@rIdF!Z^B_ppp z9fm&wf1s~GXPgY3fp>mWr^8)YCQ04q0X=B7tKECfz4x5`=hdHo0r(hO8b%lvJilqS zEGc-)QLz$5&*Dyv`?i{gi=#_H#&JaOzK#nR zr>y0!-C?*{{2z^0ReaL#Iw4+tJNrNeVTa?mf{!#%-)4@5T=#|LxeZ&|qz4^Wag9N@ zc7^r0?8$Q1aTv}VM(nF>F;$Bp#Xx0ABcoyVh!Xo0bj-n2nfrE&VKNz(_$bLVuIuE2 z1%^@aW0yNrqc_6URX#U$+`=cM-GE=#Z+2T`6oN?BQ#B=o+d4i2l}l@JNqc-U)?x0s zUG7&2M!1$(9PW6je`qm|&+(-OQtXhV!Yw-PAp0K-aVBZkHRKpBA6RYGaYU0l1Db`W zmT0RgYbXpNAF9Q2*LE7hSM~f#$Jbb;@YM9Ks62eF=YtLmi#U!v?kd3*U#nuM3Dq>Z z4-CWZ7_KJ`ZUnM2l(CJ6>Vh#`x?$#2oOK=F;2yPwx7)&P9P66lG^mDoZ0Pt_DIg}j zK7lxvahG8%fKqoE!|>HH=mNF5D!KKz#M_~*;#IHfTVf?J@r5^EigT*|FvznJx?V?c z9w#tLGcB0KXii3^?+9YhF;0IbXm*`O^^7G>?c<&2nEIV2BREIzi6GE4g}FjU3<{wB zsE2$V9ye)J0Zz>9;o`wjg^Tcr-rs;r_<+`^2l$ZQ3i}y_R$TMxeOyi?(>=`eF#ij* z$TLKv`?&E3rfBig(rgb)zv9vhEN{L*ev`JZ>|rfY>Y>s@bq}?_)4x%iNI?5MWeu2! zVjgG7U=(D7YRCj--Dq3LWlmPjg=1fw;F`xQFJRa7{SCiG8iLF)|HlL?beNquf$DL5~k}>z#|0@ z=D43s+B;@Wc#cTjH}?bRz)!dmTGn5s}_(5~aTz8gOyjFhZn zLb?*1NE3v70R`j;*&`W6X}H2|7($_)fQ1(J%oOh0~2eo43r3ye>*sAo=PV!U>Pf{o;3=O=R7m0 zK1nHCuL+qTZp%UKVg(_Hd1^7`R|}tXD~lw>?2=OnBddY!3DPSnABcH#5>ssKW0np z&#a%}#xQINX`YON6_O+rb^SD^FwMj>97%IzR_my-N9i;-inqREE`^uFd?n7aG~Z&9 z+2>O-7ja+LFtLOO%tY!<_*5Nku~j0oMf!r(_xzPKm(|{_0fpH)7@m5yAL% literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonObject.class b/bin/org/mcteam/ancientgates/gson/JsonObject.class new file mode 100644 index 0000000000000000000000000000000000000000..cb1f87610b8a4d3aed6c414c37b234b00e5ba7e7 GIT binary patch literal 4629 zcmbtXX>%J@7Cldr-L}+TVkZU@!a&GkOBxhN*dpUB#({wCEDp{jz(8B>$el`#NiuS-w!=!+gk4kVM1O6w6GdV5VmN4@D8qd)<;+PD)mh50=&U^*i_8bI-l+ z>8o%5{!ak+;4d0N0viiXHkHq~rjbt>cE&PoH*2_NDU~f1?9^lY*fV?7%(xmN0z=Eb zJf1W2gb>j3W`5RmN&-C-M~wv|Rd%ghYSJjC1v;m#tZleu#}t@sTpjTqbB3KwO}ma| zXVVj{I!%ufyM4s6Eq7EPJTyEb5E(1XnNft%rK1y34Lt%k)#I74>|^HKqef|-kwwvs zu1*N_>1ac{jNG!#sj|%DfH9k6w0#qWjFFo$97{g?#)vy_G0)-U1NEq6lwo6TPGH;6 zjbuAK6U8mKRl{n5cvFt{I%cL|&snZjuuD4D;5Gq0GjC>&O%>d!axN#ZDj13%rgU&S z)@ryzV0}{uQYI2d$DLRw(4BEiYN%=@HA5|sBLUJeY`~C)jRIZuDzP>?h7l)k#WJ<^ zz;%KRFj)=%T9ZIW(J2&7$2}=)sXPRwCeXHE0rd=a*j8Xc6Xm`wf zVSy;4!9aaEx4=XdS(33?$0lqM*bszjmSK$2+FMIT<7+eb_G$<79CS z%Pu``vZor}ugc`GK-4=8ri?thBAhi{2{EJNfRuK-w@7NZu%pz#oWS<$l&ggvs&P;H zx@)*Q9LHdoBi|2G?M`cWn(er(^nF)7HQyc`0uOyZ=XI^P1+NlI4v-ziqG`{`b7`3) zbG(!>I0KcwqvIzsW>Fms8h9l2E9qH<)b2gCl^Bj-UPD%3Wqoqgz3H%UlvOm8e}TcF zF<-%IwANpwzH+cNUb80WcY0z@8Dft;Wz@O6q&qBv57;aSuzqBhyi%M?PbT} zZD@XWR^`XT_K4+_SSvyBHZ=h`K?1{%C#pBu*uw*jH?Nb$>g{X#dK+$V6mnoq7s^h? z+-1pIUym%AC!xEfAb5M)ZQG_ZmNQBvlWJ^J^A~sXlne82O?k=-B>!uC3ZVl%{Lbqq zKV!7)$p-brf7%Tp!-tOmTx59}df&}*_v6433+k;gY;1jR0xY@@m z@@?sNFmV}!$t%z<;|G)RkFX+Ba68fRmp`Rl3(=9-c z`q0~2ht3juz6I#*KJ<>(p&de(T7ce3=#aeS`OpW*w5(l!;tD#cn)8T#g0Vx1OBk00 z^fcoY@RWl03fN!cyPqsSLNKWe{+^6JqH&XuR|w*I>VHgWehaNq2T`e#3LY0&s*pwH zz*BkDcfj9=nBqREvu!GNsSBy>3igEXSDJ$&dnXWMP!rQi$AZ@l*`gBc74DNF8?J+$ z#v1?O38mmkc9O?QBzZy9>FA?AfivjBS**r6Y{Z`e%n#S78HVR}HJj{Ut$lhB{s!yG z(surRO(20E;gBDdSDtz+sX)e-67@kK%kG-HZr`22VLaIk@2RDDA1;IUV?5IgPf-)B z!athgMZjZ*?9Vdy2yrvA9%7EwXs2Z{(ffP_W(Wr(qcx>ea7RoSI)^9AA;||1gXH^5pyi zr|>_#g#RlBwy0UVSgX(?-ovk%F|)*P@LO^a#_+v%UN1v zZ#|62RosSl4MM{a4KK>G#R0C;Q^2UYTe literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonObjectDeserializationVisitor.class b/bin/org/mcteam/ancientgates/gson/JsonObjectDeserializationVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..7cfd97dcaa34d0e7d00d3fb5961c9ff48a86c04e GIT binary patch literal 7396 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 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonParseException.class b/bin/org/mcteam/ancientgates/gson/JsonParseException.class new file mode 100644 index 0000000000000000000000000000000000000000..a78a7d76e2bd0441181e82629d248b770db94c42 GIT binary patch literal 758 zcmb7>&rcIU6vw}>v|Z9tfx?2;U+76&!bT&fl6pW$+BC*k?0r}#+acXq*_j3YEl(H| zy^`=p5#E%>)>02%X7b*A=kq?3xxV@N8^BvU_mCq5Ng4%lXr+h)p+hCLjf9mZh)kk` z4lkcXYUII1D8E^iXb*Wp?L?f3U?_AHe9p90@#LJaVq~hsurE`?`7iAc1nLkf`-wJI zXxkUVOct)%`CmUSPG1s=drB+YBKWVm6K>C@N=MDteL{Xe`6^3Tz=I`}P$n#Qm6ji~ z_*kY#;&>ZP0pPJt2^gS z=j;;-p~wuI`g5~{htt?u$P)*t5lX!zOGA06+?zM=f6k8c#S8EQ_=_2e0*btQT;;IH zU1p%n>k@Zb+{^J^tT!%E`98`l^I95p>wLF?6|Oh#QdmWmE6!sL>&$R0f6Qt#+s*Xq zjqOWp%);LBrQH#1>n`>O=8a)|m31HSD2J_$v41H(o~5=}@%=v(9m^>`WvLvV-2%)> BpZ@>= literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonParser.class b/bin/org/mcteam/ancientgates/gson/JsonParser.class new file mode 100644 index 0000000000000000000000000000000000000000..ff1ab07e295b5a4aebfdb352f61055d94e8c8abd GIT binary patch literal 3313 zcmb7GTUQfT6#fnb2h!jLMZluOd$@#%ZN(Bq?iC7&3Sx;U4q2Tgk%64@L|r`=bXLw*_UtcGk^X2`yT)<<3|N$0vAndF_KQ& znwpNNMpD-ddr`HuY-BNO8j(>BH&rXESqgjthnLkyY9yr^i;?);vX-<34s`2=Zubb3 zhnlAZd;{jZ=0`cI0;s?NfkR`up~Z6PInA0>=Te$L&6t@~Q&Xy?%XNO!XD{hlf#$J& zniCbM$VkHkdO~AGvnFgyHx{G&&@+_M(sY)J{6mkETE^B*BdefB;L@HpOgu4c^>IN= z!7+hjjuE;UaZR|bsq>oU$59-Yk*E`>eVv_Ceh4%Ka1bX1y7L@V;)=hSAHHQ~OU8Fs zI24=`Xxr1Rk+{dDpg?;`iL7l&&`5}EIopIY(%G{DM|Zp8xO!f?dO=_&R65hUl)p(R z{0N~%L9;-pqzBUUJPZP8MH``@XXR!rmr6N^PWaJ;_5dQdL~Lg?ZAG9XvFH68^fS1?SBqcMQATk0UrPhp5bAw?MrYvXe`exhhLG+RRj*L{!0bfv){{ zG_Ix=Oe?L;I}zWiHU)hI%2wHI1K)r^QxU~(`xvGM)h-~E-N*%cv09kF5ZpiQspi+lfjrd{wwhcSS2IpC zRS*|AxE0o7Y2FIpw#0aqo*mN++2|#>Cj+dCraIen`S~=kW9+;->PG^mtg{Tk=Cw9|i$`L6GT ztlM@)Q9!{X&(ky%A1;L6kH>hb;EBNbJ(DK;VE~`tQvxf=u5W8HPHvZM-m4vMv9e!$ z&U|_ULDa?{Y1Tr@TphA3lRp_>2%IQ##B+9hVO&d_))VKP1)6f9%bH6Fobm+8sex_U zSQ(8ThMmfI+)=t_cjJ{le7DuJoZp~Aq**}|4l0KUSN`@CWUY4T4?6hHm-D|1@R8!L z5l4lq2xq~$qGcVGzmh0}pQAhm&fqPM0hfVuHCIdl4w36HX{qXnqo$8^8F#8%HgI&h zbse>9sDHr?uez|K?zqdCS4R=NjYcYxicjPfAK-k_RV^B5w~v}eH_#+CpB`^%Tf@0n zcnueSMjh$!Z|L|1)f+f6UDLUa_cy~Y#^s`I9bKEGPD<*Ur1E=CB>3Q>hk9Fa1-;JP zi+-L+_uCyyyHJHFo$W>t*U*CNl;}kmeU#`&CkD70;epLW&bGiUC^GiRP+*OB`fT3n9> zXEr#>wHx|T)R4YK4{nollDxC1)me2M3bUIR`s8DH`Ks}A)wsk_`A!8fF2GA^Uy6%8nN ga?nJmD){Vyf@k~^f1{40Op*8aTdu#SWEp<=4>5#w2LJ#7 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonPrimitive.class b/bin/org/mcteam/ancientgates/gson/JsonPrimitive.class new file mode 100644 index 0000000000000000000000000000000000000000..555de25b6924181a3272182e10a6510654c70374 GIT binary patch literal 7380 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 kq?yuwX7?N8pjzK#V5s|l0X2^tpot1SKD zO3{^OC1ct}OWJP9bY(45s#WdG6ApRlSZ3LJWx7_?o~+ug{N8;i*UXKwt05+E{)M?| zX3C~r%FM64kVUSx3fy@kTmfy(EV@$<@V|>vGz(SIg3wHP;Ch&s!zibT=F+P<~^e@o>xiIhM}2F_D{~>-I(z za~tI{0};#Q!wSh7qviWhIO?pdFpE#+THZB_-x08N+_EiqLZFrmxBQpHE{9u%B{EeI z`0@Yt`UY87JY$p9Rhd8(T{vRft2NM~8+sHG5abS+uL!MICV@G+Y))hc@fM zY9w$8UCRDF9p`Xf;M|O5%ejrpigXsul`^}nW2Ra(%LS81kMF@^%>CA4^= zIkRkqu7lw0`oKZF(RB2ZoH=~3bE%U(KPt-#H6)in8bcZe1+Il=MzK{Lu45P(wtdl& zl%M*lKq`3(rwV``qqwD0*lr87m83gaHfzjQCjs^X@fNw2@}eV&QGsX2#JSJFk!xjY zT1II@Zut~k>Iq=y)SRNK83RcacKqoMbPgI6x1pYb|$s;$}e-PZ0kLhujdM@1TpoZmCDd(`D zVP0UcnNsTb6i-=0vsjetuE4$K(lZcb*ds8FMIE1ky4}tbuT&#Ae&lo-;n+K@`nn^j zew$J?i$J7mv$ew$a=2ai@v`YxUtlcU^oT~+gAz#Os~b*HPFd<27&x-=;0M^S(iQ>z zv29Do(>7Vt@QuJoGZm?)lmP@haFYrd<)*>UX*=Mm_9=QZf9^Ah84 zjL!wGMuHukc#A7P5J&xU+1SC`MtTd~M&A~CjiD{{8N0Z&w1X>K=>M5pqPWVj7p)xo zX>^qi2k7D&I&qzM<_*39h7ZTp>wF`yM^AV&MJVFU6xAp#K%)MCan4joNu)R`YM&EH z?e0wf0qs{9uZ?ti8#iOy7z zUKB)|ksho=N4!W|xdXW6L0<9qG$7joNZKKXaXM7YM+3~C7_-V!*7yb8ySTrU9=y1N z2iy248{5V7l3M1|%csxa(7%Hx*_NJIPs=uD)sR;K`YgIwWZ({SJjOeFlp)^52t!f1 zp76aiSY;cmvH>e{z%yn&O8Xnk=n|tHVq+}h3*tubrRV24zT&THp06nyW^4Q(I60}) literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonSerializationVisitor.class b/bin/org/mcteam/ancientgates/gson/JsonSerializationVisitor.class new file mode 100644 index 0000000000000000000000000000000000000000..b7f99229a000453cdbca485f073d03c16801b219 GIT binary patch literal 9953 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 U2IR8?c}xr(K+FkdaY0460bO9CUjP6A literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonStreamParser.class b/bin/org/mcteam/ancientgates/gson/JsonStreamParser.class new file mode 100644 index 0000000000000000000000000000000000000000..81ee818e9640be2b96f99aa4902e63f548bcfde0 GIT binary patch literal 2920 zcmb7GYg1E47=D&S4#ZF>qM{;=8o2}|p!R00H%t@^i6uyl_d{5cKyprca)S6%+V7oy z=?B}X&?z&`v`)YDfAn8Coj$uslYpHte#q{g-S_gm@B8e#`Rkuwe*1U^}HRfoz~3z@Bu#b;~@M#2pm$Y0nT+}6t1ICrh4Of zOC~DCW$7%M%LS<**%`C2WIB2EUElP&xqMk5+&<8~2~}~fG0D5*tOw$Q2SWzH-1Sa1vkvYiKlFJZ`s&v4nm=K{gD?pXq|zU)T?R|F1d9t%7k zYaej=9Ui|&hPpsPpN^UNf?NqGha_`gE|p9K%67%c$bf4HR91YL#C1iB8v>#K;eX4G zSj;*03q?|13Z*vV$1Ow!y0X%pF)L+~`6!FnykSiR1Gif)Pc#{8nl^HDj=TEdc3ioVEUBlEEw2IJ2Ma^I zS-Y-X?H!G%4#$==fphGZDShc<>;^=pYt-@(PbzN$-Kl)mGTn+pnT6KdqTl66ZD-e; zyibaBrt2O1Y6Q~+L)$n(v%|`4;5AN#e#R;9 z7S3?bljhlLj5a+TA=nz682WIV_V3^fW?Q@l8(xDLM@V~R%8BSaHNE_v)FJ&{_a6&w zVd`5P+`%P!`=qMe|AJ3n#dk27?*D?Iu2pxfC$@0&cf`IyPhI7Ecqgh%WG_)1B_1`O z!JMAM^ybky8ew9A6w|!OlLwSc6a7OF!zBR z$2Fd;<0J|gK@p?88B^R>{0P)w)Z;tJ%*2srg+}#ijVl!uYyB3320YirO#^b)K$gFC z22-TfT1XctD=6Ew1B>M=Rk^NlQV|$Nyx?*^~n*LD4~oYmO@vcP$@M_FiP P#rqDpdaPhW&oBN3*sAu1 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonSyntaxException.class b/bin/org/mcteam/ancientgates/gson/JsonSyntaxException.class new file mode 100644 index 0000000000000000000000000000000000000000..770437f9b2b7247e2a430efd9bddf369482a69c3 GIT binary patch literal 782 zcmaix$xZ@65QhIkU<`;minvBEipr>0jTe_hLW~K@y&XGa8|X39jmu+sBJtn@_)x}b zAVv}69J*7Ls;|E4dH;BQ1F(l>4++9f6o-B@uu?RAp#vqg4TY7)4^5=~3Lmv+ZN<~c zQy}lHinNC$!T-1GLc~UXH4(;*jFo8AWo#I7b#_dk3L$qCX=8=9bmVLpz9*kR2z#NZq*kTX+Lvg;Jy3LB^KNKCyDK4^90!yFM)20&u literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/JsonTreeNavigator.class b/bin/org/mcteam/ancientgates/gson/JsonTreeNavigator.class new file mode 100644 index 0000000000000000000000000000000000000000..ea151c072ff2a3a41065d689bb12c3dce2e332a1 GIT binary patch literal 4535 zcmcIn{c}|16@K2$-M#s^1PG84F%4i0$tGk01vSBFM36uTXhIA~TW&U&&4tbGdiN$0 zZR=N4zrWks_^qv?E$TQ5&UQMEKXp3&u`~U-Gv)s%ea?IDE-Z8=mr;jd@4fGP-t+N1 z=bZQCAOHQ!HvqQba}zOz-n^Gd&7^(Do=MrcwCm*jjO{zcRHm5ErS|b>%yXO(d(P!@ z-ZNn+tT<`U*{Q6Z%cKrYo^;Z_f;s0FUG6Jv9bQu7?yNIIJLAETeua8{dSo`6Eh?y^ z3W=R=&h-Zrws&5$x}#m=3dXMdlv9ryEVEFDMunQruJJn1cMEYOu_f{pSH8(w&%)sxM=v(F1_2bv_DmVF}m7ZfF3n(jvh|Ggi*iyblNHS zZa!Buu})!?M&8Y*h7MMC>d}fe6F*kyjEcO4_1Hk|Zczvp+%-T)8*l?|G|{e*imECk z(L#ryTvs7dyy~>jC3YGDJAiUi+<)F|^mo+J~zMD-Ah3j4^}0s6@ye!?=mV3Y(TBH#lVBeoW|CeQ$o$AvY__+-P>W zMCXo5$~>U3>=LouF!7Ued1~1McA^UC z_>kw$xV}5b?$#TH*pb+eq|a72>wEB{t8c z4+U+51>zR>xL%R@5l;tInaGFtV1)h^CMdIE#*s@$Va;V7q>?whID$*nVbwQR-$?U? z@~t%b|BmkbF7yx3@Ul_gPM@MH`tFlH@T7%bVS%nz8hjAOfiQ$SBET00ezkM#KayKd zS$G=H(0V1ef}5!;N?M7i?wZe8_z~8M&o5Yb5ihZbwa?Z5X1?gVF6Vf=vUaiPa8~`a>V9M= zVXxHJAtyG@n*0MKh9;TB`PL+JIG+ap*FkQ)2EHAkgvc#Vehn+xeU2~JpTo*8xD>-G z{x<0YZTwx&V;j(jjabd~^}#W$K{LOoK$}teO$^0ofE|L*7Oolmx=swn)=|#n%7yOp zxPFo5zQXbnHY%LKKe@DN5hHvg56F5?3B55G13l-ltuKBCtu65qZdLdet$jwar^RUf z8UwA1h}R6r&Rq&`T>N)6(e?w zQ9@dqqoET!5^EBRsJp`6-$Hw?*jphVG?p!)5QBhdXb>j}1aKn*@8I_)LeYsfPVHSt zqMQHjnM>8-D+tBksR2 zfd5c~kaCO^5!wnV7vN)-(6?a^=I{{7=tdt-lb#x$Xv92s4O*DO!?Y2jjfrsgb$a=8 zejBvcfM4=N0*_L+MQy>}W88b3EBjEp>LSx2VM3W`HE|QKRQiXOi%gAJunJsc_!W_{ zP-I(`h(!-Lf?b(1YD<{G3!8Pyv=ii&i&&?z?pZ^Qo-mN)-mlN&*)up^bC&PSqYZo{ z`{IFEOI!q>k0aR<*J8JEm#HB_`>Tasz9h6dI82$W9Dgki<19n2(WDMA=fSz%Bz27# z!a73HK?*xbVG0LH*&$B)_i|Rhk2CTpC)zQ%ILt}xemu#-6TVNtS{nGmET*cL{Kdp+&ZHkGP4*{>w%Fa7m;oK#idB=tqXG zg8;G}SVsHD8MMvDGRZnfv!zTi*BoZ~3EYkhA)6+UE z@Na+#m98?%ZWD^_jblP-C;cLQ6fs|ehdIJxsEqtPOa?ML5(6y>jWCUbJ{HWH^GUH} z&s0v>3-3i|N^XZx%_pw#z-~MIE8RKP*_b`%6I=UH%Y?n|cvvEA&Sd4<4>Of0t46H7 zfu_^mA~bIgzV@KwOe&9r9x}1|G%vz_dp5QIyl@`lgD_9<`{^)?sS6>@-MkpQWL`!7%KXTSD7aU`S(USZBXKNmUc&#* zn*wUQR>sBmc)Hl&7 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$Strategy.class b/bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$Strategy.class new file mode 100644 index 0000000000000000000000000000000000000000..929d4b4c09c5ea78d6595ec70c9abc4fd108ac50 GIT binary patch literal 348 zcmaJ-OG*Pl5PcOjlZ+8OfJ+x~V}rPhu0%l@P?!@`nxg5@(+%CN5Rc}<19&L0B1%@t zrXCcp-lx94KRy9m;iSQcaGSC-gRR1Y;b^_Y>bOcVuB2$X6kRXbbMWt6eTpwBc)LFD zYgUq5H#j7muK0~j;ONZrawWDBrseNQ2siU?OV|i5F1o#@PwIRhWY8!JLffa;Y~{fR z)jHb|=yKygm_5cQ`7UrNQW_i+uJ=0aP$NwK3yuN8f&NQTs~$lY7@_%{6HFCbWoS&y G#_bQQYiP9q literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$StringStrategy.class b/bin/org/mcteam/ancientgates/gson/LongSerializationPolicy$StringStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..cad844d1a750ca5b8769099f55b2382df9b31630 GIT binary patch literal 1052 zcmbVLTWi!n6#mZM(x$PktF5k$^SnI?SRe%C*r-00=?=AZJGg&jmPW~Ds~*9d!aNtyD)RK+S+QyzT{ zH!Q6GC3krl4sPNW!J3L_A`de|Yo_*H3Z#3+JmCuL_KH&KaZ9wGYL1;LICiCIxF)yEkK8jI`?X`4#od@QO4PLjrCR+swTvBlvom7l$BUwHbi1BG`J-w!Y z;fjF2%CMR$9KRstH|>g^50>mvCa{7&+z`BPGAsnF z#!18m)mtiLLiJ-;x#ie2x zBMjj!ZqWNk^x#tCS*y9h6WNnLM*fo(_X~|@^7cz z26>6kc2yhf+r>R?_#3p-2*bpEg!pEBgf5CFe+>CI z62HWqB*G&#G*G9=M|j1xuh0g+Bh!XYesV!8LQbHr7IY55;zwX{Ji=o-k6{#J4X`mP zlPG7`4sMrTO4>mwD{lQt>fOVWq0_kR=$bKV!pR1PMs!40CCRisO#K2oJ5IuL@@&H_ c=KM8>d0KmjLxM0~(9_+gbs-|ADnlO1Us9kc&;S4c literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/LowerCamelCaseSeparatorNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/LowerCamelCaseSeparatorNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..654e7065ee6ebe078e47d20f4ba021de71bd425f GIT binary patch literal 797 zcma)4T}uK%6g}hD)@E9k_NmWm(1tG&RzyNii$oiO^fa!+HnF=Sv#Zh1>PblI2lS(& zSv3%(#g}_I!@cLsz2|=ae0%|DprRo`a3iE+cy`FBXHehf%nuzJvcPZx;TxuSWwJ#* z=C)|SEHPx# literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/LowerCaseNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/LowerCaseNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..eb7b0b199d6a2d48feb2be8e47a982705a4dd747 GIT binary patch literal 1001 zcmbtTT}vB56g`uyNfTqW)>^Cf^C>EHM1)czf&_e8L`?8i#&z6Inaq^gS;c?VzO>MX z{($}{>78U7*AS%8hn>0i&b{Z{ul;@d^A~^}ysM+auwz}y2Z@(rz=cVaG(HtxW<1TT z;jz7zt}8NmBnHZ)$5yN4rjCf=!-H`rGRa-0uH>PT`l1}nP}@^R`F)0Jd*hTL>e>t0 zL=}w|W>908kCl-}`QTi-zBt#CVKKIe(5J$wpclr-e^MF4Zv0>(Qw!)Y%y}nFrm0d& zjwt%=__MeYTnm%(o_ADir(|*RQp?2i{>>Lz*mJKm?^+$~%9_qb$-MwzX!KNSgwGvO zT>me{UWq{%W4#E({9r70_NQgh#8W)0V~Js5vcwja@tk4S+i{;5mfBNGsd?d2>BBT8 zVW^*t%P{EB9)^{Y!@b54(_P*)yXBGNWGBPJy@3;IG4zj9BmSi^49%X+T|yffR%&%z zaCtf3hsv-G+D-aJfC_!Ilcd*4;&iiM+5CY=--gdkI>R%tg;_dVBL}+YNQ>|o^8~U$ zas^L@AZO$ekv_Ba9gAN{sNxP}dkC^QawtGT1}k_`0Iy=L$Z8!gDfSg1{3Tt-YqBuB JAzKA+{{U;W5#ay; literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/LruCache.class b/bin/org/mcteam/ancientgates/gson/LruCache.class new file mode 100644 index 0000000000000000000000000000000000000000..1ce4ca3dc5a9739797415534d26a870305d9430d GIT binary patch literal 1973 zcmbtUTXWk)7(MH2>?(2VHoXuop`@whv{9QtDRoE-ZbIF-@Q`3;GQ4c;9Y>8Vdn7qf zeh-g*fEh?Vg&AC9R;jkRYd3NbxNgD1v_OF+t8WM0J>~Dn zy^azn)_YCXB3TjV!^Kp%?*;;Q>*vZD*-|0?Nt8GJ5t4H;h_#)q%1)!QPN=+WwKh7c z%Pn99rMj`ZBfYls-QH`}3@c|>v<10sx9!Pr;8Rns6v5ezJhk7p@CgBT908UXgie619A`BF~8j# z_)WFx>V};jwcWDr41u54ww|0dtTAD2{TS_uqZ?D7->l~N#<>Dk&GVFB?Z_ZdK^8oh zSI7T`*tsmWSoDbi9Wtik0sTtyP9uT$ki`_oIUf21@+j&P%W;E>)qg6SC}rp!@bkg%QV9=)RBzzka{dkuSCL@nK=^nz(6-R*H&iAOGkM4 z8%L3a8AG^o%(_f0DKnI$86sPCEE1w)T8O}>=W~5_n(NX3;Nm$ZqqgcR!yQ@mT|AEKgl{W07Av h_BCs+no`9y?SIZ;f_onI-zL7{T>n#E;3evr+<)G1cr*Y2 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/MapAsArrayTypeAdapter.class b/bin/org/mcteam/ancientgates/gson/MapAsArrayTypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..61298d539f53166e259c7007d8bd8bea8088b2cd GIT binary patch literal 6829 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 ajL+fE3oAC~n)4b`)Hf&a7tW}{U;hKLq3_86 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/MemoryRefStack.class b/bin/org/mcteam/ancientgates/gson/MemoryRefStack.class new file mode 100644 index 0000000000000000000000000000000000000000..57df97c48ea2e23e3e6d5db1c0f57f4bcdaf90fd GIT binary patch literal 1776 zcmb7ESyR(c6#i}-2yMfzxPXeNSXwZMyF~;STqp$rnbGm(60arDCN;fv|tR!U-;+g@gb;Od8M$Ce`u(PZB|gLd70EaHfw(LfAw z9nB2QTS&ywgvJ;c+6>g8o&vJABXX7Eg7D_}LV<|2WnGIG=DBC9@6f2pMZ3%}urtS6 zg@~b6s+1QQ9wm3q+frNKuA<{Oh%OzS45=Ljoc4s}I*)B>yH44_Asl8ftVLlh=Ukbq z6bcM`lR;B9H8j&VuQcm6un$KWdbf-CJ4wf}|4mbE&D2A8Vd=jD*Cvs`(UMzYFq6BL ztO3R$uYoz@3xf9wm30y)($7LGQjk#X)8W>h=G)Fv_ar9usz*S|4 z<%JA%i;;EAz%^W_FiD%luzyqSo_JEA6*kq5Wz-(sG%$`^v}fXJg%_y2ZRg{mVs*#B zT_ujb$jdn*z>x6of#6_jMNu2J@|l@_h^0VN4L{|laJE{jb^?XUD!i5BgnyC zbkG;0;ocwO-KH}lWNS%(#DUa1w5F>#@(n$2$QFUZi~Igw!b|#C9YK7EMVUB`6NE_FqQ+~sGzWFZ-gWFIT z-2|~gVF+hJ3RS99qhrU?-%%G`4Tzl0y+(526D~3kaMCPN5UiB-=fl#SCr56piqGpH#Qs#Ibde$3l@i hDPw}cQ*+M(8-Lmv-j>j_uTV+=bZ2EU;jRP0bm7R z>4*uGJile`H$qG9o6>FAmK(NYXa!~~@LY4#YudMM%fBWAt9ku?!)XV$=hj1?F0BVT z;sPh{$a~Usq}wvLckft@P)AarI5O-Tkp#x}dr*NurWVC)hqhy`d5*)NL@m*&Zns<+ zwtY*WaHLbYYmMksU6Qo?QiUgzW!tsGia;WJtD4&ph_87~D+LV`2F7txK+EQKbW90M z4!}2LuvfRj6eck-27ze9h@a6*=!OuI~1T><5KQhfr*;!T3hY?UCaMk?mDc=RLyHhXGi+BTKA0c zaL;B@S8F3%GP={OVC+^^;8?#)0)orq^-wnMZpwoQO2>O773_I!r&+&iAFSJ!L;4r9 zqmd)Gt6}KdyKM@Osj1==4Vbt{T)nMzv=zjZ@1X=(xo62c_)q8u$>G z*=^UlAF|f{2t#r$sdj#B;1gU?Xl}TpS{Lb|nnD>B9jgN8M;7n36byWd&jiNzWY8}w zDNqQ^Yz5a0tl@KNgxgyYElQ8=6jV#`|CQ>Ma<4fuV4u^&YKd%-SZ3ZZm-CfqC(&@^ z!-o{}kjlE})J=RvP!A6JqDsH+tfC2|>R#J#SnIY@<6=MgqyHX7)h%4$wbJ+|_)e+Y z#d(bXrx?`b{Em0ipyfC%&$&)=F6W=(ME*G@Z$8DT-;gf+i9+G#mBfq7ajo(Qv$KhX z;%fd^r00J}<`DBSeDl2~7N+ArcmDZ>=QW(;c$!$?EsNtUCTKZ@MJ(}I;atM|9M!JI zu}tf`oYfa4PBu$8L60ms=4f4n*1;JhbqF1Kh-k!ghbhH+HtbS=+8cU`d zgraTWKIRxQ-1m9c_C9tQit&`U_YQ>}ma4HT{63;GFzAuw?E{AQaagZXg+9JHRjRy! z2PiPC#JScT9t5SBz)SM0WL4KvgJtVp$G63XRIg+9pJTA7z*LyJY`Hw__yl+t<4^(1 zeavo^)EQOR6@HYC2y{GQc=7+!MML}NAg?V^b87UB(AFkZ;{vo&&jO=Us$=OUL2DL+ z7>f!? Lcm@+oYm>hKePnY@ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ModifyFirstLetterNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/ModifyFirstLetterNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..d467acb5746e29b69613beb48bfa9c1bb9793e2a GIT binary patch literal 2673 zcmb_eZF3W46g^LqcAIotuqA~Ev=*`C1qh;mG!A>ZAu#5+)y$&q8`@$co0a7YrtA3y!}krhs4bdyb;hww zeOWrfvFX z1d56O5jQy}5Y9PeBZ?4uR47mdLW$&D6n)sKV240z+bU*ULwD@5>6?!2sdxqb0;;}X z=y!^aU#wY{KrB(Xt=-i!mS$Ho)AP3t-OncHA`sZ6q7z*LI|`<46l;s~hC8dxTZTY? z!O=BqPIFE9IWUI(1=AB4e~J1@WcQ*JLA^u0zN^`uMSZZ9j5^zzX~}mfjciNqu2Hd= zd}ele$q4K<-?TD0$C7q3kWIF@2LJ+*l3BGizveQ;y_XF!-V#BxZO7MS;LK$6m_5@j z3kAahyEppKNbYRSw91AX#SnU;IDmr+UKiN;qMM30FiHvP3z|FWQ!$BrG8aVxDFsP^ zfers0Jv2_At0IlVB-`{FN|u*$$s01#Q56{+Bb>IhWY}eaeSFhW)uz<4GOgn(-oo3w zVHtMSU#KfIFQHDVIE8l@#&;UGsHwzOtZW2h7+1jV=eJe!f0;=Y?@H}ZU$4h1f#cpo2dYU;XNeqKi+k=w#aHs7W; z$-_lS=_P?9ZPc~(O3-yuo4}NcVvtAl?GHSqRTsOM5Wcr$A ze!(r>T=aZ*gBOC?FV6<`4Q}2uEGgJEr`x9cZ-!5xx8!U3ohfapjwJ;=uR;fvuH4nE znlW9GORrmVm(s7 z#tJr<^j)+csrlX`W}Wt$mxnsBnym4)Ob#(viEJrx4Eyy7`Ro zQxP5f0s2zwh^C*SH>cNXua37ItF~Kk+`|MCTac zRqW-veYAC8zl}$|TEmg6 z=`TA);1KIfui?#b`P;w$Y#bjU5)ZH8#N*T|2A<&b_fWzsAf^&i9^jBfJM$33DS4P| z0IlQvSa&=e?_NV*-i#>^1IGt}W1+oc`Z4nk*O@3{fag3bxd;`PunSYHzKCH=Qv;Wg zLJ22mo4_2suF`q~pW-7d;wJ9nV|kE@I9y)=hTyK6)5!hTU3eo^BCG4RA}$Aw+-K z!^ku2Rxl()v_IO{J0bo;N+cMS3oy{fSM-$%7~OxEUHA_BWDoZ~g|-gk@cuO{G#Fih zB8`%*P>XJ=%who}F!_a5tyi3CpfxKVt>-T*9)-oMWyPc9>{^f`|A`#QDI~Z9HeYqX Q!4m(f>y@0`R+ z9p1Vsj%481bx14TT^1>Zi59=%j^e)OoHkm*)mda1HU`rANDP^(^rhZou#2U0hSWjO z6gk)!$s>y)hVh#8#Yx<5i13Uzlwg>u1uj?TJd{cPF`3d=GGf@N4c!0N+f-rcT4D6Eb|36vJ)(475bcdN@?aNv-XXwLq>G@p8 zAz3ijS5htSnX0s_`29V@WFLc}&}-aX=hM8IpT!A{Ay*IL&=p5AaeeVu?>3T?ViWXy z)Y9~=Y-;pylnv9!p~xtv%TLHX(!fHV`iz-e#wd;R-2#kZoHF`Xn4~@t?^3iVTJ}TI ze^ag*Wud$Jp-d{KFije=5VMpOjB3uXj(b@4H`e+eta&VuW|0`(6Iz(ZlA$jf?#esd CN64%I literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ObjectConstructor.class b/bin/org/mcteam/ancientgates/gson/ObjectConstructor.class new file mode 100644 index 0000000000000000000000000000000000000000..7d1d21dc740e4e73bc074b44f811158ea15dccf0 GIT binary patch literal 358 zcmX^0Z`VEs1_mPrUUmj1Mh3n7qICV-Zqn$c zgEt$|vDGt=`DOG=AU85xXiLaZ>=*x@!XBm`&zAKY@sqN2n~Mh0D+8a%N& zfh#z_v?w{%Ei(t`1~Cjz>w&z(#=yYHzzhsI1_mZz7_c(10r~789s>uE&&j|AWHT~w HgGG1%%a>@Q literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ObjectNavigator$Visitor.class b/bin/org/mcteam/ancientgates/gson/ObjectNavigator$Visitor.class new file mode 100644 index 0000000000000000000000000000000000000000..aab202ee56b12e25a7d4ebea919c4604e5132d3d GIT binary patch literal 876 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 UbjgR`;&=R&C3giszYj(J3nj3C-2eap literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ObjectNavigatorFactory.class b/bin/org/mcteam/ancientgates/gson/ObjectNavigatorFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..47c3f7193c3a6ad1073a2816509f13291b1f399e GIT binary patch literal 1565 zcmb7ET~8B16g{&oER?N4g@WJ*_(i)d6iSE>H73T$Q>{%PO?WVIx(v&}c9(3o#Qq!K zeAPsP(Zp91f0TGFXYc`=N&1D|5;F2i~?7WefB z%jvYG=k7!i6^7{pDV+TpZ%Nm#dycdSW-}gU`+vkGP??ZMpG#K;FBlGT@$thn;{C78 zmv1m6UwQi?g#^+D#&L@wk;^wym_kO!G=mx2jJhu@&)t^+^`mXzHf9(M>rhz7H7}@j z9EV{xR~>A3CEw7IWhlpDtMH*JQ3GPn7F)(p2|6A#Y{bS~by=hh z%NL|khIiL!qep(Xdm`#w`jz~RO0DR~F%)C@4Rj}k6_`pr1%~%G;}%bCsCT3sh6%5E zbXgq3YCOb1FBoQQ5%l%<^0{v1u4z+WO#g#T?RXvE65CP-Z|zzAz3)XyjeWM!j~}g zE{$0N1YJTBIReaM5hj*Uz&)}q^}ui+4`@fQVR9C(RCyn70j=gKS%yE88j$nqvQrW3z=klj{lgXQN(I^zJ^i+ ar)Cu~LP!gPFqII-=s83%^k0X`HvR%s!Lh6W literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ObjectTypePair.class b/bin/org/mcteam/ancientgates/gson/ObjectTypePair.class new file mode 100644 index 0000000000000000000000000000000000000000..63ee5768ef3c0b70b2cea7109cd252d3adba7c1b GIT binary patch literal 3595 zcmbVP-%}G;6#i}kEXGxl09vgDwJIdRSX-+CVi5&@1hodKM5|rm0t+F*&EnMln0ETm zKcH{=)R|7}iw}0DqEn}ieZiUj3H?(#PN(0wyG=IW;ExBgckey-obP<+yXP){{rme9 z0Q+&nKtv%~a;MUBdC#`y(pE9=*hO#3^6YYYs$43j&rQtOd2jUAynWtsTmy9qO*7U_ zD_yXPQ^Bf2v@|iJ(41Mm(yLJCaj(MW(3)#c7U(oBUTI;@yLQ=jZ`$&%pmGWgeNNHw z`W5zehW7bbdP6fco^oAd3^!Q1ZpRSC1`})1L};B|V{1TgChE~3qZShe8fDaGVhv&n z8!}GOKD#hCVY{Q&M1dfhGo`#$7_(eQ-h;_HZ`vsSDjX%SVzo%kh~?#{nf6Jmc)eh|3fDSUuhV(UwdQQkcAYQm z>q2a>bHtkO?Rwc($CbinovEVbEw~iSlfIJ!XOCx2TFR-g@sZh{;)QJqh;VDh3zjv;J7gy#W86Zg9>}X{sT8FYbqzQaoX1! zdqU6ZEMa30~k?X8yuBPPz` z9CKwA1`Af1xyEbSkDk=}`Pjq-WEHm3bRh37SOt;JsmZXI6b8fe)|4+qvhOrp&l*cn z>qRM-sSvX&p$uGNC#p89@E(PsR}S2lki+(3KfMMn^TMbuYN#>f@TrNbxW*bf<$-cp zIs`qD5rc7K1 z-y7^3ECXxy!b>G5rn4rd;V9IXylH8h>z(rXn){d+D6z(}r3E){4>@u>#%ue>USR|K zSd=KgE246^le@HQ0ZD_3>urSK!|tcGIBw98t3YFVwu^fb+C!UfRq@bJ0oTqnd|zQ8 z@#R3eUjT%?jJf-pGju2*cQo&8_yf`LD6?sOgk9P3I*#Jmah+cF5t7S2?+=we7(4JVtfwReOMp?w+k<=2_J;u@TRQE#++)qky zJ^c)Zx(ib;vBm=eqfQrfhnB@bhC4)&^q>{JL-aXP2BJ+T4R(9TT^BI<1DTYP_V`)G zB+F-1$9+jfUKWvgg!37l+Ap&37;0P=WTy2YMkTeVPHl@;{t$IK%+yX%wWqO%0J<;| zl0{FDQae>SMlzI!NS&@%&#~FSC!Aw1B`UujB9rHKf}==? zT3O3i*795vYS$w29Bl@2|Imq&&ck0h;!*{XXp3<542@0gccIx`#N<8B`;__T&JKyP zC7?%~voz+AxM7#_-6}bN!ozGL$%O0fC0VTKJ&H0zE;2vMOY$kSXc^T^G58XiX~BWK zXbZl?{l)kaTJ>U_il<$LRo5+Pbedz!QWGsHE^Z0DGKk-5$j{SE4{%z}IT za9%(+Zt@HFbE^9mmHj0K@fD@;H8S{y1^5Yxd6g|%~jz5@$#Ie)RFY-Z%J$7vxpcEWsLqS3cP<5kxqj5skvnMh27%xDT6Mhe-xUO3=d zT7Ubjtx#~hp0A^w&{fEFE?@b^=@1|% zTlg5CD2zLi?tXh!-%ojtx!>*REi$bfQo-8IA~Qc>VF@SMv)J{$YkgBe1uSjU*KG9i zdt_qUYi;3Lw=jOb<^ECocaHiql(EDQAtzDf>5+USeF9=lJvqOrsxzVIxjj@}u?{q)d2#SNvXG8STivygq1R<2q92kHT`#%}#@sH?)b!SMo% zzhIhHnN~TrvgWSwhHg^WCcDvM!B!aa^iW}&`-N>{Iqu^G$yQnHq_8tw0r8SFlCv7I zIa&o|3a_vr*%alIObI(YmP-}8{uopCOB}K5&tb>ZP2rU^Tr>lmi@7APRL~#;`Bm^) z%w>*y6B+&iDspJ04|FI2xjS1rmHiXO4MS?-+%TmG&I_zO<=OBXt3xfC9chsul3NB} L#`F19w-;UmvM@92 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ParameterizedTypeHandlerMap.class b/bin/org/mcteam/ancientgates/gson/ParameterizedTypeHandlerMap.class new file mode 100644 index 0000000000000000000000000000000000000000..7edc1b1e9fcf7d1562e517f797f0523c7a64d0e9 GIT binary patch literal 7745 zcmbtZ349dg75~p>$u64_LkuVyWI>|YY)Bv#DoH@20!ASqiJ{=tA(@2L&F(t8K@d^v z(R#FMtrbyQ@B6+IFjn!X)}x2L?4>>IW$k@?rvLYSv$L}aNPo%?c6Yvc^S<}~@BfZ( zc=3bBo&eBjl!Xv5a7fzeYv}LJ*;appmFiB|sa&6xv$G9-*>tL5h2>cNcFuMZXV^WR z8#DG%R;njyJIkz02tfnor&#N)hNPA1YgoSa6uUcTpfs88>$4pL`z}>C2XcvIgRCVe zv{c<|Hc--UWen`;6QN43kMBtIrL5e5V;iU|zT2WN)n<;}o8)c{Vp4NwXY)cnIx#2q zC2YrXy4P)7n#j_aa-RxWp;-HCu zSYsgE(w$7C61jzRvnJMMAb3Q&$Bv*9lS7z9uM40lZ6@}{J_bU4cCMXh8>p;_`F!oj zIfSk`f_+gH!hQz!*%huPrec3$NJScG1NAjyHMz=n7MSrc5H&Flr4pP(%5ER%Uu!#^ z+PR9Q>2538WjV@Ocd@iZ`5Hk9s!be#i6I=sU=(aT%F3=|a3eSn)uO-FLJ02v zkZN@tO9d^0xRz@$Q3g|^FmAn-93Yn~eD_=n7|4v3V1+nf zcaSF>My%4OL1`C6m|8^Lz{kp7I$g7S6Ly{b5|gC{rWNwJEt$0YtYk-yC3Mk-Zab4p zq*GzE8>nf`JB+R`DC!3S_b(vU&PZ@|Y``c1I_J-xX9T~fum8sh;+GA;1>DR9#7i$}jH8>%J z;|=UxNKdbT+w1M5i4$=W3)ZUEmF;cqOAJiWAu6sYBH0|qr&-9CueTj1(Zezp&8@Se z_6DYjx*&t1>vT(r_NJZarrDdN&aE}kjUL9B+Zs5`wQ?uwebjK_@vV4iRfb-y3xTR8 z6g-l4U?PE2*s>hEKfRu0omA82ue`1TL6<)F3%XMa=(eU@w|eZ9i*N{O12e|Zq1EXd z=x1Z~7!ks0d304f)3zTzkVy8}P8h6lGdqb>R>w~$Ga4wh5J3hjw)3Je$SecBS zB5^Y$|*mHZ7Z&pW9TW;!<-N9>7B(JXnMrZ$It`)alHt|h-i*1CAY*!vIotPTq((DmLWRhlu!qPLFEx&PR>;5L~ zwzm&ZHA8UzM`*LnWPrB_;~tI}d1zH6&|JL)sKb; zz^^%h7QrH$d1opE)qeGEHS_6pJy9`L=R~P$o^4acJS>x3Orh0_hh(hzgNe6ftSQaf zBw&vmD*j~R&%(%3`?LWo$<|ofoz84r-ph`~l=)DkKIHUD9<_dq$8{kP*s7U-Vo(_W zVlr&%w=$#0tfo!Uvi>98@xKPDYL4*Jskjk~!gox(i}wte(jhwC{`UW}(`~n5e83oN zuA?RL>F2-6WY(P zc@P%m>#MfI4q#P5@>G#*9!6^QFfywvoFU}2_&~+RL2PoLIV*r2n6K0fRD6c(gE(&p zpM6qpm&CW@b0rXvf+{Rc3^y=`G-_mU59Yg)xeD&t1iYEGX9=2k^lHY*Xh9Da;B5Xr zkDy&j*n}8S?VbndWePkt0yww?pC=pw<79pl1WIWbMXHT3eu1kjXA|E;%y^f31>`*8 zL3pVO^mDwHK+hBVx8pLFmYxN-lXV&)?QMH}mWFc>U)qXsRrj197^%8$$c;@609mjQ2Vu< z5nRCtuEZ2{FmaD#OuKv$YV`bSWb|%V6mE1WUx<)MX>a77&|7>6A~10;+J6V`^z6S& z(fce~FKNAHjQ!+gY&-5YIE>xT*NeBKan^P`YLJ=3%P1V98())~I|77da;?7HfoJ*S zIfHZ13lx9Jz%?T;QIjw1ak*q-xM8n#!_F+47n~Hl4q;UUbo5^>fHV(#(9G2YX$?U- zfq_2}hvFo{bpnp(vHBE}djo79pn7pJ`bgDoT*XzP_(DaTEgpbd@NL#9o<|7tR(yw$ z^r69}$OgW()D*dZ#FhjI`s#@2(C~_mxt@+!s6#)Qr%g3VCyvn4Uq>yF%eExkBN!k&iq%9kFSl_5#<6xx<2=Frxf?iV1Jy(>YVjasM-R9d~jYbhCV*W(`su&nNROpR~DkK1R(Z^d|F$$0w0 z5-A;Vky=6sv{W0-6qhOy7-9NpDpzVMS21opdAnRVmXZ?nvI0Y;ZtKCJRMF%LWtQ$E zWu94OF6ISV$UQM;hP?NqQcVlpN$#XZ$&5J~w|pm=CNwG36xBHY=xZWx_?n2u>?#st z3*X#d&DL-gbN^Z&W^+8_=D3*2YfIfg3WZjrG-e_tmTBA4O`D1WZKNP9%oF9Uc!4N7Bd(`;H?Sn! z$jRUa9EO{T@GUH#H?wTsrU1|x(dPmX=FIR9RVZgF(nz6P#k7|4sOeLX7bvv66h$pB zMN!M=i8L9(5zdW8HL+^a1U|v{Ui_4S>urK09qDB?A^npR($e4p&*7%v?P!@2bUV@f z_NuK2mvESf#LMaYzgNZGe)8-P-sa#`-lP`UW8NIZz$$rA^`sr~iuZYYmD21Bfv7*s zQ$M^j_4%k2Z{RjP-xiO@D@J4sCh>WNNUUTs0e7>t+`}?>FVpru)}#A5+&)M;J&dFA z2)qBiY;J>WXhUpf+i*U+?1gxY1bZA;;t4+eB=2q`HJ-xre6Jxb?qH3X8@ULcHVi|` zvq`B=l0Cqk>fOe6KBc7X`K#K?E}gZMG%+pp3V#W)yAhVijZ?jg|HY}=*$8QoUkPEp zS}Psl{FGnRV%5cR!+E*sqvU8LkBFKEXy><7l(3ZiL8C+<^p}(8l-s(Tgk86Vg1Uqk g%8A?)a+VmS{0y)ctAb*L4f&Rn=`e0GBBkU12a=Cc_y7O^ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/ParameterizedTypeImpl.class b/bin/org/mcteam/ancientgates/gson/ParameterizedTypeImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..7bfb32728e545708b02e9cd0ac76fe39b5b5f216 GIT binary patch literal 1752 zcmb7ET~iZh7(H*Y%R;iEMo0zGeu!;0Kvof36{ONmol*l@bimq~&b-8JSluMJ+0?O@ zz3v~-A0Rhe=!{s~i%xsROn+0q&a)dN)#Rcxu6)wS72m5zRULUvx7uvf-RnBkH81i)|9kJw&4-)bVr?_9U??2AtH0B3pzBrl z+WK9u5?Sa|IJxf)y>A1$-z=eEh5CUMQ#e|FGeO?WDjd<3sHFqBEriupje|86M!xQy zVKyGry-=ZV&aeB?yh6FqE4XKsUJ1^sg7InNj+a3ihiuq5tdK4^s{`PuHZ1guHEd%5 z8L{57kww44!LncXmRq%TFTAPO1MZwFH!3<<)uAuz3hVu@0BAn=8*14U9iE$h6;J8@t+Ze-f z!L4B9UA!m0qKy-HJA+A-EKKdGsTKKwyAX!@VN)Vq1*gzCRJ%bJmvdV|H3ZvzJ+-6B zTeP7gg;O2xdWw@^4oG;stU^}oSI8c?5$VdkCA}GwX5l>X-0!znGl8goLpL`>FtJP) zWz{(w7jTI=-Ij6~lE%jpa*>4IXtctLcf}XMjCTDBOVSyqDYZ2JO+Is?LVnsg(O`U1 zfjs;8-o^nw2YCySg28jB_!ABmCw7o4PVVqFwS)XK`cpW{XPy;-GmM;OwX@8e!4aIp z2))H5AEP+N8!N?qRcuM;RBTCanT*`GJG(q3$}B!d?kSC=m5c|Rk4xK0K)bXOkgs=P^j&6D3Jd=N_b_TC literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/Preconditions.class b/bin/org/mcteam/ancientgates/gson/Preconditions.class new file mode 100644 index 0000000000000000000000000000000000000000..ba6266ee67965f771787477969f56bcefe9dd8ac GIT binary patch literal 980 zcmbtTO>fgc5PciFbz+>hgqD&vEun=r32luy5`_2=m5@R}3W{iN8)tDhb?nI5Abtyf zfHRi{Q3-Aw_)&;iCp2j*AtVm_F|#xC-W!j9{`&e2z-Ij>o@Kzuga<$0gL6gT)+heDxj%1%HA(I>_M~LpDix68nQLX(hU)L(STVS{+U7QZ{8Y6!(r_@?JvJ!VQLv zN!W`Z5Izt76ny@{6FuE73o8uElemV8W#~U0$e=CaGztWE*4pAbE(6hiP_&W9x^COe z3sOeeiIhBUIoQA^HJ_(Z{nJ(IEE3J~1W@=O$!N%f&tFwm~BXn6zjF$hPR_(#f=^GDP|_T~e@V z*Uvx^S7>)e0d!``%3u!jX()NQh)OSijmvw>ko zZ~X&ad+m)ES}y>dalCWJ-{d$x@9vUpS`?U0ch7syd(L^z=jN|}e*GQ5d9)NH1WvnN zJ-b!)O=Bx-I91DZ{JPvDs9R6c~DBJT|hn;ncH>>yON;FEF~a zT)0yx7b>%B<;As?65doB7Oi?p3^L+8J#-T3m|(2)y>?tG4A>{v2XTmo!!Y;lM43||a9G1TI6@3Y zttK!t)*WpWSvxhmOzdJvM8_necLfGJb-3}=H&Zwv1@8$AcLXyVhG(#@UJ56r^n>)HWg1x(HKkBQJk|~!%rb2CF5Pu7aZTLOM{bAcBTtQ(RJ!6oRxxeUFJ#~u19kh zq~v0kO2xHmDn7zx1(yU4bZRr>+BTcZa-F7zE4WH~EoaNESr09Ps983F<2w_Y-jU!G zYmnEl2fdP-){sK4Y)Q*87g}5ErdO7>1oWa?HSCJv1-2um+F;|C-4#!|QlIcucI7Mx zjC5ar+AsqZ6+M`hebmpk@HeccK)U#bqs4yyen&KKF$~>dzqR7)=Ph07$0sN%m=_r6 z6p2;Pa0d(Q@J5S^;Bpi~Y&*oqH{2Jws7mom0?I?zdt!JTlfHGMx*3u^o90u2J&z5$ z#VYOJIS+C>5RcWAHEOV$tOT#cK?GYQm%b-(a2H#ur|-!*{Y=9uct@*lnAOb%*I#Ja zw!q09W@12 zfy`_A$s~drw{1w<2?I)nM4+vf z+?H20=PWtodpjSpGqQ!bsEC%I!30L-ir`5JPJKLcQN+#)`kth-ca?6G3pclbEU{B^5Zc12*0G7-j z2<94}T6lp_Ztj4c$jS?Rp1_Y}gvAJ5--<;&fHgWt;5^KOXrUDU`XCHF(mH_#1~6*w^?^Y+t<=+teFi b+axxZo*Msw&HEp09yMQuO>huo2mAj5$_RFj literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/RecursiveFieldNamingPolicy.class b/bin/org/mcteam/ancientgates/gson/RecursiveFieldNamingPolicy.class new file mode 100644 index 0000000000000000000000000000000000000000..ec6159c560cd8268ee0722d6c2bdda8fde3414e7 GIT binary patch literal 1195 zcmbtT%Wl&^6g{_bYZ}}qO=$}B#Vd~zi*67~RjCxQ3ZWuV_7i97PI1P_85iZRU{eqa zK7fxxTswiLRT>Gg82ir5J!kGYbLZ!;?>_+S!L>0(co9av+x3hTT~}yNNo{;#WY6_` zp?2R(FOGWZT)t5<=+s45Y5zD3l-IXm5f;zHxo`uaefM4aOnSz~4B`1i$`Pi9iTEhL zzekwaS6Z0^LZ(n`5v-%IBeTfhwgVft2n#i(Wj*e;Wz-byKoXW~p(lcth*UBkE?VYP z^$0I(6HB;RRh2NuMd@C^g|S>d=T%`cS*qvIm`Jr__N`j1U7ErI*|2IBcaXEOLMTnF z>o}5Ls5{E2Q1=|H;x57QPNnyu9-4X_1cY2+gnr<8wb;rck9#)O3A+;yxK^u!`*=XG zeQ5?-R|;dR&tucU7Pk2sIQ6yk0ujkhv;UFpS-%2_7bu)_a)WISOgyyK)p_wE4ubehmzs@#B4}neym4CZc!fZqN zT9`Ou(VzaeuKf`e;;$|4r9;(&ag9XCHo`da_&Fv|VDsiit|U!pZLyab9@G5bGd%by z@obhOm;c27>C#tZzi==GhrcuF;s)k8b_NNU#{$om_(qm^B>}&M#rZ(4{0+;c@&(p- uZ1C8*z?09sF(AvPN!y&flM=2DKtn=?qlgm7vXaYY>T-(Q<>*-&Rel3h(O_BiXpsJ+ZH)uk>}DaG0bK>kzNq*Q?zY@upnnD&M^4R0i)02WQ#axD3n!5@v~7@C&dywK1=fY+cDKnPtr!q6F77OTK* zVCd1Ip_QQ{V>u#QDQ=3=E52zH>u|<3xt-&5B($z=&PA_LODq?FA6+WlfQ~iRLM;r&G46?@B@p&;Ez-l9VNDvqCyd$1-&}ku>N`(g6%%Si?PrxM$zj zOTu)WyrmRd)-i(n47#~3%-yUjvlZKB=#4hOpQtq*%V`*8nD@lyXR}bgFeL#*5!Vo7 zNO~evRaP%lM*>M|S3$`7oH5Ka5?r=<`Fuy}G>m#wI*4YZblkz+AR?I1F$tQc=6!Bg z=mdJAm-aM-86C5jBcYR{nl|zsZA@Ql|0U53Y>Oe~EuISnlQu%-bN36wf;U3F+KWwB zLfeqs++F2+)ydHC=-f?o!krERyvx?fLNJA3t2wy#N3J literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter$CurrentWrite.class b/bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter$CurrentWrite.class new file mode 100644 index 0000000000000000000000000000000000000000..a89a4465ffc651157e12a55d3edaf29363981aac GIT binary patch literal 966 zcmbtSU279T6g`u#ZPRFD)%cO9QDaS_xFY%#5$cMt5b8rpMfx<^44W;qRX$iK z1S<3g_@l%#o6yGKgXqJZx%bXJcg{UCKYpH`0eFF@4l)97Cnj{qL89c?l{$!&PC}We z*bU=}c6*88LEP9mI#PNd`y=(yM2RvDZ)yxn)5t+ipnNF5NOvT4=zi!QsvvPt5U5;a zy`eNc^?9mvpak*(!&o45;0Y97M>Z9NhU$G0Gh2u!tJ&*^%o4PV>NH1FDga6KQx`mJc9M>`kU7 zQ12tFLTT|l&+Ih}eXW)8Mlz07?BKD$tAA3$K}(?VH&70-`ZGvl`EQ_3<+8Lq4OT#| zIT|09nGJd_cYBs^&rmw1lfh-Kg*17LP5PyI0m`_-h|iC!TrK!HcMC4GPjKz*E4^j( z$r8G7j;`Rw0^MPCh8V}9t1nmKvlL#Lmn`6RhMTyRUV9tWMWbEP&9YJXJ8GZOX0_^I thP&TZ2%V-K>+{<4j%D0WI}(ov^em}|DYAh_+_xBSqltE^**2bF?H8o<&CCD* literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter.class b/bin/org/mcteam/ancientgates/gson/Streams$AppendableWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..ba9691668d2a71b88d4f998197c0b51ef290380e GIT binary patch literal 1501 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 T?~lmwm>kT_3b$2m4b*-Cb1(tT literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeAdapter.class b/bin/org/mcteam/ancientgates/gson/TypeAdapter.class new file mode 100644 index 0000000000000000000000000000000000000000..abae9dd24858bc4ac2c965a63b235f4256927dde GIT binary patch literal 300 zcma)&!3u&v5Qb;1H0|PJ*rkOoK`TNCoq`Vf0+TI^qO0f{^lBY?fF3Fu>mqgOGBf|o z&&SL>p0_&ytYP7R#UQ9##jDIntT^f{m)a;avg4|&HBYaN+?}y8vUOm}z%THEyhN?| z@l?pnFmQ304@L%?;P7n_qfT66*NNq*^MMGWB)QUP`j#khm~MYP(I4zEO+_S@6d8C) l-M5+C=OrQi(IKm0MH_&@g#JL8?wWy3+974ZoGSNSc`tJ5Rp|f# literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeInfo.class b/bin/org/mcteam/ancientgates/gson/TypeInfo.class new file mode 100644 index 0000000000000000000000000000000000000000..952cf61a343e0224e0e6693d7e9c77dc130bf53d GIT binary patch literal 1607 zcmah|+foxj5IvIwHzXS&;SOGqYc9wth!@0Yh)^XJ#R9}C-iENm!DKhJyMf|Y_y!)d zN|5rw5AdTbdp1k51caB}nVvJJPj{dB^Y_2`SB9`vf^M!PlAh#BTA)GA3P|^pukS4Xs5Xzf7dIUjq zsEDGIA(%{Uwu2#|q7Anq=ti%C9)^h<>;B}3vaO;I{Zyx8t~Dyi{9l1jTD>-zdQgRe zFhfT{82X1=Wm~s4_;#6UO%%)`FK=>7$h{W~IbQ_zX|iymLOB^~O{}ClIo})xlPRB$ z3oRlM1paLCYE|Fy2GVr_em;`k%TYOq2*xp~V1o2rEAOKvD#8)_I(0CK6b zdsolp7ki#PN-CQT?-F+2EK5HL(^$1~mcf=WJX0j#|HLnH3_sLflq_CiqmvGfXikbf=y?w(jua*Y~{Y4o%u>USen( z*Z6abY%J_0qgIjXvMLrNX;j#aZprrMR4ht?F=5vSW!0ZoWZkS;MSWRF=fuum=CrI1 z!z40DuR1_N$mX=_mY$<%yBm$r8uTDkio|HOM#upD6X~D0oz9#fp3a=1>jVSeUHp(d zLx{e^^nE}qBZy-ZcPP?ZzlpoJM>~m=8R=o;zNYqV$dZ%h9`{2MI-kdzVzOt>^s z3IRNtI3*b&R9)_*222c7Dk6+9{E6Kc%q$wtYDM~IYSs_tU zXkX%?lyM5}2x|Hib4O?k9*2(UDCny#>!a)QG(C4QtcN;8F7kL=ihCi6{7qW)5jBe= q!(4U$6t7zEFJF28b>sdV@yNQOUUSdzrj=sFM-laEVaU5e-~IzCLq!Py literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeInfoArray.class b/bin/org/mcteam/ancientgates/gson/TypeInfoArray.class new file mode 100644 index 0000000000000000000000000000000000000000..892e905906deb10723764fe3b6eac32c7ae37f25 GIT binary patch literal 1514 zcma)6%Tg0T6g?dR6T%=!FuVkL6DENm_&`CbtW;rH6b*!Sgufw;ifmGA=Xwzs|Gxukn8_ce{c_2MhJC-Y_Lmhy$N ztW*{Rnpd5YD}!C1=biQEi`Eh$Efr;Z?q*T#sj@(K706dxWn~AUO9Gn~9oGq#1o|?U zfhN}l;stM0CDDL36D=^CL1!j9&?J!X<$mZaiB6;q+z@E1^K7CE-Au2fg2HKrQF^J& zWR+}`pyuf{(TAG?hEoa4DA16Ze4%9rOf;fNKMk4~LQ)_p?O<1yHDQwB5fh^r6G*E! zfzPAW^GZaTg-bKNV5QnzP2sfugo$RY-&S;7^=x;0L-}iRqs&X`D0;RmuS?(2`;%Zi zcXk(Lzp%1Cmuv?;Co(u?b5X>#GNR$t_IS6y&`wQy@A^-#`%p@=OM6s$;-1rYouqvmzaQ?ZTa=s$1)9 zc+xdIVRuF2kzDn5eOoO%;caPSX9GK}lfVq`w}BHMV~?}lxHH0Cf_q*%pX2;-5_ro5{rhp077 z_7QT9QfUM|7{>r6Fog^zi5QGjU?IyL^^hZ;GeG;yfp)lkfO)REl6n3M{x`Br<612is%aJwq>G@7 cPQXbK1Rhf7G>e4`B>nXyh5wQ)hEk9I0hHcYX#fBK literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeInfoCollection.class b/bin/org/mcteam/ancientgates/gson/TypeInfoCollection.class new file mode 100644 index 0000000000000000000000000000000000000000..aece32273ac3696a5f80f57f410d8b24130ebe59 GIT binary patch literal 1425 zcma)6TTj$L6#fQ~!qOGwE+|$I*wsZquLmflQCV#;#kNb}GsIW-}hO_n`h;m{WT&RFTv98>$ z$2{aEAw}rE6l)5WXQ-caeOFE~^k)9yk$|!*40SWXnn-*CoU1=*&SPKDRvELWq4g-YXk|s$nb?&Gh|>Cgt1jk!iarOM3J!@ z#6}zmgBx}n$)IFJM3Q^NGc=8-WRM%eu!E9Wh>Jy6num&;N@TOFj;XjV2SwqlL}EvV z+?I*oU$U7gG^1S!(ZSGBt=p0eUEj$oX}YKfr)q8roj9+8HE8H%XisE{rR!N0Ar$7K zjy_ysXmW&n!nbEU9z_gonQT?xlEZuomocEBpP{*;d1BIW1%os|ZZsW5uH*B9C+5PS zL}{yO9EQoRrZ9x8h73dQL@JL%VF&)2t9lse$YGcvZEpy>c+_H=pv-D^r4bC*beusw z)wbaJ;$d7Wh;Uie!O*%8*xXy;)H>Ri59{QHOFTyxPOLyR@Ayrj+3v1V=I9QT$6gEh zwpua_oh~qiOD{=o7Z>?fQkjNZ44oBys}sz9Q^SmQ7q6*fvcN=#*qQ89gl9>)zT z?rYCE?oQz>A HLEZlihem;} literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeInfoFactory.class b/bin/org/mcteam/ancientgates/gson/TypeInfoFactory.class new file mode 100644 index 0000000000000000000000000000000000000000..76605f149442b56545f1307be0709ff3d8b36f92 GIT binary patch literal 6172 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 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/TypeInfoMap.class b/bin/org/mcteam/ancientgates/gson/TypeInfoMap.class new file mode 100644 index 0000000000000000000000000000000000000000..bbef67cd115aafac66eafc5cafd276de4a81effe GIT binary patch literal 1638 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 Kcty4nUS9);01@f{ literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/VersionConstants.class b/bin/org/mcteam/ancientgates/gson/VersionConstants.class new file mode 100644 index 0000000000000000000000000000000000000000..9f6ae5471d033eb6249920f3fe92a1b61ff8fc13 GIT binary patch literal 394 zcmb79!AiqG5Pg%jsl?XSYC-%06?Da`;-yw8ga#VPRkm@7TasN!HvX3OQwr>7R_SFt_Y*hrZP`tsT=*%Y`X_t5k&Z}4CjO( zwso1RYu%h4{|$N4@a%R{Q}edT=f6| literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/VersionExclusionStrategy.class b/bin/org/mcteam/ancientgates/gson/VersionExclusionStrategy.class new file mode 100644 index 0000000000000000000000000000000000000000..1b03002ed7b4f8f4875485f1c5accdead90680ef GIT binary patch literal 2210 zcmb7_-BTN76vm%7*|3r<(8fUV1465Xd{9DL5H%EuP_&v>XQH{NGtMlVHEh}JGP@hb z_8+N?qqp90-!tu%r|0wl&H-T(JlMWZzJ^Su?&+nY)oPG1pzt8>za0?Gq!~|Ad zuUTptfvLAjx?@kQOrBMq!zHB~Lp$J@hq#x=fTX&kJ z&vqY~MxbIuU}A2uxHh$9&Lk z?V8>f`mSvXq^qu>+jZTuKIMM^cxF(~d;yrtrrz~azS`e+*7 z#&uTFG=s`nNP(4HwKo=9w(c{n$V!i1>g_74Shz^qUpj$hC)u*Rh60KLhYc=CMPsn%njabH|bg%*>!;Vo7!t%M>imUxL51JfwJj zkI){4lrqJq78H5_(}fdg3*%3}hpPMpCH^}m3Jbqt@@Kw_;|i~7dIDKq=V)K$+BHmb zWePD~r|}wI=UrNoBk%_83B>-xIASUUA)6e0yos4E`fG-gTeF2?diFQW{e{_LdOkGf zPmnu;8fPZTFEoK*upmBNfcY0rpeE&3vyYe?ACPgZ%h{dz+HiRxxz1)eEK62 z@#Bc5Q&bBSN8$f^if2LwE9~f61Rm||y%3(F=O^s(8C;G4Kgt2{Pfy|B{qRC~necUn XyhHc~;gx~#?T~N|E>L9+G2H(jy$})P literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/annotations/Expose.class b/bin/org/mcteam/ancientgates/gson/annotations/Expose.class new file mode 100644 index 0000000000000000000000000000000000000000..da9fdc26283a5a4b024f3546f98168dbd505e99b GIT binary patch literal 496 zcmah_%SyvQ6g|^eV_P4sFAx#MMbV7|Ze0mYp->;x>Y}cu@fxN~G9{T5>!-Q!1Na8_8oU_0m++PoSSAoF6V#!dY5jkcaFRllMVs1a2PpRnN?FIc#TYxXZugcq3 s_`*I`IID5yjZkNx@drQ!s|6ElSm%GAqYdUa2`y}5s|X(<2;12C0-L3W-T(jq literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/annotations/SerializedName.class b/bin/org/mcteam/ancientgates/gson/annotations/SerializedName.class new file mode 100644 index 0000000000000000000000000000000000000000..2f541cf9b8962d0982caa9bd3863af928e9bef4b GIT binary patch literal 452 zcmaixO-lnY5Qg8W*46q|KQ1Docqn=?;KhR{!4?X&%C>s(l&-^)l1*ecTc|(HgFnC@ zB~CrK6$&1bOeW8~ZzlQtdj9}$iQNb_!j;ccl_i07rnE~8yO8R@g-Q$WB;$P0!FX4w z0p~_r^TscIopFR^LUXJqT3PKR3w76ub^OS>-r;E?qmNT&(PG4D|dZ*j&-L?pXB^h=32$FY=X X>#`ooenXguv575g&%$RAqlukw;?#rT literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/annotations/Since.class b/bin/org/mcteam/ancientgates/gson/annotations/Since.class new file mode 100644 index 0000000000000000000000000000000000000000..6adf25f414273755aeb1c90e594ebaae364f8d33 GIT binary patch literal 429 zcmah_O-sW-5PcgPqw%Zi$%9xt6uor8YfpkH6sndq3gT%ShOlL`kz`ZoU-RG(@JET0 z9?T`+VP|LFym|BS{qy++;11^jJb_VBW-?D5saz_XYO*db_kRik{#u!u1a@w29|XchQI{!Av|%XRs*f58 zfs44dPUrNhE4?(-N>l=aS!bJ=98b=3js=GQQ09fv>4u3x{PL7cA0vUw?vg~6898QN zcjqHRIk!zVAH*boGL2@uSTA{-M?(Q#l%LPX7JRe-d+d4G-`Wrd{0}%jWKKXh!ZA)7 N_Z=RgkJHAS{Q{YukA?y~C?B7fEqG}G_Bivfzl|Xd_#W{4kU0V22*)^S N(sy`-K2Do(_6yrJcr^e3 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/annotations/package-info.class b/bin/org/mcteam/ancientgates/gson/annotations/package-info.class new file mode 100644 index 0000000000000000000000000000000000000000..15bc87b2dc5011a45f510cf0f888ab4e524e8037 GIT binary patch literal 146 zcmYj~I}XAy5Jbn}V~GkHZUHMr;tI4BoM5pQ%OTlCvEgtO9DqY1oQ^4`c$%mAd|z(> zExbqLaIi7b5Q^|XtRab($VD>6Y+8w0;gU=<-8tMi$}Z{EJmwDTj-O0DYoybqlTaL1 dXM2o6j;R-i&A+jq##_K)R^O*MENVAc{s4)cDI)*? literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/package-info.class b/bin/org/mcteam/ancientgates/gson/package-info.class new file mode 100644 index 0000000000000000000000000000000000000000..482cfb570b097775d1279671a622b55b771df692 GIT binary patch literal 134 zcmX^0Z`VEs1_mPrc6J6PMh4CNqICV-Zqn$c&UdLYGO V3=E76%s?AKfRTX}NHQ_70RaEoBsu^9 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/reflect/TypeToken$SimpleTypeToken.class b/bin/org/mcteam/ancientgates/gson/reflect/TypeToken$SimpleTypeToken.class new file mode 100644 index 0000000000000000000000000000000000000000..63a1e7a7ccdbe2e9ac2cbc60db49fc0464d6d479 GIT binary patch literal 807 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 F{{uqA8Oi_v literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/stream/JsonScope.class b/bin/org/mcteam/ancientgates/gson/stream/JsonScope.class new file mode 100644 index 0000000000000000000000000000000000000000..66a59e2ca8feeda5204c966f868f766cb157ea77 GIT binary patch literal 1494 zcmb7^TTc^F5Xb+AUbZbuDJaNI5arf#SwI1`1u3Nvu-zIKNH&^~rLJ{JyEWS_2_MLJ zEe{Zl#Am;UU&A=(w9xwCLz{Hx{AOq7%*>gyzy5r?0kDi62^|dcWv8H&@~&x=6vNJ2 zrtKCC*Q_XoO4(K_uESsK(^|`yKbaD|4B<25+)#>!T~N|?wZzbw&b~R+Pm%`*Nu5E- zv=uT=0o9!PPYAhAxvl+l>X4ypJE`tw_SD@IHJME_bl=(ET7>Hk+qu+HHm#CN&z(tA z=TBvFT6&x3s~%-1j+2?Aw8pUbw(W!iiG0zrEq8;#GZQ^#@TSV|%>aBMF!agj#{&j` zqG8fMlWBHLa~;br#P_1dL9!i`;e$T_iNlBti9>+Hn2Z32Acw~?f*e8|CS`;;baI%H z(aAyPFe^jm(8XavMi=~iwJ0NuZfaY`vQ4#GIyId`!@46%iH9bPA7zxtNYnM>IQlcGLqURJ{5@3wReiB2N#WZQ3VGT(npwjal zc5sG4`t)%R{-=A|D0zt*%3CVMW=F2@v>DV-2530RVl7cn>K$#ig4KrmDxCv&@2^48 zUwdLVdV<%J^$cHQZSD)bsi#XWwC3#`U&=bzYc7P2q|m} Gnf?o@0Z7OI literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/stream/JsonToken.class b/bin/org/mcteam/ancientgates/gson/stream/JsonToken.class new file mode 100644 index 0000000000000000000000000000000000000000..89411dd4fa8df0ad4a1117907d6d89786e686a3f GIT binary patch literal 1571 zcmb7^-&5O05XZlVjb+OhP)G}fBu(1wd=n9;N|9pS33sV#S8 zIaB_D{ynYpkW4$x^tmtnk2={s8}LgX%maI$)9&8x-uL{^e}B9OumwlMjKITQ)H1ux zIPklsA2!=T7`Oa5=$oy6FEsmc#2*f5-RS)kgc_0pbEp1m-|YBd%e2BlS0G!q_N&f! zrNhILCt%uBr7Q?!ENAaLT8?tn%Li7aA)xc8b4WU+nkA5O8;4bApBBzht!y0%Xytm{ zwn~mb(mAqi0m)%|^~zDrawtpIBG0?WCHu&71s;7fb%p6-v(paS@s2=ZHFr$sRC?bB zY0T;nSd#bz%T!Kr?6SCOUyjI)qjuOTRCC7}^1UuGi&PpK!>1A&Lz>|;i8Moo;jTo6 zL1%a%p)+I|@)B7F$?#A@GF)MJByojdj^PW5Ifi+LCld2W@#>j`fvW=Zb~_B5LH8tx z8vaQq5LmE#O}}&OM{Q=csUv|UYBm0`-KXwe`<+2Ri>=k%v;)+!i?W82fH5(cvwj?O zB`Vk>3HVXupEY|wpHYjGuzrlHG>yz9_!r2)7fB0YSeAFLO&iv^szLNkAsU- zR=ZQ!-K0xR&~wi2F0-%zvZN_xNlwa=l9VM8DNFiMmZYOBsYY26jIyK^z*u3WQ064b zask)qoR0vpM9hEx{t4kNe4KcT#Wz?{a3iVUrh;3u3T`X-Jf+}{f_s{R`wCXm3UUh8 zjFI2Eq77r@Xe!z?MxI-W9vc}Iw{7TuQ5}gPR$MPR#7)w$CK=k?B9j?n+kJzlzf(&y_>%r_(DMRr(NnsI6|CU_Ht`tGP{MOKq}6Zn z5~rx)7c}rImhqK}Uv2|HsYX LK;?V|TiMzNY9LR* literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/gson/stream/JsonWriter.class b/bin/org/mcteam/ancientgates/gson/stream/JsonWriter.class new file mode 100644 index 0000000000000000000000000000000000000000..f6c5a4ea8cea901fb6810b28ef544e87a7c9eac4 GIT binary patch literal 8096 zcmb_h3w%^(mH(fcN##y(Ff5`4l`H?4>=B!5I^-a-u(hl#B z+Jc<;P>TE8(vMss4T9WcD%^W>=Fw0p60L8GBvX8p-x=wTg;PTbzTfD+nR$GD+m*uY z?2QlF4eLoSFB0pcRDz&O%)#B6NO&`baF2S}&MhHC`Ll z-2z`zyw46G2c;H@QAW*GRd@R_oBJKzIT~n8B*Mp3O97OlG#`Sw7V;6u$2?r)$9%!! zt5T1JN-Pi*wrtzp)w8d;qv@U7TH3n=^;fCoDOiMRKdMM-46Nd`P=i{^67K606nlba z*-bfOXc&6}ME5QWVeF@q(4}L7WYrZTaihRQzyA$nG3{8NqYDLWTR7mjPJ2iDWte$J za-(8CWZ`B+8R&X78VWvn)u6A+l^cF5GEQ+$+>PlfX57M{ifOqrc5K+v($r;wp;B(8 zSy3ZndxtC>*1c0RDoJlY%I)t_o!nyKR5ooiOnMX1aDenPU0~4JP6Y7XxcU0o;X^`g4zkd+}j#K?{GX>Bb+kk3<<2$u<^`dHS~;+w~5BdwS!H!bele z;$aJ)QWiP=Hq&JwVGl;by>?f8P$R`vx@UE_Qv9@qM{$Z28JYx(s#>!o_5e>J19_+7 zgB=H)fJ+s`!UL3{Ia}%J6mZ3;yfAL!bF_RVIF@Auk6SpS3S)3o8*b-g)#H;E&Z-IL zC7r^8HhkE%ZoxSVPk|{uUlWyM^Cr$KR89rU8LY1!*)x1Ul^C*3JWEyw!ch$|%d48N znp6PK;V=C7@@2WFIX*I3GA*4P29YHUBgCYV2F zp`KqgCi;g4SWjhK%fw&vXqkEKM5H(5Xeb#P7)qu>`|XfRsxGvjY5hnz>G;&&sylsM zFk3|%qkox8(vDwL=X(y{RL}XAn)@WXxotiEPU(F|P?K#SO$Wn?PW#sOfns4z)$yim%IS^Y8#c1smPyV8{4S+LfV z_nY`WZEvx6RL8W~_*V-*)VeH>Leq3i{2Sdqy}`tf=!DLZXBW&K2DP^6Q1YNE^CuR5 zj4~blRFhqqW{m%`@ZXvRre(4~x~w$u1`B}JSZ{n_FlwjlP+z>)v5o+CVWo**QtW$C-I1muCXv(Dpe)bds+j0X`v;HG#U8giM~iI95tm{P`jnGquq71 zWGbAXe??LUL*ZB`tT&2KJfY*bbCp{{MN2K+MC$ae(lo&zOj#nR8Y6fxeAo`fV^NZc z*&znw#ZmjP9d*5%TYZUmJjEJQmJupuD8}WMtdNydpBn+3;&RUw8@HRvRY9vQxlR?7 z*VNY0+0yKnwSuxShiZ>^4)q?~7_p;$Er~>&ch?z=TAlHsM6bOuqSw=@V;9>c`W}|i zx^mcZc~J=JWq~*4pkA@KHicsY78^@%XUyA*)3eBSdX~^YQ9#Ayd^X=H#!UW}aP|P{ z8thlqjAB;Jd6f5zV$NAq)I5obGYCC}g$8!k1nbUXN$m?LIFF@0!D~mc;zCXBS*(7X zZ{}bPf9E@xj>CuF<8A5v_9PGBK9EX9LZ$$Y++`)0b_(17bXBVR`v!8(qoLN0N$ z;fMI?Rv^UR;RY9Ik}oRId9@>GJb`I7au%ChV8bX>G@P{(<`||j9|B^BAT6 zbClt;2;p=VmU$U0^BfJjSbQ*wRl8f!<^fpm0m!QN2}hM1G!Z5w$Efp<#8EIZ>lKE8RvRr1n-y}$d2(qzD^+D_&7$Jx-`svuFh}LiJ8UYqdic zC{S8w&=>3>9tS&eTL$JFC$J%4)=tLsMayES8C2dNcxi(D~LB>9*n0f$e>rI4|< zGQ1B99MdVICl-=}p%=ahykDZ3s+yau)no=MJ{fccXKJ$2rgY8|hW%B*9X<-ssCoq6;+NKZkOjHAaR8_vPbac(HJ zm??D*NjKt^WF#wLB+?TSe1`F8yeA#-*pz0X?Pr~6JBrgawWD~#F$q_-GgW1>l3zYo zp^zCTC~Ht6YqOY^W|)?eSs__!m}Mf-;m9Q1)kamwVsbZYMlgE1CPz(kQqIlf+=6`B zMDClJ?pw1s7iTyZlTj9D{i?%j#{{`Ia7BY(k;{;V6#RVJlH53}ClA>{59lPruB_uK z@|dYiPfwtn;EKvrnxR~N9A@wf!^jO@NV9M?>aw_zEN-GE_hreGt;rE5imE0{VC-O~ zxs<`OBTOihF_5U{)s&FIR1G8m*+ht?8=xJ6Z*ewqgQP^fmLrF0E*>y)4nTX=!iFsj<)#U=kD7V?BuhrDD=kWQ-=HDgml z;Rya?d|3E6{Bqpk=;n7bW4gSkOrW-h=b_YQyVU+uWAz#Q?4;IVyLy8EGm4*IP!6v3 zx+&rza(I~EOh1Kkc_fR|Y>$%{0m{jYUk1jrG%6WgHLPq^mcd`}^mEo}#kGD|>S||? z;LTOOV&7xr$-kenS!`O3-pfXH<2JSc+XHO+>?~UW+o##)vqjk!vVDndk=JV_sB?v; zy_SC3?`4ZBj-tIIcv}a>J`RTQ2^~)tA-Z9F#GT|glRMl=t}{96PW;Z~W_ObBOm5<2 z$8pSc*QWTsfSjJ3V&6F_=sYLWoh=Re%;Q&I>?@l4@UPu&WwzgL$m}@}z5Oj+a1=Op zLNWe-1o9}Y@f73bWBgw81V8GH;C>m!2|0%c3-CRzDwrLbo?7b)k^EhHYg^xBw?Dp;;Ven=~RjsFw* z5wqIsjKx3Zf0172KL>x}$mFKf<(^D4P~k}8MmQ5W=0*B?0ip1V*aVO#Y2FHQqdHSt zEvvXkFjbKiF@Dgt7H}!{|5QO*>YR}|qY@g!?OcH54MxVF!;)XHK>H=;%9~hA{jHa` zsNuJ>uy6FR=c3UmWnAn|DKm?u%sfKmC+YFvrP%|2`kc&H{3Ehp$tenRH=70ust&De zTAl0KL9ef7|6U5o5F0E%fkG|urc0Gm(lMY=kYU`!db^J!E#!u=-BXFw>~t4y&;_<7 zPL!qEoR_LyN{f}!uc;fy)YQ#e7>sAnn!6lWgso+o7KX@=1v+Up!vaTN@WHSBA#f?0hH zu475j!hR#KkUQ9SGBoaE|1KQD0Q(q@;1>379&m4ww>m0OOV_Zv8q+rWrQs6400?{i XS%a;apSH}%SsRJGAJkUatZ78@$D z;0N%d5NF&FB9U(JVyt`T-0z-y=jX5QKL9+zy%uT$Pi>LLdE%7JV`&ntj7z0cWt^7Q z#HB0z#VeVe*&-$2=-N{ippKa~0)zsy zJ#EzML4Kl&V|kJ(f%%?I*iy1F<6*Ml&UGoU*Zco5cLnNsnfeC*SQCgQ7#`CdpBMJC z_roay2;6F88Mg(l`+2)^P}2C$IAW||B8H{z50mSD!I2#l ziF%>^4p%0>^dmnw9@Br_zZdRc3Qhi7jB2>XEI9~ywwc*yuEu{e>Re#@Yo(dx8C2O- z)~;cW@zSLVH!#nLdMw~38J@K`WWA-v_iR_JXy+T2-v1@eRCk*s-e>o%in?*BA5q&w tDjD>>LZ0W}9r9l?_Flv20;^GH68-@ih*;7YGaZibVFmT3H;AcW^EZu;yzT%1 literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/listeners/PluginBlockListener.class b/bin/org/mcteam/ancientgates/listeners/PluginBlockListener.class new file mode 100644 index 0000000000000000000000000000000000000000..f164afb108e1286eacb3ee4d1f935bbe77a727d9 GIT binary patch literal 1537 zcmbVM%TgLa6g>^Y(>59n4Dz^u;1|nHx(@mebk8@7<<>&A3KL9+zM+Ynnvz2NwvRBX*c`qWD z3#wAqi?XiNBAQy$m9kQ;MbcWmsFoMCN}-f!f(}Rw6CyQVFO^h1q8w0SBrjqjEs+fN z1+}c|uNka?V2(jrs_ZCkSmENZ!OqZ=P|HfPzL!_3SvjvM41I}8LDq6|RTbwZDCxUu zjbT3VUxcF!w<-+{>D|McTA)(X0i#wY16Q($!~<2|S=XOQ$xnu>^z1Oz0{o>ITCUM*u;(KDB1h zUn{38RbAE?hFW|zaf}8H8E1-8Zeuo+K@A!P3S*Yh&lOn2Lz(d9yE zUEVhyi;G_OGY6iMqb7+aA}ex1;h4o7gJm<#Fl_GC7H3%hoZ|&vHtZG240D}CiqFxG z_bA+7;CLlWw#L>r1l2bjZv_=;IklA(z#_+z0BlLRg;jyXIaUlLliF+`s~l@a(pEf^ z6(Juu5(W^DWwMlO$YAhykVdAtGnIO^psc83=KMEI`OGKzKqkUOmHsh6E7gUaRtKFT zv@_amp>J@W(GLsUw2IGw3thDGMgZ;IbfOVN53M5k3q@OK4~8$$dkpD}cJCzy8P0L< zgw7!WTwwAT&aiZWkZ52v8jKhPIIZ1qq8C0ICO=KuI6U+seMVz%qjogtOq0>xBCP3X0+!a?= z5pejOItjzxVWceiofQV$UMnq7)B68njtl5cHjg%EKfP2{DpQlEAk~^=X7T8bFlJz; zhEjp$H_v-)la5)KEl_Nw8wjmw+h(_dV7D|iS4RY80!2NhyUh`pTN(8SBlCAHCm9c; z91Aqe7ntdDn_Jd#3l<85Xr$hD5`6;m^6hjz0mfb*%!k{fXt2nAi+d>sW=Dz!ZA) zNFy*mKLLVoxr13sF@@W)M#E}>h%bda9UXT_T#IQkhf?sDzesuh3!?_>G}O|I+_&8vBh{#bOrPF00p^ za{8rgu4GTUjxE^gkz}WnvPnW|#D|}f(ntrkY3LLvQ9<||=-3W6ZqVG9F>JQr>`D(0 zpGrJRT0el@8g>apCqq{O*kU^UrkfhvPBe8qh=+)9HwTMsl6uoUV4BHX<>;$AuSs(Y zaew?{!f0a{kKi#4kKUxh4Nh{84g+0eFR_vZ?=+26qPN57wleg{Db*+|(yhak4XpJV z>2`u2hCq*wURVOt61`@kuc0@S>}z!lLRy{|rmv|uIwWiRblB);6g38Ohr+ zo`jkYj*bEB<9tYa^IEHQeQBYL`FH=y(=~JhCcu zuOq9HvSSY8c@0PCaUzj*ynq+!fMYjT9yxf)S)Zn7CAxbGUdF2$Ug4}8?>yV-;fdE1 zYbA(e=xcbL88mNhXMdLY20@-$T*DhVBdRSr-4t!qXDqwhOoi~4Jm$z0$|@2vu5}e* z9K}2G2z+-!M|oS-nbU#eI!@rEB#z_BC(eMZwzPIy$9p)#Ml}Wo%p{X$^Nja$&g^xf zY>@E~&XP?PPST6*co-kzV+|jXAd@w;cRA4U3C^=|h={yy3=$#DoQp0vaymb13UR-05Ue3A5Rf z*O9Ut-GNp~WJy`(tqzw$zVSN4Uya`}J_VmeE3P1Pi7y2_eV~?sQWW!D_Z0Y?$}ct< zrt_DZ#Xkrr?Q1KCP;v@^OMK25!n_ew2wcXp^Aw3T3adtNn?U<4+*unK#@Z2V5Io>6 zVo#Yif(C(KQL`>s797IntLTu=*547lh!!OpLR&Te58?jPQnpBg%i;@MLkejkya3<8MTQkwj`P@$ z1B|N*=V*VBxHn-Z9_MP1-%IcWWg$GtcrAoOrK8-eX%HG_XsFRpUPvE}z$g>Qm#by2 z6wLY?a|%mFX)j+Pw{aDU@(oI=@Qm@Oz-kBh2Q;l5!BYZld_2vHS5=STxdNO<>@r^Z z2}gI8zIg?2vz*6^Vp;IhL+o<8NhHt5MnZ^t7-GBbuL<0Z- literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/util/DiscUtil.class b/bin/org/mcteam/ancientgates/util/DiscUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..c1a50733c2637f63b77e420f5d39c84fccc250e1 GIT binary patch literal 1715 zcma)6TXWk)7(Ht{kt>|GahjV8y`^>S#HqoAQgA5LY0?Jl7@A9Q%S};~prS|~St|S^ zUfY+L!Azez!%Y7O|AB|XS;>m+#>_Bd?Zw~sojrTb?!J2c`wIXi>?()}Tyxxm;-T&t z+F?<%b;efPhfP}v`z1}Ks=Y< z5lE~!dxnZQPNgt{QGqj6(>6Bz!(GGO(snIFAYFBI&DzmiQ_j18CcGcbmcaGu{~}Ws z82Q;XJ)+I!ssSm}DXy88Q4VJT#ZAvO?SrzUrLO*>8%@u2?3RMGz(iEDUO$c~I43X_ z1uFjjzTp~s59Knhf+>Ma6s!AQ)AtBZ$)fm-z)TdEMEY}7Od})pIM3a`!S_*qCy93` z-1gSmEftfvC=)LUEc6olv4(C?#RRU%x;bvGR~K@l05X0ph119iOm^dg63L8Q3VCVS zh;BJ8N}Jf{J_Jq=3M`=Lj_vW3NGpRa_e1d@I6gx&$5n$$(z*n7+Y`9bBN{lDKMAJb z{UMe-V7av91A*B{@^$;zktqD3z;qOr3-qO^xQUOXULOmLze$6BEK>yfu}DLfa9bvR zDlp$m?1TCbKT5bG%PIqYgv{uNg1ZBkDLknvR-?S)+ z1o$F_Drz+8sb={`eP1BkZ+LiZ%R{tQaUXTLdRC6UO5p)EdA+q})3E8*Vn0fBvraJV z5-CfF?G$$KP$20!VZOk*+|Y$fXr%Bc$dyM!z8C^A(;jw;x*GDBxdx9}!U~edHa$)M zsirl%&xyL}_^xh9+Xcp=H|&Ny4!8^!^Zf%``ixPw3TH+3g8j&R8_DM!#Gta3VIYaO z*rvh+_G6r#;)OcHtg{>^7#R;>Z01V%s~t=%CRdL;z7U#JotD@p;|``!UDk|6;=U(%Q^xGO6!V_3TZW< zNkgN+)zTnzT*Wm3-_pE5^Lb#yXu)+2tpb-$01=Fi8)zeHBc0~KogV!n-C~gy3FIvu zH|0V8vAN}0>FCh$wsMS*Bp0P4qN7VWmd8CukB(mH2+YncEKbTLQ629nPjYT)aZ;wj zvd!82_Ntj(G*&Z|zjoS58JUMh){@tIC9IGT1~H_8yET`p-ciS1({T^1oyr2_8Dn=OYZ|JU z5+PQ^hdM^^fW^cGBUV<``Vpnck}%IOIx|e1Wh_f%OvkuH;?G&nnU8>~d4a|frA1zv zT9V_a0a>?@U< z(=jh^QhCa;UBj|-VJu)#Ly~g*_x;te1hxu|IbEbg0u7y!Vx4DLyu1jRSOq@8iiSt* z5k)&4P3!m+k69`si3Q%^k{f)kXLW4AV#(O%F57I~(GJB;L~606BZF;^uasC|pj1Xx22N?Aip=Z13XG#; z2VZit4I?+J&Sl?S5eVg6BkQWGArM}3@^)Gcc=f|<)rOsxdvg@XSlbriiUg6bDL9oo zj>|WNiWlNTNhhC8nQ=?Drpn_7rcX+MHeSmzzD_=NVD@c}G&L&cnBBW*>_<652-Bl; z#jlKzfB9c<>CsD6{e;?Mt8O2)`=~!avk%M4ZZEQL71^CfHbair(>`8LySr#jpJ)Hb zgMGNoZyy1HfaGIThibk8HRwSt?%*=UaD}y8kH_rU8)$^fwf!m*B*Ay9KqbmwL4Tm@ zCEh*RT5?ArME4fpJ-km}1qSc|0eDK?QF{CZztVB0s~`h;zrx*DxIca3sq;KD-LFy6 z^BMuMM=Q{?C++S%5*-!jQQvQ+yL*p^`HOhAlG$~>U~S~sPVTqJr-Ps(^a@Qox#^J9U1EPscpBm1-OabK>HWkT9t2n+^( zKzmc*0DQ%NN5i1MtI2O~LM-7AdEkwgp}s{#m5Y0P_zf$IsLRahH`aNLKgI zjA67A^#Dd`#o4MR*gqy&4{>D4QR+0z2;%2h>Ljh4(n(sb(n(r*Jf)sXtgEkZjpsa} y8oP`L9;@g@N)^4x@`8%J(1PJ`!yy3$H7s~?%6n!4t%uykU*wgg`HUO*@cdsi^IrJ? literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/util/GeometryUtil.class b/bin/org/mcteam/ancientgates/util/GeometryUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..6f0e9292957215dbb204e6f5a2db8aaf9d20d92d GIT binary patch literal 743 zcma)3O>fgc5Ph4vabrwB5>i|~N?X3{L|{?4R7D&h0wD!B09D)D#$CBvJGO8(AbtkF z1aSexfgiw+LcEOKqH?jzbDW>Q{$_Yf_>tE z=TN|VU5=|nJ=OMoS5AN1UCWM5P&dCFs1fmBXkA7zy`Z1(e8a+*$+bsoubIR-T7Qat zoM+U)B9@r3&7WAeK!3mU70X?o^f}Qg(Q3Nm5Uvrfr91U7%mOEHvLvVn^(^_0E1%g` zgQaT1p=}U*Xp?Y*gqHRJ={Xu(xK3};4I*xe2sd$y-EFMnHj%@g7D6H`J7R4Ooj;~T Box%VB literal 0 HcmV?d00001 diff --git a/bin/org/mcteam/ancientgates/util/TextUtil.class b/bin/org/mcteam/ancientgates/util/TextUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..718a70209994c244a66677371bbdc2ba341d9d7f GIT binary patch literal 2989 zcma)7S$7j<7=FGc=_Kg@HMB)2EmfAbNolm&0;W_Uh_t4l6siaa({!2+oh&AkLcv|! z_wB+9FTC;=xd=th@pz7Rp5rg^H@H0CH&YVQ;T&#ezU5t>_j#A^&wqdY4ZsM#*U%!c zyI9U8^I69<@=2qRwakK(GaR#$tU8vRJY`;SPII9lDA0b%ST>TjQOG4v%w00GjzH_U zRj`~1fxy7vtUxeboHwHgAfh9LR)I|!t6(0l=I6}vDPzty1!9?E*05)dvL*N4VbEE$ zDgynP2Lh842s@Tzo7Pnt+%u4=bg z6xe=080lhRLB|$6EYOxM+Qo8uv0Tg(M3+K7S6y1NoMd{@aMJQNCGBq0(T(k-$|#l0 z!o0xVM!+tSK7c)BsW5s4#DypX`gA;kM`@{SmP~`}_cvPdLZ9@BUBcKUVeD@5eqXxQ zyi3h~9RnDYoEKerfsO$mFJUBD2g7Ikq|#nl0K)>EJ`e|ICDo7Vc)U*J%u2;E^I<$e z6Mg50qZq|L4P*Bdo$Fo4ejFePwpqwIi>mS_rFcrmI1UO#D%H7)Dg&lvVA7wDQ9P~V z85|POmJPdVo>*uqr2FQDIUPk>`Z^+`^D|FO1RzVjx!hQ}L7N>x_*piZNuf~5S}rn| zVv<;x)r`5oU6`wrR&LP=6X}xP8o%TT{g+J5rxom_srXU(IQd{j5Az0<_#a2LTwY~qPj{+n{G{9n6+_A|E-yNS&; zY>oA_kFR1!4LfVtlaW_38XvleBroGU_QXb9iRnZQPloJ?A@v&z%715Yek>$46M-JC zYj|oE6STp*or#{#(8U@KyV^JC-i5qPL5c85i{c=GA0gljA)h8-8ODSQ70==*cip&% z=eXji8pK+k)2Xx7J zhTM3V9ht}JhNF1TZP+dN9i!ge^?>M!-v*zqpZ@z}NFoWUpnH{vZhF{`FnXAfUhH6~ zDejMvOqrIr>m5}rb4MJwtkM!-dakIngpkGx&jYy1d$$^=D1VJRNmm;J{~)YkRCM){ zHVd!c4e<>HAkDoh=XmVRRlHqKip$jQ2BtI*N8OV=k)9%W7w^%G%tM*wAk#m>99+*N z+Ap;C)$n14RDG)IJrM}9WNY}sqma9G{Tqt LCjFNC7JT + + + + + + + + + + + + + + + + + + + + diff --git a/plugin.yml b/plugin.yml new file mode 100644 index 0000000..2226b78 --- /dev/null +++ b/plugin.yml @@ -0,0 +1,7 @@ +name: AncientGates +version: 1.0.0 +main: org.mcteam.ancientgates.Plugin +commands: + gate: + description: All of the AncientGates commands + usage: See documentation. \ No newline at end of file diff --git a/src/org/mcteam/ancientgates/Conf.java b/src/org/mcteam/ancientgates/Conf.java new file mode 100644 index 0000000..b64edc3 --- /dev/null +++ b/src/org/mcteam/ancientgates/Conf.java @@ -0,0 +1,75 @@ +package org.mcteam.ancientgates; + +import java.io.File; +import java.io.IOException; + +import org.bukkit.ChatColor; +import org.mcteam.ancientgates.util.DiscUtil; + + +public class Conf { + public static transient File file = new File(Plugin.instance.getDataFolder(), "conf.json"); + + // Colors + public static ChatColor colorMember = ChatColor.GREEN; + public static ChatColor colorAlly = ChatColor.LIGHT_PURPLE; + public static ChatColor colorNeutral = ChatColor.WHITE; + public static ChatColor colorEnemy = ChatColor.RED; + + public static ChatColor colorSystem = ChatColor.YELLOW; + public static ChatColor colorChrome = ChatColor.GOLD; + public static ChatColor colorCommand = ChatColor.AQUA; + public static ChatColor colorParameter = ChatColor.DARK_AQUA; + + private static double gateSearchRadius = 7.0; + + static { + + } + + public static double getGateSearchRadius() { + return gateSearchRadius; + } + + public static int getGateMaxArea() { + return (int)gateSearchRadius*10; + } + + // -------------------------------------------- // + // Persistance + // -------------------------------------------- // + + public static boolean save() { + //Factions.log("Saving config to disk."); + + try { + DiscUtil.write(file, Plugin.gson.toJson(new Conf())); + } catch (IOException e) { + e.printStackTrace(); + Plugin.log("Failed to save the config to disk."); + return false; + } + return true; + } + + public static boolean load() { + Plugin.log("Loading conf from disk"); + + if ( ! file.exists()) { + Plugin.log("No conf to load from disk. Creating new file."); + save(); + return true; + } + + try { + Plugin.gson.fromJson(DiscUtil.read(file), Conf.class); + } catch (IOException e) { + e.printStackTrace(); + Plugin.log("Failed to load the config from disk."); + return false; + } + + return true; + } +} + diff --git a/src/org/mcteam/ancientgates/Gate.java b/src/org/mcteam/ancientgates/Gate.java new file mode 100644 index 0000000..0093390 --- /dev/null +++ b/src/org/mcteam/ancientgates/Gate.java @@ -0,0 +1,166 @@ +package org.mcteam.ancientgates; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Type; +import java.util.Collection; +import java.util.Map.Entry; +import java.util.Map; +import java.util.Set; +import java.util.TreeMap; + +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.block.Block; +import org.mcteam.ancientgates.gson.reflect.TypeToken; +import org.mcteam.ancientgates.util.DiscUtil; +import org.mcteam.ancientgates.util.FloodUtil; + + +public class Gate { + private static transient TreeMap instances = new TreeMap(String.CASE_INSENSITIVE_ORDER); + private static transient File file = new File(Plugin.instance.getDataFolder(), "gates.json"); + + private transient String id; + private Location from; + private Location to; + + public Gate() { + + } + + // -------------------------------------------- // + // Getters And Setters + // -------------------------------------------- // + + public void setId(String id) { + this.id = id; + } + + public String getId() { + return id; + } + + public void setFrom(Location from) { + this.from = from; + } + + public Location getFrom() { + return from; + } + + public void setTo(Location to) { + this.to = to; + } + + public Location getTo() { + return to; + } + + //----------------------------------------------// + // The Open And Close Methods + //----------------------------------------------// + + public boolean open() { + Set blocks = FloodUtil.getGateFrameBlocks(from.getBlock()); + + if (blocks == null) { + return false; + } + + // This is not to do an effect + // It is to stop portalblocks from destroyingthemself as they cant rely on non created blocks :P + for (Block block : blocks) { + block.setType(Material.GLOWSTONE); + } + + for (Block block : blocks) { + block.setType(Material.PORTAL); + } + + return true; + } + + public void close() { + Set blocks = FloodUtil.getGateFrameBlocks(from.getBlock()); + + for (Block block : blocks) { + block.setType(Material.AIR); + } + } + + //----------------------------------------------// + // Persistance and entity management + //----------------------------------------------// + + public static Gate get(String id) { + return instances.get(id); + } + + public static boolean exists(String id) { + return instances.containsKey(id); + } + + public static Gate create(String id) { + Gate gate = new Gate(); + gate.id = id; + instances.put(gate.id, gate); + Plugin.log("created new gate "+gate.id); + //faction.save(); + return gate; + } + + public static void delete(String id) { + // Remove the faction + instances.remove(id); + } + + public static boolean save() { + try { + DiscUtil.write(file, Plugin.gson.toJson(instances)); + } catch (IOException e) { + Plugin.log("Failed to save the gates to disk due to I/O exception."); + e.printStackTrace(); + return false; + } catch (NullPointerException e) { + Plugin.log("Failed to save the gates to disk due to NPE."); + e.printStackTrace(); + return false; + } + + return true; + } + + public static boolean load() { + Plugin.log("Loading gates from disk"); + if ( ! file.exists()) { + Plugin.log("No gates to load from disk. Creating new file."); + save(); + return true; + } + + try { + Type type = new TypeToken>(){}.getType(); + Map instancesFromFile = Plugin.gson.fromJson(DiscUtil.read(file), type); + instances.clear(); + instances.putAll(instancesFromFile); + } catch (IOException e) { + e.printStackTrace(); + return false; + } + + fillIds(); + + return true; + } + + public static Collection getAll() { + return instances.values(); + } + + public static void fillIds() { + for(Entry entry : instances.entrySet()) { + entry.getValue().setId(entry.getKey()); + } + } +} diff --git a/src/org/mcteam/ancientgates/MyLocationTypeAdapter.java b/src/org/mcteam/ancientgates/MyLocationTypeAdapter.java new file mode 100644 index 0000000..84f7322 --- /dev/null +++ b/src/org/mcteam/ancientgates/MyLocationTypeAdapter.java @@ -0,0 +1,70 @@ +package org.mcteam.ancientgates; + +import java.lang.reflect.Type; + +import org.bukkit.Location; +import org.bukkit.World; +import org.bukkit.World.Environment; +import org.mcteam.ancientgates.gson.JsonDeserializationContext; +import org.mcteam.ancientgates.gson.JsonDeserializer; +import org.mcteam.ancientgates.gson.JsonElement; +import org.mcteam.ancientgates.gson.JsonObject; +import org.mcteam.ancientgates.gson.JsonParseException; +import org.mcteam.ancientgates.gson.JsonSerializationContext; +import org.mcteam.ancientgates.gson.JsonSerializer; + +public class MyLocationTypeAdapter implements JsonDeserializer, JsonSerializer { + private static final String WORLD = "world"; + private static final String X = "x"; + private static final String Y = "y"; + private static final String Z = "z"; + private static final String YAW = "yaw"; + private static final String PITCH = "pitch"; + + @Override + public Location deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException { + JsonObject obj = json.getAsJsonObject(); + + World world = this.getWorld(obj.get(WORLD).getAsString()); + double x = obj.get(X).getAsDouble(); + double y = obj.get(Y).getAsDouble(); + double z = obj.get(Z).getAsDouble(); + float yaw = obj.get(YAW).getAsFloat(); + float pitch = obj.get(PITCH).getAsFloat(); + + return new Location(world, x, y, z, yaw, pitch); + } + + @Override + public JsonElement serialize(Location src, Type typeOfSrc, JsonSerializationContext context) { + JsonObject obj = new JsonObject(); + + if (src == null) + { + Plugin.log("Passed location is null in MyLocationTypeAdapter."); + return obj; + } + else if (src.getWorld() == null) + { + Plugin.log("Passed location's world is null in MyLocationTypeAdapter."); + return obj; + } + + obj.addProperty(WORLD, src.getWorld().getName()); + obj.addProperty(X, src.getX()); + obj.addProperty(Y, src.getY()); + obj.addProperty(Z, src.getZ()); + obj.addProperty(YAW, src.getYaw()); + obj.addProperty(PITCH, src.getPitch()); + + return obj; + } + + private World getWorld(String name) { + World world = Plugin.instance.getServer().getWorld(name); + if (world == null) { + world = Plugin.instance.getServer().createWorld(name, Environment.NORMAL); + } + return world; + } +} diff --git a/src/org/mcteam/ancientgates/Plugin.java b/src/org/mcteam/ancientgates/Plugin.java new file mode 100644 index 0000000..31c05c1 --- /dev/null +++ b/src/org/mcteam/ancientgates/Plugin.java @@ -0,0 +1,144 @@ +package org.mcteam.ancientgates; + +import java.lang.reflect.Modifier; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.logging.Level; +import java.util.logging.Logger; + +import org.bukkit.Location; +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.event.Event; +import org.bukkit.plugin.PluginManager; +import org.bukkit.plugin.java.JavaPlugin; +import org.mcteam.ancientgates.commands.BaseCommand; +import org.mcteam.ancientgates.commands.CommandClose; +import org.mcteam.ancientgates.commands.CommandCreate; +import org.mcteam.ancientgates.commands.CommandDelete; +import org.mcteam.ancientgates.commands.CommandHelp; +import org.mcteam.ancientgates.commands.CommandList; +import org.mcteam.ancientgates.commands.CommandOpen; +import org.mcteam.ancientgates.commands.CommandSetFrom; +import org.mcteam.ancientgates.commands.CommandSetTo; +import org.mcteam.ancientgates.gson.Gson; +import org.mcteam.ancientgates.gson.GsonBuilder; +import org.mcteam.ancientgates.listeners.PluginBlockListener; +import org.mcteam.ancientgates.listeners.PluginPlayerListener; + +public class Plugin extends JavaPlugin { + public static Plugin instance; + + public PluginPlayerListener playerListener = new PluginPlayerListener(); + public PluginBlockListener blockListener = new PluginBlockListener(); + + private String baseCommand; + + public final static Gson gson = new GsonBuilder() + .setPrettyPrinting() + .excludeFieldsWithModifiers(Modifier.TRANSIENT, Modifier.VOLATILE) + .registerTypeAdapter(Location.class, new MyLocationTypeAdapter()) + .create(); + + // Commands + public List commands = new ArrayList(); + + public Plugin() { + instance = this; + } + + @Override + public void onDisable() { + log("Disabled"); + } + + @Override + public void onEnable() { + // Add the commands + commands.add(new CommandHelp()); + commands.add(new CommandCreate()); + commands.add(new CommandDelete()); + commands.add(new CommandSetFrom()); + commands.add(new CommandSetTo()); + commands.add(new CommandOpen()); + commands.add(new CommandClose()); + commands.add(new CommandList()); + + // Ensure basefolder exists! + this.getDataFolder().mkdirs(); + + // Load from disc + Conf.load(); + Gate.load(); + + // Register events + PluginManager pm = this.getServer().getPluginManager(); + pm.registerEvent(Event.Type.PLAYER_MOVE, this.playerListener, Event.Priority.Normal, this); + pm.registerEvent(Event.Type.BLOCK_PHYSICS, this.blockListener, Event.Priority.Normal, this); + + log("Enabled"); + } + + // -------------------------------------------- // + // Test rights + // -------------------------------------------- // + + public static boolean hasPermManage(CommandSender sender) { + return sender.isOp(); + } + + // -------------------------------------------- // + // Commands + // -------------------------------------------- // + + @SuppressWarnings("unchecked") + public String getBaseCommand() { + if (this.baseCommand != null) { + return this.baseCommand; + } + + Map Commands = (Map)this.getDescription().getCommands(); + this.baseCommand = Commands.keySet().iterator().next(); + return this.baseCommand; + } + + @Override + public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) { + List parameters = new ArrayList(Arrays.asList(args)); + this.handleCommand(sender, parameters); + return true; + } + + public void handleCommand(CommandSender sender, List parameters) { + if (parameters.size() == 0) { + this.commands.get(0).execute(sender, parameters); + return; + } + + String commandName = parameters.get(0).toLowerCase(); + parameters.remove(0); + + for (BaseCommand fcommand : this.commands) { + if (fcommand.getAliases().contains(commandName)) { + fcommand.execute(sender, parameters); + return; + } + } + + sender.sendMessage(Conf.colorSystem+"Unknown gate-command \""+commandName+"\". Try "+Conf.colorCommand+"/"+getBaseCommand()+" help"); + } + + // -------------------------------------------- // + // Logging + // -------------------------------------------- // + public static void log(String msg) { + log(Level.INFO, msg); + } + + public static void log(Level level, String msg) { + Logger.getLogger("Minecraft").log(level, "["+instance.getDescription().getFullName()+"] "+msg); + } + +} diff --git a/src/org/mcteam/ancientgates/commands/BaseCommand.java b/src/org/mcteam/ancientgates/commands/BaseCommand.java new file mode 100644 index 0000000..2f783d8 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/BaseCommand.java @@ -0,0 +1,146 @@ +package org.mcteam.ancientgates.commands; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.mcteam.ancientgates.Gate; +import org.mcteam.ancientgates.Plugin; +import org.mcteam.ancientgates.Conf; +import org.mcteam.ancientgates.util.TextUtil; + +public class BaseCommand { + public List aliases; + public List requiredParameters; + public List optionalParameters; + + public String helpDescription; + + public CommandSender sender; + public boolean senderMustBePlayer; + public boolean hasGateParam; + public Player player; + public Gate gate; + + public List parameters; + + + public BaseCommand() { + aliases = new ArrayList(); + requiredParameters = new ArrayList(); + optionalParameters = new ArrayList(); + + senderMustBePlayer = true; + hasGateParam = true; + + helpDescription = "no description"; + } + + public List getAliases() { + return aliases; + } + + public void execute(CommandSender sender, List parameters) { + this.sender = sender; + this.parameters = parameters; + + if ( ! validateCall()) { + return; + } + + if (this.senderMustBePlayer) { + this.player = (Player)sender; + } + + perform(); + } + + public void perform() { + + } + + public void sendMessage(String message) { + sender.sendMessage(Conf.colorSystem+message); + } + + public void sendMessage(List messages) { + for(String message : messages) { + this.sendMessage(message); + } + } + + public boolean validateCall() { + if ( this.senderMustBePlayer && ! (sender instanceof Player)) { + sendMessage("This command can only be used by ingame players."); + return false; + } + + if( ! hasPermission(sender)) { + sendMessage("You lack the permissions to "+this.helpDescription.toLowerCase()+"."); + return false; + } + + if (parameters.size() < requiredParameters.size()) { + sendMessage("Usage: "+this.getUseageTemplate(true)); + return false; + } + + if (this.hasGateParam) { + String id = parameters.get(0); + if ( ! Gate.exists(id)) { + sendMessage("There exists no gate with id "+id); + return false; + } + gate = Gate.get(id); + } + + return true; + } + + public boolean hasPermission(CommandSender sender) { + return Plugin.hasPermManage(sender); + } + + // -------------------------------------------- // + // Help and usage description + // -------------------------------------------- // + public String getUseageTemplate(boolean withColor, boolean withDescription) { + String ret = ""; + + if (withColor) { + ret += Conf.colorCommand; + } + + ret += "/" + Plugin.instance.getBaseCommand()+ " " +TextUtil.implode(this.getAliases(), ",")+" "; + + List parts = new ArrayList(); + + for (String requiredParameter : this.requiredParameters) { + parts.add("["+requiredParameter+"]"); + } + + for (String optionalParameter : this.optionalParameters) { + parts.add("*["+optionalParameter+"]"); + } + + if (withColor) { + ret += Conf.colorParameter; + } + + ret += TextUtil.implode(parts, " "); + + if (withDescription) { + ret += " "+Conf.colorSystem + this.helpDescription; + } + return ret; + } + + public String getUseageTemplate(boolean withColor) { + return getUseageTemplate(withColor, false); + } + + public String getUseageTemplate() { + return getUseageTemplate(true); + } +} diff --git a/src/org/mcteam/ancientgates/commands/CommandClose.java b/src/org/mcteam/ancientgates/commands/CommandClose.java new file mode 100644 index 0000000..5ae67d7 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandClose.java @@ -0,0 +1,18 @@ +package org.mcteam.ancientgates.commands; + +public class CommandClose extends BaseCommand { + + public CommandClose() { + aliases.add("close"); + + requiredParameters.add("id"); + + helpDescription = "Close that gate"; + } + + public void perform() { + gate.close(); + sendMessage("The gate was closed."); + } +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandCreate.java b/src/org/mcteam/ancientgates/commands/CommandCreate.java new file mode 100644 index 0000000..a674f2e --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandCreate.java @@ -0,0 +1,32 @@ +package org.mcteam.ancientgates.commands; + +import org.mcteam.ancientgates.Gate; + +public class CommandCreate extends BaseCommand { + public CommandCreate() { + aliases.add("create"); + aliases.add("new"); + + requiredParameters.add("id"); + + senderMustBePlayer = false; + hasGateParam = false; + + helpDescription = "Create a gate"; + } + + public void perform() { + String id = parameters.get(0); + if (Gate.exists(id)) { + sendMessage("There gate \"" + id + "\" already exists."); + return; + } + + Gate.create(id); + sendMessage("Gate with id \"" + id + "\" was created. Now you should:"); + sendMessage(new CommandSetFrom().getUseageTemplate(true, true)); + + Gate.save(); + } +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandDelete.java b/src/org/mcteam/ancientgates/commands/CommandDelete.java new file mode 100644 index 0000000..4fae93b --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandDelete.java @@ -0,0 +1,24 @@ +package org.mcteam.ancientgates.commands; + +import org.mcteam.ancientgates.Gate; + +public class CommandDelete extends BaseCommand { + public CommandDelete() { + aliases.add("delete"); + aliases.add("del"); + aliases.add("remove"); + + requiredParameters.add("id"); + + senderMustBePlayer = false; + helpDescription = "Delete a gate"; + } + + public void perform() { + gate.close(); + sendMessage("Gate with id \"" + gate.getId() + "\" was deleted."); + Gate.delete(gate.getId()); + Gate.save(); + } +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandHelp.java b/src/org/mcteam/ancientgates/commands/CommandHelp.java new file mode 100644 index 0000000..8725847 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandHelp.java @@ -0,0 +1,67 @@ +package org.mcteam.ancientgates.commands; + +import java.util.ArrayList; + +import org.bukkit.command.CommandSender; +import org.mcteam.ancientgates.util.TextUtil; + +public class CommandHelp extends BaseCommand { + + public CommandHelp() { + aliases.add("help"); + aliases.add("h"); + aliases.add("?"); + + optionalParameters.add("page"); + hasGateParam = false; + + helpDescription = "Display a help page"; + } + + @Override + public boolean hasPermission(CommandSender sender) { + return true; + } + + public void perform() { + int page = 1; + if (parameters.size() > 0) { + try { + page = Integer.parseInt(parameters.get(0)); + } catch (NumberFormatException e) { + // wasn't an integer + } + } + sendMessage(TextUtil.titleize("AncientGates Help ("+page+"/"+helpPages.size()+")")); + page -= 1; + if (page < 0 || page >= helpPages.size()) { + sendMessage("This page does not exist"); + return; + } + sendMessage(helpPages.get(page)); + } + + //----------------------------------------------// + // Build the help pages + //----------------------------------------------// + + public static ArrayList> helpPages; + + static { + helpPages = new ArrayList>(); + ArrayList pageLines; + + pageLines = new ArrayList(); + pageLines.add( new CommandHelp().getUseageTemplate(true, true) ); + pageLines.add( new CommandCreate().getUseageTemplate(true, true) ); + pageLines.add( new CommandDelete().getUseageTemplate(true, true) ); + pageLines.add( new CommandSetFrom().getUseageTemplate(true, true) ); + pageLines.add( new CommandSetTo().getUseageTemplate(true, true) ); + pageLines.add( new CommandOpen().getUseageTemplate(true, true) ); + pageLines.add( new CommandClose().getUseageTemplate(true, true) ); + pageLines.add( new CommandList().getUseageTemplate(true, true) ); + helpPages.add(pageLines); + } + +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandList.java b/src/org/mcteam/ancientgates/commands/CommandList.java new file mode 100644 index 0000000..c2415d5 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandList.java @@ -0,0 +1,37 @@ +package org.mcteam.ancientgates.commands; + +import java.util.ArrayList; +import java.util.List; + +import org.mcteam.ancientgates.Conf; +import org.mcteam.ancientgates.Gate; +import org.mcteam.ancientgates.util.TextUtil; + +public class CommandList extends BaseCommand { + + public CommandList() { + aliases.add("list"); + aliases.add("ls"); + + hasGateParam = false; + + helpDescription = "Display a list of the gates"; + } + + public void perform() { + List ids = new ArrayList(); + + for (Gate gate : Gate.getAll()) { + ids.add(Conf.colorAlly + gate.getId()); + } + + if (ids.size() == 0) { + sendMessage("There are no gates yet."); + return; + } + + sendMessage(TextUtil.implode(ids, Conf.colorSystem+", ")); + } + +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandOpen.java b/src/org/mcteam/ancientgates/commands/CommandOpen.java new file mode 100644 index 0000000..7d06704 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandOpen.java @@ -0,0 +1,33 @@ +package org.mcteam.ancientgates.commands; + +public class CommandOpen extends BaseCommand { + + public CommandOpen() { + aliases.add("open"); + + requiredParameters.add("id"); + + helpDescription = "Open that gate"; + } + + public void perform() { + if (gate.getFrom() == null) { + sendMessage("You must set the from location first. To fix that:"); + sendMessage(new CommandSetFrom().getUseageTemplate(true, true)); + return; + } + + if (gate.getTo() == null) { + sendMessage("Sure, but note that this gate does not point anywhere :P"); + sendMessage("To fix that: " + new CommandSetTo().getUseageTemplate(true, true)); + } + + if (gate.open()) { + sendMessage("The gate was opened."); + } else { + sendMessage("Failed to open the gate. Have you built a frame?"); + sendMessage("More info here: " + new CommandHelp().getUseageTemplate(true, true)); + } + } +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandSetFrom.java b/src/org/mcteam/ancientgates/commands/CommandSetFrom.java new file mode 100644 index 0000000..b50221e --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandSetFrom.java @@ -0,0 +1,25 @@ +package org.mcteam.ancientgates.commands; + +import org.mcteam.ancientgates.Gate; + +public class CommandSetFrom extends BaseCommand { + + public CommandSetFrom() { + aliases.add("setfrom"); + + requiredParameters.add("id"); + + helpDescription = "Set \"from\" to your location."; + } + + public void perform() { + gate.setFrom(player.getLocation()); + sendMessage("From location for gate \""+gate.getId()+"\" is now where you stand."); + sendMessage("Build a frame around that block and:"); + sendMessage(new CommandOpen().getUseageTemplate(true, true)); + + Gate.save(); + } + +} + diff --git a/src/org/mcteam/ancientgates/commands/CommandSetTo.java b/src/org/mcteam/ancientgates/commands/CommandSetTo.java new file mode 100644 index 0000000..4206e00 --- /dev/null +++ b/src/org/mcteam/ancientgates/commands/CommandSetTo.java @@ -0,0 +1,23 @@ +package org.mcteam.ancientgates.commands; + +import org.mcteam.ancientgates.Gate; + +public class CommandSetTo extends BaseCommand { + + public CommandSetTo() { + aliases.add("setto"); + + requiredParameters.add("id"); + + helpDescription = "Set \"to\" to your location."; + } + + public void perform() { + gate.setTo(player.getLocation()); + sendMessage("To location for gate \""+gate.getId()+"\" is now where you stand."); + + Gate.save(); + } + +} + diff --git a/src/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.java b/src/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.java new file mode 100644 index 0000000..78da276 --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/AnonymousAndLocalClassExclusionStrategy.java @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + + +/** + * Strategy for excluding anonymous and local classes. + * + * @author Joel Leitch + */ +final class AnonymousAndLocalClassExclusionStrategy implements ExclusionStrategy { + + public boolean shouldSkipField(FieldAttributes f) { + return isAnonymousOrLocal(f.getDeclaredClass()); + } + + public boolean shouldSkipClass(Class clazz) { + return isAnonymousOrLocal(clazz); + } + + private boolean isAnonymousOrLocal(Class clazz) { + return !Enum.class.isAssignableFrom(clazz) + && (clazz.isAnonymousClass() || clazz.isLocalClass()); + } +} diff --git a/src/org/mcteam/ancientgates/gson/Cache.java b/src/org/mcteam/ancientgates/gson/Cache.java new file mode 100644 index 0000000..7383b3f --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/Cache.java @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2010 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + +/** + * Defines generic cache interface. + * + * @author Inderjeet Singh + * @author Joel Leitch + */ +interface Cache { + + /** + * Adds the new value object into the cache for the given key. If the key already + * exists, then this method will override the value for the key. + * + * @param key the key identifier for the {@code value} object + * @param value the value object to store in the cache + */ + void addElement(K key, V value); + + /** + * Retrieve the cached value for the given {@code key}. + * + * @param key the key identifying the value + * @return the cached value for the given {@code key} + */ + V getElement(K key); + + /** + * Removes the value from the cache for the given key. + * + * @param key the key identifying the value to remove + * @return the value for the given {@code key} + */ + V removeElement(K key); + + /** + * Removes everything from this cache. + */ + void clear(); + + /** + * @return the number of objects in this cache + */ + int size(); +} diff --git a/src/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.java b/src/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.java new file mode 100644 index 0000000..941c27c --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/CamelCaseSeparatorNamingPolicy.java @@ -0,0 +1,73 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; +import java.util.Collection; + +/** + * Converts the field name that uses camel-case define word separation into separate words that + * are separated by the provided {@code separatorString}. + * + *

The following is an example:

+ *
+ * class IntWrapper {
+ *   public int integerField = 0;
+ * }
+ *
+ * CamelCaseSeparatorNamingPolicy policy = new CamelCaseSeparatorNamingPolicy("_");
+ * String translatedFieldName =
+ *     policy.translateName(IntWrapper.class.getField("integerField"));
+ *
+ * assert("integer_Field".equals(translatedFieldName));
+ * 
+ * + * @author Joel Leitch + */ +final class CamelCaseSeparatorNamingPolicy extends RecursiveFieldNamingPolicy { + private final String separatorString; + + /** + * Constructs a new CamelCaseSeparatorNamingPolicy object that will add the + * {@code separatorString} between each of the words separated by camel case. + * + * @param separatorString the string value to place between words + * @throws IllegalArgumentException thrown if the {@code separatorString} parameter + * is null or empty. + */ + public CamelCaseSeparatorNamingPolicy(String separatorString) { + Preconditions.checkNotNull(separatorString); + Preconditions.checkArgument(!"".equals(separatorString)); + this.separatorString = separatorString; + } + + @Override + protected String translateName(String target, Type fieldType, + Collection annnotations) { + StringBuilder translation = new StringBuilder(); + for (int i = 0; i < target.length(); i++) { + char character = target.charAt(i); + if (Character.isUpperCase(character) && translation.length() != 0) { + translation.append(separatorString); + } + translation.append(character); + } + + return translation.toString(); + } +} diff --git a/src/org/mcteam/ancientgates/gson/CircularReferenceException.java b/src/org/mcteam/ancientgates/gson/CircularReferenceException.java new file mode 100644 index 0000000..6ffe870 --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/CircularReferenceException.java @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2009 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + +/** + * Exception class to indicate a circular reference error. + * This class is not part of the public API and hence is not public. + * + * @author Inderjeet Singh + * @author Joel Leitch + */ +final class CircularReferenceException extends RuntimeException { + private static final long serialVersionUID = 7444343294106513081L; + private final Object offendingNode; + + CircularReferenceException(Object offendingNode) { + super("circular reference error"); + this.offendingNode = offendingNode; + } + + public IllegalStateException createDetailedException(FieldAttributes offendingField) { + StringBuilder msg = new StringBuilder(getMessage()); + if (offendingField != null) { + msg.append("\n ").append("Offending field: ").append(offendingField.getName() + "\n"); + } + if (offendingNode != null) { + msg.append("\n ").append("Offending object: ").append(offendingNode); + } + return new IllegalStateException(msg.toString(), this); + } +} diff --git a/src/org/mcteam/ancientgates/gson/CompositionFieldNamingPolicy.java b/src/org/mcteam/ancientgates/gson/CompositionFieldNamingPolicy.java new file mode 100644 index 0000000..a491f60 --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/CompositionFieldNamingPolicy.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + +import java.lang.annotation.Annotation; +import java.lang.reflect.Type; +import java.util.Collection; + +/** + * Performs numerous field naming translations wrapped up as one object. + * + * @author Joel Leitch + */ +abstract class CompositionFieldNamingPolicy extends RecursiveFieldNamingPolicy { + + private final RecursiveFieldNamingPolicy[] fieldPolicies; + + public CompositionFieldNamingPolicy(RecursiveFieldNamingPolicy... fieldNamingPolicies) { + if (fieldNamingPolicies == null) { + throw new NullPointerException("naming policies can not be null."); + } + this.fieldPolicies = fieldNamingPolicies; + } + + @Override + protected String translateName(String target, Type fieldType, Collection annotations) { + for (RecursiveFieldNamingPolicy policy : fieldPolicies) { + target = policy.translateName(target, fieldType, annotations); + } + return target; + } +} diff --git a/src/org/mcteam/ancientgates/gson/DefaultTypeAdapters.java b/src/org/mcteam/ancientgates/gson/DefaultTypeAdapters.java new file mode 100644 index 0000000..b1fc606 --- /dev/null +++ b/src/org/mcteam/ancientgates/gson/DefaultTypeAdapters.java @@ -0,0 +1,893 @@ +/* + * Copyright (C) 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.mcteam.ancientgates.gson; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.net.MalformedURLException; +import java.net.URI; +import java.net.URISyntaxException; +import java.net.URL; +import java.sql.Time; +import java.sql.Timestamp; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Collection; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.HashSet; +import java.util.LinkedHashMap; +import java.util.LinkedList; +import java.util.Locale; +import java.util.Map; +import java.util.Properties; +import java.util.Set; +import java.util.SortedSet; +import java.util.StringTokenizer; +import java.util.TreeSet; +import java.util.UUID; + +/** + * List of all the default type adapters ({@link JsonSerializer}s, {@link JsonDeserializer}s, + * and {@link InstanceCreator}s. + * + * @author Inderjeet Singh + * @author Joel Leitch + */ +final class DefaultTypeAdapters { + + private static final DefaultDateTypeAdapter DATE_TYPE_ADAPTER = new DefaultDateTypeAdapter(); + private static final DefaultJavaSqlDateTypeAdapter JAVA_SQL_DATE_TYPE_ADAPTER = + new DefaultJavaSqlDateTypeAdapter(); + private static final DefaultTimeTypeAdapter TIME_TYPE_ADAPTER = + new DefaultTimeTypeAdapter(); + private static final DefaultTimestampDeserializer TIMESTAMP_DESERIALIZER = + new DefaultTimestampDeserializer(); + + @SuppressWarnings("rawtypes") + private static final EnumTypeAdapter ENUM_TYPE_ADAPTER = new EnumTypeAdapter(); + private static final UrlTypeAdapter URL_TYPE_ADAPTER = new UrlTypeAdapter(); + private static final UriTypeAdapter URI_TYPE_ADAPTER = new UriTypeAdapter(); + private static final UuidTypeAdapter UUUID_TYPE_ADAPTER = new UuidTypeAdapter(); + private static final LocaleTypeAdapter LOCALE_TYPE_ADAPTER = new LocaleTypeAdapter(); + private static final CollectionTypeAdapter COLLECTION_TYPE_ADAPTER = new CollectionTypeAdapter(); + private static final MapTypeAdapter MAP_TYPE_ADAPTER = new MapTypeAdapter(); + private static final BigDecimalTypeAdapter BIG_DECIMAL_TYPE_ADAPTER = new BigDecimalTypeAdapter(); + private static final BigIntegerTypeAdapter BIG_INTEGER_TYPE_ADAPTER = new BigIntegerTypeAdapter(); + + private static final BooleanTypeAdapter BOOLEAN_TYPE_ADAPTER = new BooleanTypeAdapter(); + private static final ByteTypeAdapter BYTE_TYPE_ADAPTER = new ByteTypeAdapter(); + private static final CharacterTypeAdapter CHARACTER_TYPE_ADAPTER = new CharacterTypeAdapter(); + private static final DoubleDeserializer DOUBLE_TYPE_ADAPTER = new DoubleDeserializer(); + private static final FloatDeserializer FLOAT_TYPE_ADAPTER = new FloatDeserializer(); + private static final IntegerTypeAdapter INTEGER_TYPE_ADAPTER = new IntegerTypeAdapter(); + private static final LongDeserializer LONG_DESERIALIZER = new LongDeserializer(); + private static final NumberTypeAdapter NUMBER_TYPE_ADAPTER = new NumberTypeAdapter(); + private static final ShortTypeAdapter SHORT_TYPE_ADAPTER = new ShortTypeAdapter(); + private static final StringTypeAdapter STRING_TYPE_ADAPTER = new StringTypeAdapter(); + + private static final PropertiesCreator PROPERTIES_CREATOR = new PropertiesCreator(); + private static final TreeSetCreator TREE_SET_CREATOR = new TreeSetCreator(); + private static final HashSetCreator HASH_SET_CREATOR = new HashSetCreator(); + private static final GregorianCalendarTypeAdapter GREGORIAN_CALENDAR_TYPE_ADAPTER = + new GregorianCalendarTypeAdapter(); + + // The constants DEFAULT_SERIALIZERS, DEFAULT_DESERIALIZERS, and DEFAULT_INSTANCE_CREATORS + // must be defined after the constants for the type adapters. Otherwise, the type adapter + // constants will appear as nulls. + private static final ParameterizedTypeHandlerMap> DEFAULT_SERIALIZERS = + createDefaultSerializers(); + private static final ParameterizedTypeHandlerMap> DEFAULT_DESERIALIZERS = + createDefaultDeserializers(); + private static final ParameterizedTypeHandlerMap> DEFAULT_INSTANCE_CREATORS = + createDefaultInstanceCreators(); + + private static ParameterizedTypeHandlerMap> createDefaultSerializers() { + ParameterizedTypeHandlerMap> map = + new ParameterizedTypeHandlerMap>(); + + map.registerForTypeHierarchy(Enum.class, ENUM_TYPE_ADAPTER); + map.register(URL.class, URL_TYPE_ADAPTER); + map.register(URI.class, URI_TYPE_ADAPTER); + map.register(UUID.class, UUUID_TYPE_ADAPTER); + map.register(Locale.class, LOCALE_TYPE_ADAPTER); + map.registerForTypeHierarchy(Collection.class, COLLECTION_TYPE_ADAPTER); + map.registerForTypeHierarchy(Map.class, MAP_TYPE_ADAPTER); + map.register(Date.class, DATE_TYPE_ADAPTER); + map.register(java.sql.Date.class, JAVA_SQL_DATE_TYPE_ADAPTER); + map.register(Timestamp.class, DATE_TYPE_ADAPTER); + map.register(Time.class, TIME_TYPE_ADAPTER); + map.register(Calendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER); + map.register(GregorianCalendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER); + map.register(BigDecimal.class, BIG_DECIMAL_TYPE_ADAPTER); + map.register(BigInteger.class, BIG_INTEGER_TYPE_ADAPTER); + + // Add primitive serializers + map.register(Boolean.class, BOOLEAN_TYPE_ADAPTER); + map.register(boolean.class, BOOLEAN_TYPE_ADAPTER); + map.register(Byte.class, BYTE_TYPE_ADAPTER); + map.register(byte.class, BYTE_TYPE_ADAPTER); + map.register(Character.class, CHARACTER_TYPE_ADAPTER); + map.register(char.class, CHARACTER_TYPE_ADAPTER); + map.register(Integer.class, INTEGER_TYPE_ADAPTER); + map.register(int.class, INTEGER_TYPE_ADAPTER); + map.register(Number.class, NUMBER_TYPE_ADAPTER); + map.register(Short.class, SHORT_TYPE_ADAPTER); + map.register(short.class, SHORT_TYPE_ADAPTER); + map.register(String.class, STRING_TYPE_ADAPTER); + + map.makeUnmodifiable(); + return map; + } + + private static ParameterizedTypeHandlerMap> createDefaultDeserializers() { + ParameterizedTypeHandlerMap> map = + new ParameterizedTypeHandlerMap>(); + map.registerForTypeHierarchy(Enum.class, wrapDeserializer(ENUM_TYPE_ADAPTER)); + map.register(URL.class, wrapDeserializer(URL_TYPE_ADAPTER)); + map.register(URI.class, wrapDeserializer(URI_TYPE_ADAPTER)); + map.register(UUID.class, wrapDeserializer(UUUID_TYPE_ADAPTER)); + map.register(Locale.class, wrapDeserializer(LOCALE_TYPE_ADAPTER)); + map.registerForTypeHierarchy(Collection.class, wrapDeserializer(COLLECTION_TYPE_ADAPTER)); + map.registerForTypeHierarchy(Map.class, wrapDeserializer(MAP_TYPE_ADAPTER)); + map.register(Date.class, wrapDeserializer(DATE_TYPE_ADAPTER)); + map.register(java.sql.Date.class, wrapDeserializer(JAVA_SQL_DATE_TYPE_ADAPTER)); + map.register(Timestamp.class, wrapDeserializer(TIMESTAMP_DESERIALIZER)); + map.register(Time.class, wrapDeserializer(TIME_TYPE_ADAPTER)); + map.register(Calendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER); + map.register(GregorianCalendar.class, GREGORIAN_CALENDAR_TYPE_ADAPTER); + map.register(BigDecimal.class, wrapDeserializer(BIG_DECIMAL_TYPE_ADAPTER)); + map.register(BigInteger.class, wrapDeserializer(BIG_INTEGER_TYPE_ADAPTER)); + + // Add primitive deserializers + map.register(Boolean.class, wrapDeserializer(BOOLEAN_TYPE_ADAPTER)); + map.register(boolean.class, wrapDeserializer(BOOLEAN_TYPE_ADAPTER)); + map.register(Byte.class, wrapDeserializer(BYTE_TYPE_ADAPTER)); + map.register(byte.class, wrapDeserializer(BYTE_TYPE_ADAPTER)); + map.register(Character.class, wrapDeserializer(CHARACTER_TYPE_ADAPTER)); + map.register(char.class, wrapDeserializer(CHARACTER_TYPE_ADAPTER)); + map.register(Double.class, wrapDeserializer(DOUBLE_TYPE_ADAPTER)); + map.register(double.class, wrapDeserializer(DOUBLE_TYPE_ADAPTER)); + map.register(Float.class, wrapDeserializer(FLOAT_TYPE_ADAPTER)); + map.register(float.class, wrapDeserializer(FLOAT_TYPE_ADAPTER)); + map.register(Integer.class, wrapDeserializer(INTEGER_TYPE_ADAPTER)); + map.register(int.class, wrapDeserializer(INTEGER_TYPE_ADAPTER)); + map.register(Long.class, wrapDeserializer(LONG_DESERIALIZER)); + map.register(long.class, wrapDeserializer(LONG_DESERIALIZER)); + map.register(Number.class, wrapDeserializer(NUMBER_TYPE_ADAPTER)); + map.register(Short.class, wrapDeserializer(SHORT_TYPE_ADAPTER)); + map.register(short.class, wrapDeserializer(SHORT_TYPE_ADAPTER)); + map.register(String.class, wrapDeserializer(STRING_TYPE_ADAPTER)); + + map.makeUnmodifiable(); + return map; + } + + private static ParameterizedTypeHandlerMap> createDefaultInstanceCreators() { + ParameterizedTypeHandlerMap> map = + new ParameterizedTypeHandlerMap>(); + map.registerForTypeHierarchy(Map.class, MAP_TYPE_ADAPTER); + + // Add Collection type instance creators + map.registerForTypeHierarchy(Collection.class, COLLECTION_TYPE_ADAPTER); + + map.registerForTypeHierarchy(Set.class, HASH_SET_CREATOR); + map.registerForTypeHierarchy(SortedSet.class, TREE_SET_CREATOR); + map.register(Properties.class, PROPERTIES_CREATOR); + map.makeUnmodifiable(); + return map; + } + + @SuppressWarnings({"unchecked", "rawtypes"}) + private static JsonDeserializer wrapDeserializer(JsonDeserializer deserializer) { + return new JsonDeserializerExceptionWrapper(deserializer); + } + + static ParameterizedTypeHandlerMap> getDefaultSerializers() { + return getDefaultSerializers(false, LongSerializationPolicy.DEFAULT); + } + + static ParameterizedTypeHandlerMap> getDefaultSerializers( + boolean serializeSpecialFloatingPointValues, LongSerializationPolicy longSerializationPolicy) { + ParameterizedTypeHandlerMap> serializers = + new ParameterizedTypeHandlerMap>(); + + // Double primitive + DefaultTypeAdapters.DoubleSerializer doubleSerializer = + new DefaultTypeAdapters.DoubleSerializer(serializeSpecialFloatingPointValues); + serializers.registerIfAbsent(Double.class, doubleSerializer); + serializers.registerIfAbsent(double.class, doubleSerializer); + + // Float primitive + DefaultTypeAdapters.FloatSerializer floatSerializer = + new DefaultTypeAdapters.FloatSerializer(serializeSpecialFloatingPointValues); + serializers.registerIfAbsent(Float.class, floatSerializer); + serializers.registerIfAbsent(float.class, floatSerializer); + + // Long primitive + DefaultTypeAdapters.LongSerializer longSerializer = + new DefaultTypeAdapters.LongSerializer(longSerializationPolicy); + serializers.registerIfAbsent(Long.class, longSerializer); + serializers.registerIfAbsent(long.class, longSerializer); + + serializers.registerIfAbsent(DEFAULT_SERIALIZERS); + return serializers; + } + + static ParameterizedTypeHandlerMap> getDefaultDeserializers() { + return DEFAULT_DESERIALIZERS; + } + + static ParameterizedTypeHandlerMap> getDefaultInstanceCreators() { + return DEFAULT_INSTANCE_CREATORS; + } + + static class DefaultDateTypeAdapter implements JsonSerializer, JsonDeserializer { + private final DateFormat format; + + DefaultDateTypeAdapter() { + this.format = DateFormat.getDateTimeInstance(); + } + + DefaultDateTypeAdapter(final String datePattern) { + this.format = new SimpleDateFormat(datePattern); + } + + DefaultDateTypeAdapter(final int style) { + this.format = DateFormat.getDateInstance(style); + } + + public DefaultDateTypeAdapter(final int dateStyle, final int timeStyle) { + this.format = DateFormat.getDateTimeInstance(dateStyle, timeStyle); + } + + // These methods need to be synchronized since JDK DateFormat classes are not thread-safe + // See issue 162 + public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) { + synchronized (format) { + String dateFormatAsString = format.format(src); + return new JsonPrimitive(dateFormatAsString); + } + } + + public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) + throws JsonParseException { + if (!(json instanceof JsonPrimitive)) { + throw new JsonParseException("The date should be a string value"); + } + try { + synchronized (format) { + return format.parse(json.getAsString()); + } + } catch (ParseException e) { + throw new JsonSyntaxException(e); + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append(DefaultDateTypeAdapter.class.getSimpleName()); + sb.append('(').append(format.getClass().getSimpleName()).append(')'); + return sb.toString(); + } + } + + static class DefaultJavaSqlDateTypeAdapter implements JsonSerializer, + JsonDeserializer { + private final DateFormat format; + DefaultJavaSqlDateTypeAdapter() { + this.format = new SimpleDateFormat("MMM d, yyyy"); + } + + public JsonElement serialize(java.sql.Date src, Type typeOfSrc, + JsonSerializationContext context) { + synchronized (format) { + String dateFormatAsString = format.format(src); + return new JsonPrimitive(dateFormatAsString); + } + } + + public java.sql.Date deserialize(JsonElement json, Type typeOfT, + JsonDeserializationContext context) throws JsonParseException { + if (!(json instanceof JsonPrimitive)) { + throw new JsonParseException("The date should be a string value"); + } + try { + synchronized (format) { + Date date = format.parse(json.getAsString()); + return new java.sql.Date(date.getTime()); + } + } catch (ParseException e) { + throw new JsonSyntaxException(e); + } + } + } + + static class DefaultTimestampDeserializer implements JsonDeserializer { + public Timestamp deserialize(JsonElement json, Type typeOfT, + JsonDeserializationContext context) throws JsonParseException { + Date date = context.deserialize(json, Date.class); + return new Timestamp(date.getTime()); + } + } + + static class DefaultTimeTypeAdapter implements JsonSerializer