diff --git a/pom.xml b/pom.xml
index 01542659..b24b1b8b 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,11 +6,11 @@
com.craftaro
FabledSkyBlock
- 3.0.6
+ 3.1.0
FabledSkyBlock
Bring your server's SkyBlock experience to the next level with the ability to fine-tune island settings, create custom islands, view leaderboards, and much more
- https://craftaro.com/marketplace/product/17
+ https://songoda.com/product/fabledskyblock-13
8
@@ -25,7 +25,7 @@
org.apache.maven.plugins
maven-shade-plugin
- 3.5.2
+ 3.6.0
@@ -69,10 +69,10 @@
false
**/nms/v*/**
+ **/third_party/net/kyori/**
**/third_party/org/apache/**
- **/third_party/net/kyori/**
**/third_party/com/zaxxer/**
**/third_party/org/jooq/**
**/third_party/org/mariadb/**
@@ -139,7 +139,7 @@
com.craftaro
CraftaroCore
- 3.0.0-SNAPSHOT
+ 3.5.0-SNAPSHOT
compile
@@ -174,7 +174,7 @@
me.clip
placeholderapi
- 2.11.5
+ 2.11.6
provided
diff --git a/src/main/java/com/craftaro/skyblock/SkyBlock.java b/src/main/java/com/craftaro/skyblock/SkyBlock.java
index 4c441b5d..27e8af42 100644
--- a/src/main/java/com/craftaro/skyblock/SkyBlock.java
+++ b/src/main/java/com/craftaro/skyblock/SkyBlock.java
@@ -2,13 +2,12 @@ package com.craftaro.skyblock;
import com.craftaro.core.SongodaCore;
import com.craftaro.core.SongodaPlugin;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerProject;
-import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.configuration.Config;
import com.craftaro.core.gui.GuiManager;
import com.craftaro.core.hooks.HologramManager;
import com.craftaro.core.hooks.LogManager;
-import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.api.SkyBlockAPI;
import com.craftaro.skyblock.ban.BanManager;
import com.craftaro.skyblock.bank.BankManager;
@@ -71,6 +70,7 @@ import com.craftaro.skyblock.usercache.UserCacheManager;
import com.craftaro.skyblock.visit.VisitManager;
import com.craftaro.skyblock.visit.VisitTask;
import com.craftaro.skyblock.world.WorldManager;
+import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import net.milkbowl.vault.permission.Permission;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
@@ -81,9 +81,7 @@ import org.bukkit.plugin.PluginManager;
import org.jetbrains.annotations.NotNull;
import java.io.File;
-import java.util.HashSet;
import java.util.List;
-import java.util.Set;
public class SkyBlock extends SongodaPlugin {
private FileManager fileManager;
@@ -154,17 +152,18 @@ public class SkyBlock extends SongodaPlugin {
@Override
public void onPluginEnable() {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_20) || ServerVersion.isServerVersionBelow(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_20) || MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_8)) {
this.getLogger().warning("This Minecraft version is not officially supported.");
}
- if (this.paper = ServerProject.isServer(ServerProject.PAPER)) {
+ this.paper = ServerProject.isServer(ServerProject.PAPER);
+ if (this.paper) {
try {
Bukkit.spigot().getClass().getMethod("getPaperConfig");
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) {
this.paperAsync = true;
} else {
- this.paperAsync = ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) &&
+ this.paperAsync = MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13) &&
Bukkit.spigot().getPaperConfig().getBoolean("settings.async-chunks.enable", false);
}
} catch (NoSuchMethodException ignored) {
@@ -266,7 +265,7 @@ public class SkyBlock extends SongodaPlugin {
pluginManager.registerEvents(new FallBreakListeners(this), this);
pluginManager.registerEvents(new WorldListeners(this), this);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
pluginManager.registerEvents(new SpongeListeners(this), this);
}
diff --git a/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java b/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java
index 5f59f0e8..956e13f8 100644
--- a/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java
+++ b/src/main/java/com/craftaro/skyblock/blockscanner/BlockScanner.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.blockscanner;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.utils.world.WorldUtil;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -272,7 +273,7 @@ public final class BlockScanner extends BukkitRunnable {
for (int z = initZ; z <= lastZ; z++) {
for (int y = scanY; y < world.getMaxHeight(); y++) {
final Optional type = CompatibleMaterial.getMaterial(
- ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)
+ MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)
? shot.getSnapshot().getBlockType(x, y, z) :
MaterialIDHelper.getLegacyMaterial(getBlockTypeID(shot, x, y, z)));
diff --git a/src/main/java/com/craftaro/skyblock/blockscanner/MaterialIDHelper.java b/src/main/java/com/craftaro/skyblock/blockscanner/MaterialIDHelper.java
index 44d4d0df..d45b48be 100644
--- a/src/main/java/com/craftaro/skyblock/blockscanner/MaterialIDHelper.java
+++ b/src/main/java/com/craftaro/skyblock/blockscanner/MaterialIDHelper.java
@@ -1,6 +1,6 @@
package com.craftaro.skyblock.blockscanner;
-import com.craftaro.core.compatibility.ServerVersion;
+import com.craftaro.core.compatibility.MajorServerVersion;
import org.bukkit.Material;
import java.util.HashMap;
@@ -15,7 +15,7 @@ public final class MaterialIDHelper {
static {
MATERIALS = new HashMap<>();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
for (Material type : Material.values()) {
if (type.isLegacy()) {
MATERIALS.put(type.getId(), type);
diff --git a/src/main/java/com/craftaro/skyblock/config/FileManager.java b/src/main/java/com/craftaro/skyblock/config/FileManager.java
index 2aed557e..e535fb99 100644
--- a/src/main/java/com/craftaro/skyblock/config/FileManager.java
+++ b/src/main/java/com/craftaro/skyblock/config/FileManager.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.config;
+import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.IslandWorld;
import com.google.common.io.ByteStreams;
@@ -93,17 +94,28 @@ public class FileManager {
if (fileName.equals("structures/default.structure")) {
configFile.delete();
- try {
- configFile.createNewFile();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- try (InputStream is = this.plugin.getResource(fileName); OutputStream os = Files.newOutputStream(configFile.toPath())) {
- if (is != null) {
- ByteStreams.copy(is, os);
+ if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_20_5)) {
+ //Copy default_1_20_5.structure instead of default.structure
+ try (InputStream is = this.plugin.getResource("structures/default_1_20_5.structure"); OutputStream os = Files.newOutputStream(configFile.toPath())) {
+ if (is != null) {
+ ByteStreams.copy(is, os);
+ }
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ } else {
+ try {
+ configFile.createNewFile();
+ } catch (IOException ex) {
+ ex.printStackTrace();
+ }
+ try (InputStream is = this.plugin.getResource(fileName); OutputStream os = Files.newOutputStream(configFile.toPath())) {
+ if (is != null) {
+ ByteStreams.copy(is, os);
+ }
+ } catch (IOException ex) {
+ ex.printStackTrace();
}
- } catch (IOException ex) {
- ex.printStackTrace();
}
continue;
}
diff --git a/src/main/java/com/craftaro/skyblock/generator/GeneratorManager.java b/src/main/java/com/craftaro/skyblock/generator/GeneratorManager.java
index 569b57a5..02b6c61b 100644
--- a/src/main/java/com/craftaro/skyblock/generator/GeneratorManager.java
+++ b/src/main/java/com/craftaro/skyblock/generator/GeneratorManager.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.generator;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XBlock;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -109,7 +110,7 @@ public class GeneratorManager {
@SuppressWarnings("deprecation")
private int getLiquidLevel(Block block) {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12) && block.getState().getBlockData() instanceof Levelled) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12) && block.getState().getBlockData() instanceof Levelled) {
Levelled levelled = (Levelled) block.getState().getBlockData();
return levelled.getLevel();
} else {
@@ -131,7 +132,7 @@ public class GeneratorManager {
this.plugin.getSoundManager().playSound(block.getLocation(), XSound.BLOCK_FIRE_EXTINGUISH, 1, 10);
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
XBlock.setType(block, materials);
} else {
ItemStack is = materials.parseItem();
diff --git a/src/main/java/com/craftaro/skyblock/gui/coop/GuiCoop.java b/src/main/java/com/craftaro/skyblock/gui/coop/GuiCoop.java
index b1d4c32d..7ee16d77 100644
--- a/src/main/java/com/craftaro/skyblock/gui/coop/GuiCoop.java
+++ b/src/main/java/com/craftaro/skyblock/gui/coop/GuiCoop.java
@@ -3,10 +3,9 @@ package com.craftaro.skyblock.gui.coop;
import com.craftaro.core.gui.AnvilGui;
import com.craftaro.core.gui.Gui;
import com.craftaro.core.gui.GuiUtils;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.TextUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
@@ -19,7 +18,6 @@ import com.craftaro.skyblock.sound.SoundManager;
import com.craftaro.skyblock.utils.player.OfflinePlayer;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -28,6 +26,7 @@ import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class GuiCoop extends Gui {
private final SkyBlock plugin;
@@ -155,7 +154,18 @@ public class GuiCoop extends Gui {
targetPlayerTexture = new String[]{null, null};
}
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+ ItemStack phead;
+ if (targetPlayerTexture.length >= 1 && targetPlayerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(targetPlayerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(uuid).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
ItemMeta pheadmeta = phead.getItemMeta();
if (pheadmeta != null) {
pheadmeta.setDisplayName(TextUtils.formatText(this.languageLoad.getString("Menu.Coop.Item.Coop.Displayname")
diff --git a/src/main/java/com/craftaro/skyblock/gui/wip/GuiBans.java b/src/main/java/com/craftaro/skyblock/gui/wip/GuiBans.java
index 432b8dd8..a4c43245 100644
--- a/src/main/java/com/craftaro/skyblock/gui/wip/GuiBans.java
+++ b/src/main/java/com/craftaro/skyblock/gui/wip/GuiBans.java
@@ -2,10 +2,9 @@ package com.craftaro.skyblock.gui.wip;
import com.craftaro.core.gui.Gui;
import com.craftaro.core.gui.GuiUtils;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.TextUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
@@ -15,7 +14,6 @@ import com.craftaro.skyblock.utils.player.OfflinePlayer;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
-import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
@@ -23,6 +21,7 @@ import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class GuiBans extends Gui {
private final PlayerDataManager playerDataManager;
@@ -119,7 +118,17 @@ public class GuiBans extends Gui {
}
}
- ItemStack is = SkullUtils.getSkull(targetPlayer.getUniqueId());
+ ItemStack is;
+ if (targetPlayerTexture.length >= 1 && targetPlayerTexture[0] != null) {
+ is = SkullItemCreator.byTextureValue(targetPlayerTexture[0]);
+ } else {
+ try {
+ is = SkullItemCreator.byUuid(uuid).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
ItemMeta im = is.getItemMeta();
if (im != null) {
im.setDisplayName(this.languageLoad.getString("Menu.Bans.Item.Ban.Displayname")
diff --git a/src/main/java/com/craftaro/skyblock/island/Island.java b/src/main/java/com/craftaro/skyblock/island/Island.java
index 0866d0ef..522f0d07 100644
--- a/src/main/java/com/craftaro/skyblock/island/Island.java
+++ b/src/main/java/com/craftaro/skyblock/island/Island.java
@@ -46,6 +46,7 @@ import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
@@ -60,6 +61,7 @@ public class Island {
private final List islandLocations = new ArrayList<>();
private final Map coopPlayers = new HashMap<>();
private final Set whitelistedPlayers = new HashSet<>();
+ private final Map> roleCache = new HashMap<>();
private UUID islandUUID;
private UUID ownerUUID;
@@ -203,13 +205,14 @@ public class Island {
for (BasicPermission permission : allPermissions) {
if (settingsDataConfig == null || settingsDataConfig.getFileConfiguration()
- .getString("Settings." + roleList.getFriendlyName().toUpperCase() + "." + permission.getName()) == null) {
+ .getString("Settings." + roleList.getFriendlyName().toUpperCase(Locale.US) + "." + permission.getName()) == null) {
+ //save default value if not exist
permissions.add(
new IslandPermission(permission, this.plugin.getSettings()
- .getBoolean("Settings." + roleList.getFriendlyName().toUpperCase() + "." + permission.getName(), true)));
+ .getBoolean("Settings." + roleList.getFriendlyName().toUpperCase(Locale.US) + "." + permission.getName(), permission.getDefaultValues().get(roleList))));
} else {
permissions.add(new IslandPermission(permission, settingsDataConfig.getFileConfiguration()
- .getBoolean("Settings." + roleList.getFriendlyName().toUpperCase() + "." + permission.getName(), true)));
+ .getBoolean("Settings." + roleList.getFriendlyName().toUpperCase(Locale.US) + "." + permission.getName(), true)));
}
}
@@ -597,6 +600,11 @@ public class Island {
}
public Set getRole(IslandRole role) {
+
+ if (roleCache.containsKey(role)) {
+ return new HashSet<>(roleCache.get(role)); // Return a copy to avoid external modification
+ }
+
Set islandRoles = new HashSet<>();
if (role == IslandRole.OWNER) {
@@ -613,6 +621,8 @@ public class Island {
}
}
+ roleCache.put(role, islandRoles);
+
return islandRoles;
}
@@ -671,6 +681,9 @@ public class Island {
getVisit().setMembers(getRole(IslandRole.MEMBER).size() + getRole(IslandRole.OPERATOR).size() + 1);
+ //Update role cache
+ roleCache.remove(role);
+
return true;
}
}
@@ -697,6 +710,9 @@ public class Island {
getVisit().setMembers(getRole(IslandRole.MEMBER).size() + getRole(IslandRole.OPERATOR).size() + 1);
+ //Update role cache
+ roleCache.remove(role);
+
return true;
}
}
@@ -918,7 +934,7 @@ public class Island {
for (Entry> entry : this.islandPermissions.entrySet()) {
for (IslandPermission permission : entry.getValue()) {
- configLoad.set("Settings." + entry.getKey() + "." + permission.getPermission().getName(), permission.getStatus());
+ configLoad.set("Settings." + entry.getKey().getFriendlyName().toUpperCase(Locale.US) + "." + permission.getPermission().getName(), permission.getStatus());
}
}
diff --git a/src/main/java/com/craftaro/skyblock/island/IslandLevel.java b/src/main/java/com/craftaro/skyblock/island/IslandLevel.java
index bd246231..6f74c01f 100644
--- a/src/main/java/com/craftaro/skyblock/island/IslandLevel.java
+++ b/src/main/java/com/craftaro/skyblock/island/IslandLevel.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.island;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -104,7 +105,7 @@ public class IslandLevel {
}
public long getMaterialPoints(String material) {
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (material.toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -216,7 +217,7 @@ public class IslandLevel {
}
public void setMaterialAmount(String material, long amount) {
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (material.toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -232,7 +233,7 @@ public class IslandLevel {
}
public long getMaterialAmount(String material) {
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (material.toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -244,7 +245,7 @@ public class IslandLevel {
}
public void removeMaterial(String material) {
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (material.toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
diff --git a/src/main/java/com/craftaro/skyblock/island/IslandManager.java b/src/main/java/com/craftaro/skyblock/island/IslandManager.java
index 37c01ed9..189363fd 100644
--- a/src/main/java/com/craftaro/skyblock/island/IslandManager.java
+++ b/src/main/java/com/craftaro/skyblock/island/IslandManager.java
@@ -5,6 +5,7 @@ import com.bekvon.bukkit.residence.containers.Flags;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import com.craftaro.core.compatibility.CompatibleBiome;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.nms.Nms;
import com.craftaro.skyblock.SkyBlock;
@@ -1502,7 +1503,7 @@ public class IslandManager {
updateFlight(player);
if (world == IslandWorld.NETHER) {
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
return;
}
}
@@ -1665,7 +1666,7 @@ public class IslandManager {
double increment = island.getSize() % 2 != 0 ? 0.5d : 0.0d;
for (IslandWorld worldList : IslandWorld.getIslandWorlds()) {
- if (worldList != IslandWorld.NETHER || ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (worldList != IslandWorld.NETHER || MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
Bukkit.getScheduler().runTask(this.plugin, () -> {
for (Player all : getPlayersAtIsland(island)) {
Nms.getImplementations().getWorldBorder().send(all, island.getBorderColor(), island.getSize(), island.getLocation(worldManager.getIslandWorld(all.getWorld()), IslandEnvironment.ISLAND).clone().add(increment, 0, increment));
@@ -1677,7 +1678,7 @@ public class IslandManager {
}
} else {
for (IslandWorld worldList : IslandWorld.getIslandWorlds()) {
- if (worldList != IslandWorld.NETHER || ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (worldList != IslandWorld.NETHER || MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
Bukkit.getScheduler().runTask(this.plugin, () -> {
for (Player all : getPlayersAtIsland(island)) {
Nms.getImplementations().getWorldBorder().send(all, null, 1.4999992E7D, new Location(all.getWorld(), 0, 0, 0));
diff --git a/src/main/java/com/craftaro/skyblock/levelling/IslandLevelManager.java b/src/main/java/com/craftaro/skyblock/levelling/IslandLevelManager.java
index 16be796a..fe1d1a9e 100644
--- a/src/main/java/com/craftaro/skyblock/levelling/IslandLevelManager.java
+++ b/src/main/java/com/craftaro/skyblock/levelling/IslandLevelManager.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.levelling;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -260,7 +261,7 @@ public final class IslandLevelManager {
// placed.
// This shouldn't cause any issues besides the task number being increased
// insanely fast.
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
Bukkit.getScheduler().runTask(this.plugin, () -> {
updateLevelLocation(island, location);
});
@@ -272,7 +273,7 @@ public final class IslandLevelManager {
private void updateLevelLocation(Island island, Location location) {
Block block = location.getBlock();
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (block.getType().toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
diff --git a/src/main/java/com/craftaro/skyblock/limit/impl/BlockLimitation.java b/src/main/java/com/craftaro/skyblock/limit/impl/BlockLimitation.java
index e9de9074..fd107bf0 100644
--- a/src/main/java/com/craftaro/skyblock/limit/impl/BlockLimitation.java
+++ b/src/main/java/com/craftaro/skyblock/limit/impl/BlockLimitation.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.limit.impl;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -73,7 +74,7 @@ public final class BlockLimitation extends EnumLimitation {
}
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (type.toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -111,7 +112,7 @@ public final class BlockLimitation extends EnumLimitation {
totalPlaced = island.getLevel().getMaterials().entrySet().stream().filter(x -> x.getKey().contains("SPAWNER")).mapToLong(Map.Entry::getValue).sum();
} else {
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (type.toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
diff --git a/src/main/java/com/craftaro/skyblock/listeners/BlockListeners.java b/src/main/java/com/craftaro/skyblock/listeners/BlockListeners.java
index 6da81453..97e93152 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/BlockListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/BlockListeners.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.listeners;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.hooks.LogManager;
import com.craftaro.third_party.com.cryptomorin.xseries.XBlock;
@@ -115,7 +116,7 @@ public class BlockListeners implements Listener {
Stackable stackable = stackableManager.getStack(block.getLocation(), CompatibleMaterial.getMaterial(block.getType()).get());
if (stackable != null) {
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (block.getType().toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -194,7 +195,7 @@ public class BlockListeners implements Listener {
}
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (block.getType().toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -271,7 +272,7 @@ public class BlockListeners implements Listener {
return;
}
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_8)) {
if (event instanceof BlockMultiPlaceEvent) {
for (BlockState blockState : ((BlockMultiPlaceEvent) event).getReplacedBlockStates()) {
if (!island.equals(islandManager.getIslandAtLocation(blockState.getLocation()))) {
@@ -334,13 +335,23 @@ public class BlockListeners implements Listener {
isObstructing = true;
}
- // Specific check for beds
- if (!isObstructing && event.getBlock().getState().getData() instanceof org.bukkit.material.Bed) {
+ // Specific check for beds using getBlockData() for versions 1.13 and above
+ if (!isObstructing && event.getBlock().getBlockData() instanceof org.bukkit.block.data.type.Bed && MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
+ org.bukkit.block.data.type.Bed bedData = (org.bukkit.block.data.type.Bed) event.getBlock().getBlockData();
+ BlockFace bedDirection = bedData.getFacing();
+ org.bukkit.block.Block bedBlock = block.getRelative(bedDirection);
+ if (LocationUtil.isLocationAffectingIslandSpawn(bedBlock.getLocation(), island, world)) {
+ isObstructing = true;
+ }
+ } // Specific check for beds using getBlockData() for versions 1.12 and below
+ else if (MajorServerVersion.isServerVersionAtOrBelow(MajorServerVersion.V1_12)) {
+ if (!isObstructing && event.getBlock().getState().getData() instanceof org.bukkit.material.Bed){
BlockFace bedDirection = ((org.bukkit.material.Bed) event.getBlock().getState().getData()).getFacing();
org.bukkit.block.Block bedBlock = block.getRelative(bedDirection);
if (LocationUtil.isLocationAffectingIslandSpawn(bedBlock.getLocation(), island, world)) {
isObstructing = true;
}
+ }
}
if (isObstructing) {
@@ -360,7 +371,7 @@ public class BlockListeners implements Listener {
if (limits.isBlockLimitExceeded(block, limit) && !XMaterial.ENDER_EYE.isSimilar(item)) {
XMaterial material = null;
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (block.getType().toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -391,7 +402,7 @@ public class BlockListeners implements Listener {
// Not util used 2 islandLevelManager if condition is true
// Sponge level dupe fix
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13) &&
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13) &&
block.getType() == XMaterial.SPONGE.parseMaterial()) {
Bukkit.getScheduler().runTask(this.plugin, () -> {
if (blockLoc.getBlock().getType() == XMaterial.WET_SPONGE.parseMaterial()) {
@@ -454,7 +465,7 @@ public class BlockListeners implements Listener {
for (Entity ent : entities) {
boolean witherSkeleton;
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
witherSkeleton = ent.getType().equals(EntityType.WITHER_SKELETON);
} else {
witherSkeleton = ent instanceof Skeleton && ((Skeleton) ent).getSkeletonType().equals(Skeleton.SkeletonType.WITHER);
@@ -464,7 +475,7 @@ public class BlockListeners implements Listener {
XSound.BLOCK_FIRE_EXTINGUISH.play(block.getLocation());
event.getToBlock().getWorld().playEffect(block.getLocation(), Effect.SMOKE, 1);
} else {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) {
if (((ent instanceof Piglin || ent instanceof Hoglin) || ent instanceof Strider) || ent instanceof Zoglin) {
event.setCancelled(true);
XSound.BLOCK_FIRE_EXTINGUISH.play(block.getLocation());
@@ -488,7 +499,7 @@ public class BlockListeners implements Listener {
return;
}
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_12)) {
Bukkit.getScheduler().runTaskLater(this.plugin, () -> {
handleGeneration(block, island, event.getToBlock().getState());
}, 1L);
@@ -719,7 +730,7 @@ public class BlockListeners implements Listener {
IslandManager islandManager = this.plugin.getIslandManager();
// PortalCreateEvent.getBlocks() changed from ArrayList to
// ArrayList in 1.14.1
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_13)) {
List blocks = event.getBlocks(); // TODO 1.8
if (event.getBlocks().isEmpty()) {
return;
@@ -828,7 +839,7 @@ public class BlockListeners implements Listener {
if (CompatibleMaterial.isAir(destmaterial)) {
return;
}
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
switch (event.getToBlock().getType().toString().toUpperCase()) {
case "DIODE_BLOCK_OFF":
case "DIODE_BLOCK_ON":
@@ -868,7 +879,7 @@ public class BlockListeners implements Listener {
XMaterial material = CompatibleMaterial.getMaterial(block.getType()).orElse(null);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_12)
&& material != XMaterial.WATER
&& material != XMaterial.LAVA) {
return false;
@@ -952,7 +963,7 @@ public class BlockListeners implements Listener {
BlockState genState = generatorManager.generateBlock(generator, block);
block.setType(genState.getType());
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
BlockState tempState = block.getState();
tempState.setData(genState.getData());
tempState.update(true, true);
@@ -989,7 +1000,7 @@ public class BlockListeners implements Listener {
BlockState genState = generatorManager.generateBlock(generator, block);
state.setType(genState.getType());
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
state.setData(genState.getData());
}
islandLevelManager.updateLevel(island, genState.getLocation());
diff --git a/src/main/java/com/craftaro/skyblock/listeners/EntityListeners.java b/src/main/java/com/craftaro/skyblock/listeners/EntityListeners.java
index 7aeaa741..911ada63 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/EntityListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/EntityListeners.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.listeners;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XBlock;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -242,7 +243,7 @@ public class EntityListeners implements Listener {
return;
}
- if (ServerVersion.isServerVersion(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersion(MajorServerVersion.V1_8)) {
return;
}
@@ -371,7 +372,7 @@ public class EntityListeners implements Listener {
&& configLoad.getBoolean("Island.Spawn.Protection")) {
FallingBlock fallingBlock = (FallingBlock) event.getEntity();
if (fallingBlock.getDropItem()) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
fallingBlock.getWorld().dropItemNaturally(fallingBlock.getLocation(),
new ItemStack(fallingBlock.getBlockData().getMaterial(), 1));
} else {
@@ -532,25 +533,25 @@ public class EntityListeners implements Listener {
return;
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_10)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_10)) {
if (livingEntity instanceof Donkey || livingEntity instanceof Mule || livingEntity instanceof ElderGuardian) {
return;
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
if (livingEntity instanceof Evoker) {
return;
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_12)) {
if (livingEntity instanceof Llama) {
return;
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_14)) {
if (livingEntity instanceof Ravager || livingEntity instanceof Illager) {
return;
}
@@ -577,19 +578,19 @@ public class EntityListeners implements Listener {
if (upgrades != null && !upgrades.isEmpty() && upgrades.get(0).isEnabled() && island.isUpgrade(Upgrade.Type.DROPS)) {
Set dontMultiply = new HashSet<>();
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_8)) {
EntityEquipment equipment = livingEntity.getEquipment();
if (equipment != null) {
for (ItemStack item : event.getDrops()) {
- if (item.equals(equipment.getHelmet()) || item.equals(equipment.getChestplate())
- || item.equals(equipment.getLeggings()) || item.equals(equipment.getBoots())
- || item.equals(equipment.getItemInMainHand()) || item.equals(equipment.getItemInOffHand())) {
+ if (item.isSimilar(equipment.getHelmet()) || item.isSimilar(equipment.getChestplate())
+ || item.isSimilar(equipment.getLeggings()) || item.isSimilar(equipment.getBoots())
+ || item.isSimilar(equipment.getItemInMainHand()) || item.isSimilar(equipment.getItemInOffHand())) {
dontMultiply.add(item);
}
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) {
if (livingEntity instanceof Steerable) {
Steerable steerable = (Steerable) livingEntity;
if (steerable.hasSaddle()) {
@@ -606,12 +607,18 @@ public class EntityListeners implements Listener {
}
}
- for (ItemStack is : event.getDrops()) {
- for (ItemStack is2 : dontMultiply) {
- if (!is2.isSimilar(is)) {
- livingEntity.getWorld().dropItemNaturally(livingEntity.getLocation(), is);
+ // Only drop items that are not in the dontMultiply set
+ for (ItemStack item : event.getDrops()) {
+ boolean shouldDrop = true;
+ for (ItemStack dontMultiplyItem : dontMultiply) {
+ if (item.isSimilar(dontMultiplyItem)) {
+ shouldDrop = false;
+ break;
}
}
+ if (shouldDrop) {
+ livingEntity.getWorld().dropItemNaturally(livingEntity.getLocation(), item);
+ }
}
}
}
@@ -701,7 +708,7 @@ public class EntityListeners implements Listener {
return;
}
Bukkit.getScheduler().scheduleSyncDelayedTask(this.plugin, () -> {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) { // getPassengers() was added in 1.11
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) { // getPassengers() was added in 1.11
for (org.bukkit.entity.Entity passenger : entity.getPassengers()) {
passenger.remove();
}
diff --git a/src/main/java/com/craftaro/skyblock/listeners/FallBreakListeners.java b/src/main/java/com/craftaro/skyblock/listeners/FallBreakListeners.java
index aed7b78e..fe6e5c7c 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/FallBreakListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/FallBreakListeners.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.listeners;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -46,7 +47,7 @@ public class FallBreakListeners implements Listener {
if (island != null) {
Optional material = Optional.empty();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
material = CompatibleMaterial.getMaterial(ent.getBlockData().getMaterial());
} else {
try {
diff --git a/src/main/java/com/craftaro/skyblock/listeners/GrowListeners.java b/src/main/java/com/craftaro/skyblock/listeners/GrowListeners.java
index e79380e3..413c5b47 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/GrowListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/GrowListeners.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.listeners;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -105,7 +106,7 @@ public class GrowListeners implements Listener {
return;
}
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
try {
Object blockData = block.getClass().getMethod("getBlockData").invoke(block);
if (blockData instanceof org.bukkit.block.data.Ageable) {
diff --git a/src/main/java/com/craftaro/skyblock/listeners/InteractListeners.java b/src/main/java/com/craftaro/skyblock/listeners/InteractListeners.java
index 3b4185e4..1bc84464 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/InteractListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/InteractListeners.java
@@ -170,13 +170,13 @@ public class InteractListeners implements Listener {
return;
}
- Optional material = block == null ? Optional.empty() : CompatibleMaterial.getMaterial(block.getType());
-
// Check permissions.
if (!this.plugin.getPermissionManager().processPermission(event, player, island)) {
return;
}
+ Optional material = block == null ? Optional.empty() : CompatibleMaterial.getMaterial(block.getType());
+
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
final Optional blockType = CompatibleMaterial.getMaterial(event.getClickedBlock().getType());
final XMaterial heldType;
diff --git a/src/main/java/com/craftaro/skyblock/listeners/MoveListeners.java b/src/main/java/com/craftaro/skyblock/listeners/MoveListeners.java
index 6d6dd1af..c02a2e6a 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/MoveListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/MoveListeners.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.listeners;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import com.craftaro.skyblock.SkyBlock;
@@ -124,7 +125,7 @@ public class MoveListeners implements Listener {
player.setLevel(0);
player.setExp(0.0F);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
player.setHealth(Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getValue());
} else {
player.setHealth(player.getMaxHealth());
diff --git a/src/main/java/com/craftaro/skyblock/listeners/SpawnerListeners.java b/src/main/java/com/craftaro/skyblock/listeners/SpawnerListeners.java
index 0d2636b0..db5832bb 100644
--- a/src/main/java/com/craftaro/skyblock/listeners/SpawnerListeners.java
+++ b/src/main/java/com/craftaro/skyblock/listeners/SpawnerListeners.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.listeners;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
@@ -41,7 +42,7 @@ public class SpawnerListeners implements Listener {
if (upgrades != null && !upgrades.isEmpty() && upgrades.get(0).isEnabled()
&& island.isUpgrade(Upgrade.Type.SPAWNER)) {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
if (spawner.getDelay() == 20) {
spawner.setDelay(10);
}
diff --git a/src/main/java/com/craftaro/skyblock/localization/type/impl/EnumLocalization.java b/src/main/java/com/craftaro/skyblock/localization/type/impl/EnumLocalization.java
index a8c7d54b..cb4b4896 100644
--- a/src/main/java/com/craftaro/skyblock/localization/type/impl/EnumLocalization.java
+++ b/src/main/java/com/craftaro/skyblock/localization/type/impl/EnumLocalization.java
@@ -4,6 +4,7 @@ import com.craftaro.skyblock.localization.type.Localization;
import org.bukkit.configuration.ConfigurationSection;
import java.util.EnumMap;
+import java.util.Locale;
import java.util.Map;
public class EnumLocalization> extends Localization {
@@ -37,6 +38,6 @@ public class EnumLocalization> extends Localization {
}
protected T parseEnum(String input) {
- return Enum.valueOf(getType(), input.toUpperCase());
+ return Enum.valueOf(getType(), input.toUpperCase(Locale.US));
}
}
diff --git a/src/main/java/com/craftaro/skyblock/menus/Bans.java b/src/main/java/com/craftaro/skyblock/menus/Bans.java
index 97c67daf..2de3a9ed 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Bans.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Bans.java
@@ -1,10 +1,9 @@
package com.craftaro.skyblock.menus;
import com.craftaro.core.gui.AnvilGui;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
import com.craftaro.skyblock.island.IslandManager;
@@ -27,6 +26,7 @@ import org.bukkit.inventory.meta.SkullMeta;
import java.util.Set;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class Bans {
private static Bans instance;
@@ -165,23 +165,13 @@ public class Bans {
int playerMenuPage = playerData.getPage(MenuType.BANS), nextEndIndex = islandBans.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Bans.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Bans.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -218,7 +208,18 @@ public class Bans {
targetPlayerTexture = new String[]{null, null};
}
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+ ItemStack phead;
+ if (targetPlayerTexture.length >= 1 && targetPlayerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(targetPlayerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(targetPlayerUUID).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(
nInv.createItem(phead,
plugin.formatText(
diff --git a/src/main/java/com/craftaro/skyblock/menus/Information.java b/src/main/java/com/craftaro/skyblock/menus/Information.java
index a2dc1107..5960133c 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Information.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Information.java
@@ -1,9 +1,8 @@
package com.craftaro.skyblock.menus;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
import com.craftaro.skyblock.island.IslandManager;
@@ -24,12 +23,12 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class Information {
private static Information instance;
@@ -343,24 +342,14 @@ public class Information {
nextEndIndex = displayedMembers.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Information.Members.Item.Previous.Displayname"), null, null,
null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Information.Members.Item.Next.Displayname"), null, null,
null, null), 7);
@@ -398,7 +387,18 @@ public class Information {
} else {
islandRole = configLoad.getString("Menu.Information.Members.Item.Member.Word.Owner");
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+ ItemStack phead;
+ if (playerTexture.length >= 1 && playerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(playerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(playerUUID).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(
nInv.createItem(phead,
configLoad.getString("Menu.Information.Members.Item.Member.Displayname")
@@ -494,24 +494,14 @@ public class Information {
nextEndIndex = displayedVisitors.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Information.Visitors.Item.Previous.Displayname"), null, null,
null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Information.Visitors.Item.Next.Displayname"), null, null,
null, null), 7);
@@ -541,7 +531,19 @@ public class Information {
playerData = plugin.getPlayerDataManager().getPlayerData(targetPlayer.getUniqueId());
playerTexture = playerData.getTexture();
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+
+ ItemStack phead;
+ if (playerTexture.length >= 1 && playerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(playerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(playerUUID).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(
nInv.createItem(phead,
configLoad.getString("Menu.Information.Visitors.Item.Visitor.Displayname")
diff --git a/src/main/java/com/craftaro/skyblock/menus/Leaderboard.java b/src/main/java/com/craftaro/skyblock/menus/Leaderboard.java
index a325d59a..f020e2bf 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Leaderboard.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Leaderboard.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.menus;
import com.craftaro.core.utils.NumberUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.placeholder.Placeholder;
import com.craftaro.skyblock.playerdata.PlayerDataManager;
@@ -8,7 +9,6 @@ import com.craftaro.skyblock.sound.SoundManager;
import com.craftaro.skyblock.utils.item.nInventoryUtil;
import com.craftaro.skyblock.utils.player.OfflinePlayer;
import com.craftaro.skyblock.visit.Visit;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import org.bukkit.Bukkit;
@@ -18,27 +18,14 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.ExecutionException;
public class Leaderboard {
private static Leaderboard instance;
- private static final String[] steveSkinTexture = new String[]{
- "otpbxDm9B+opW7jEzZF8BVDeZSqaqdF0dyLlnlyMh7Q5ysJFDL48/9J/IOHp8JqNm1oarmVdvxrroy9dlNI2Mz4BVuJM2pcCOJwk2h+aZ4dzNZGxst+MYNPSw+i4sMoYu7OV07UVHrQffolFF7MiaBUst1hFwM07IpTE6UtIQz4rqWisXe9Iz5+ooqX4wj0IB3dPntsh6u5nVlL8acWCBDAW4YqcPt2Y4CKK+KtskjzusjqGAdEO+4lRcW1S0ldo2RNtUHEzZADWQcADjg9KKiKq9QIpIpYURIoIAA+pDGb5Q8L5O6CGI+i1+FxqXbgdBvcm1EG0OPdw9WpSqAxGGeXSwlzjILvlvBzYbd6gnHFBhFO+X7iwRJYNd+qQakjUa6ZwR8NbkpbN3ABb9+6YqVkabaEmgfky3HdORE+bTp/AT6LHqEMQo0xdNkvF9gtFci7RWhFwuTLDvQ1esby1IhlgT+X32CPuVHuxEvPCjN7+lmRz2OyOZ4REo2tAIFUKakqu3nZ0NcF98b87wAdA9B9Qyd2H/rEtUToQhpBjP732Sov6TlJkb8echGYiLL5bu/Q7hum72y4+j2GNnuRiOJtJidPgDqrYMg81GfenfPyS6Ynw6KhdEhnwmJ1FJlJhYvXZyqZwLAV1c26DNYkrTMcFcv3VXmcd5/2Zn9FnZtw=",
- "ewogICJ0aW1lc3RhbXAiIDogMTYyMTcxNTMxMjI5MCwKICAicHJvZmlsZUlkIiA6ICJiNTM5NTkyMjMwY2I0MmE0OWY5YTRlYmYxNmRlOTYwYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJtYXJpYW5hZmFnIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzFhNGFmNzE4NDU1ZDRhYWI1MjhlN2E2MWY4NmZhMjVlNmEzNjlkMTc2OGRjYjEzZjdkZjMxOWE3MTNlYjgxMGIiCiAgICB9CiAgfQp9"
- };
- private static final String[] alexSkinTexture = new String[]{
- "rZvLQoZsgLYaoKqEuASopYAs7IAlZlsGkwagoM8ZX38cP9kalseZrWY5OHZVfoiftdQJ+lGOzkiFfyx6kNJDTZniLrnRa8sd3X6D65ZihT1sOm/RInCwxpS1K0zGCM2h9ErkWswfwaviIf7hJtrwk8/zL0bfzDk2IgX/IBvIZpVoYTfmQsVY9jgSwORrS9ObePGIfFgmThMoZnCYWQMVpS2+yTFA2wnw9hmisQK9UWBU+iBZv55bMmkMcyEuXw1w14DaEu+/M0UGD91LU4GmJLPA9T4GCuIV8GxOcraSVIajki1cMlOBQwIaibB2NE6KAwq1Zh6NnsNYucy6qFM+136lXfBchQ1Nx4FDRZQgt8VRqTMy/OQFpr2nTbWWbRU4gRFpKC3R0518DqUH0Qm612kPWniKku/QzUUBSe1PSVljBaZCyyRx0OB1a1/8MexboKRnPXuTDnmPa9UPfuH4VO0q+qYkjV2KUzP6e5vIP5aQ6USPrMie7MmAHFJzwAMIbLjgkTVx91GWtYqg/t7qBlvrdBRLIPPsy/DSOqa+2+4hABouVCPZrBMCMLzstPPQoqZAyiCqcKb2HqWSU0h9Bhx19yoIcbHCeI3zsQs8PqIBjUL4mO6VQT4lzHy0e3M61Xsdd8S1GtsakSetTvEtMdUwCEDfBA5PRRTLOVYTY+g=",
- "ewogICJ0aW1lc3RhbXAiIDogMTYyMTcxNTQ5ODM0MywKICAicHJvZmlsZUlkIiA6ICIxYTc1ZTNiYmI1NTk0MTc2OTVjMmY4NTY1YzNlMDAzZCIsCiAgInByb2ZpbGVOYW1lIiA6ICJUZXJvZmFyIiwKICAic2lnbmF0dXJlUmVxdWlyZWQiIDogdHJ1ZSwKICAidGV4dHVyZXMiIDogewogICAgIlNLSU4iIDogewogICAgICAidXJsIiA6ICJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzNiNjBhMWY2ZDU2MmY1MmFhZWJiZjE0MzRmMWRlMTQ3OTMzYTNhZmZlMGU3NjRmYTQ5ZWEwNTc1MzY2MjNjZDMiLAogICAgICAibWV0YWRhdGEiIDogewogICAgICAgICJtb2RlbCIgOiAic2xpbSIKICAgICAgfQogICAgfQogIH0KfQ=="
- };
- private static final String[] questionMarkSkinTexture = new String[]{
- "gi+wnQt/y4Z6E9rn65iDWmt8vUOM2WXY66XvtydqDJZTzwgFrjVcx2c5YwdzvtOIRtiX2nZt4n2uWesUFKb59xS24YWbxCDXnalHhCpPFcIP58SQbCm9AYp3UPzkcRNWzuV4BddrS608QQZGyIFOUaLPOPasGITZu51VLcOKcTyFOCKu1QE2yRo1orTH8bWfdpE769BB/VYGdny0qJtm1amc12wGiVifMJRutZmYo2ZdA0APhIJVaNsPppNESVcbeBCvk60l4QK43C/p98/QEe5U6UJ6Z6N01pBQcswubMu8lCuPLasep+vX3v2K+Ui9jnTQNreGNIZPWVjf6V1GH4xMbbUVQJsoPdcaXG855VdzyoW+kyHdWYEojSn0qAY/moH6JCLnx6PLCv9mITSvOIUHq8ITet0M7Z9KALY5s6eg6VdA8TvClRy2TTm9tIRt//TJo5JxBoTYujawGNSR7ryODj2UEDQ2xOyWSagxAXZpispdrO5jHxRmBZUwX9vxnAp+CNWxifpu9sINJTlqYsT/KlGOJQC483gv5B6Nm5VBB1DRFmQkohzO6Wc2eDixgEbaU795GlLxrNaFfNjVH6Bwr1e7df2H3nE0P0bexs4wYdWplijn4gPyHwjT2LDBPGFQK3Vo2SlaXfPYbkIHX21c9qaz3eWHpLEXUBQfnWc=",
- "eyJ0aW1lc3RhbXAiOjE1MzE3MTcxNjY3MDAsInByb2ZpbGVJZCI6IjYwNmUyZmYwZWQ3NzQ4NDI5ZDZjZTFkMzMyMWM3ODM4IiwicHJvZmlsZU5hbWUiOiJNSEZfUXVlc3Rpb24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2QzNGUwNjNjYWZiNDY3YTVjOGRlNDNlYzc4NjE5Mzk5ZjM2OWY0YTUyNDM0ZGE4MDE3YTk4M2NkZDkyNTE2YTAifX19"
- };
-
public static Leaderboard getInstance() {
if (instance == null) {
instance = new Leaderboard();
@@ -301,15 +288,18 @@ public class Leaderboard {
}
}
- if (playerTexture[0] == null || playerTexture[1] == null) {
- if ((visit.getOwnerUUID().hashCode() & 1) != 0) {
- playerTexture = alexSkinTexture;
- } else {
- playerTexture = steveSkinTexture;
+
+ ItemStack phead;
+ if (playerTexture.length >= 1 && playerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(playerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(visit.getOwnerUUID()).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
}
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
nInv.addItem(
nInv.createItem(phead,
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Island.Displayname")
@@ -332,10 +322,7 @@ public class Leaderboard {
for (int i = 0; i < itemSlots.length; i++) {
if (!nInv.getItems().containsKey(itemSlots[i])) {
- ItemStack qhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta qskullMeta = (SkullMeta) qhead.getItemMeta();
- SkullUtils.setSkullBase64(qskullMeta,questionMarkSkinTexture[1],questionMarkSkinTexture[0]);
- qhead.setItemMeta(qskullMeta);
+ ItemStack qhead = SkullItemCreator.byTextureUrlHash("d34e063cafb467a5c8de43ec78619399f369f4a52434da8017a983cdd92516a0");
nInv.addItem(nInv.createItem(qhead,
configLoad.getString("Menu.Leaderboard.Leaderboard.Item.Empty.Displayname")
.replace("%position", "" + (i + 1)),
diff --git a/src/main/java/com/craftaro/skyblock/menus/Levelling.java b/src/main/java/com/craftaro/skyblock/menus/Levelling.java
index 4bca397f..5a7b69ad 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Levelling.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Levelling.java
@@ -1,8 +1,9 @@
package com.craftaro.skyblock.menus;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import com.craftaro.core.utils.ItemUtils;
@@ -32,7 +33,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.util.LinkedHashMap;
import java.util.List;
@@ -190,6 +190,7 @@ public class Levelling {
long value = testIslandMaterials.get(materialName);
Optional materials = CompatibleMaterial.getMaterial(materialName);
+
if (!materials.isPresent()) {
continue;
}
@@ -225,23 +226,13 @@ public class Levelling {
nInv.addItem(nInv.createItem(XMaterial.BLACK_STAINED_GLASS_PANE.parseItem(), configLoad.getString("Menu.Levelling.Item.Barrier.Displayname"), null, null, null, null), 9, 10, 11, 12, 13, 14, 15, 16, 17);
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Levelling.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Levelling.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -289,7 +280,7 @@ public class Levelling {
String name = plugin.getLocalizationManager().getLocalizationFor(XMaterial.class).getLocale(materials.get());
- if (materials.get() == XMaterial.FARMLAND && ServerVersion.isServerVersionBelow(ServerVersion.V1_9)) {
+ if (materials.get() == XMaterial.FARMLAND && MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_9)) {
materials = Optional.of(XMaterial.DIRT);
}
diff --git a/src/main/java/com/craftaro/skyblock/menus/Members.java b/src/main/java/com/craftaro/skyblock/menus/Members.java
index 35eabc56..fd142f4a 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Members.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Members.java
@@ -1,9 +1,6 @@
package com.craftaro.skyblock.menus;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
-import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
-import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.config.FileManager;
import com.craftaro.skyblock.island.Island;
@@ -18,6 +15,8 @@ import com.craftaro.skyblock.utils.NumberUtil;
import com.craftaro.skyblock.utils.StringUtil;
import com.craftaro.skyblock.utils.item.nInventoryUtil;
import com.craftaro.skyblock.utils.player.OfflinePlayer;
+import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
+import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@@ -26,7 +25,6 @@ import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.io.File;
import java.text.ParseException;
@@ -38,6 +36,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class Members {
private static Members instance;
@@ -353,23 +352,13 @@ public class Members {
9, 10, 11, 12, 13, 14, 15, 16, 17);
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Members.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Members.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -572,7 +561,12 @@ public class Members {
}
}
- ItemStack phead = SkullUtils.getSkull(Bukkit.getPlayerUniqueId(playerName));
+ ItemStack phead;
+ try {
+ phead = SkullItemCreator.byUuid(playerUUID).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
nInv.addItem(
nInv.createItem(phead,
configLoad.getString("Menu.Members.Item.Member.Displayname").replace("%player",
diff --git a/src/main/java/com/craftaro/skyblock/menus/Ownership.java b/src/main/java/com/craftaro/skyblock/menus/Ownership.java
index 9dc7464f..e8cdf3e6 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Ownership.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Ownership.java
@@ -1,10 +1,9 @@
package com.craftaro.skyblock.menus;
import com.craftaro.core.gui.AnvilGui;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
import com.craftaro.skyblock.island.IslandManager;
@@ -27,6 +26,7 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class Ownership {
private static Ownership instance;
@@ -215,7 +215,7 @@ public class Ownership {
String originalOwnerName, ownershipPassword = island.getPassword();
String[] playerTexture;
- org.bukkit.OfflinePlayer targetPlayer = Bukkit.getServer().getPlayer(island.getOriginalOwnerUUID());
+ org.bukkit.OfflinePlayer targetPlayer = Bukkit.getServer().getPlayer(originalOwnerUUID);
if (targetPlayer == null) {
OfflinePlayer offlinePlayer = new OfflinePlayer(originalOwnerUUID);
@@ -225,7 +225,19 @@ public class Ownership {
originalOwnerName = targetPlayer.getName();
playerTexture = playerDataManager.getPlayerData(targetPlayer.getUniqueId()).getTexture();
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+
+ ItemStack phead;
+ if (playerTexture.length >= 1 && playerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(playerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(originalOwnerUUID).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(nInv.createItem(XMaterial.OAK_FENCE_GATE.parseItem(),
configLoad.getString("Menu.Ownership.Item.Exit.Displayname"), null, null, null, null), 0);
nInv.addItem(nInv.createItem(phead,
diff --git a/src/main/java/com/craftaro/skyblock/menus/Upgrade.java b/src/main/java/com/craftaro/skyblock/menus/Upgrade.java
index ced41e58..1e5b2741 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Upgrade.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Upgrade.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.menus;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.hooks.economies.Economy;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -495,10 +496,10 @@ public class Upgrade {
if (upgrades != null && !upgrades.isEmpty() && upgrades.get(0).isEnabled()) {
com.craftaro.skyblock.upgrade.Upgrade upgrade = upgrades.get(0);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
PotionMeta pm = (PotionMeta) potion.getItemMeta();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_10)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_10)) {
pm.setBasePotionData(new PotionData(PotionType.SPEED));
} else {
pm.addCustomEffect(new PotionEffect(PotionEffectType.SPEED, 1, 0), true);
@@ -547,11 +548,11 @@ public class Upgrade {
if (upgrades != null && !upgrades.isEmpty() && upgrades.get(0).isEnabled()) {
com.craftaro.skyblock.upgrade.Upgrade upgrade = upgrades.get(0);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_8)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_8)) {
potion = new ItemStack(Material.POTION);
PotionMeta pm = (PotionMeta) potion.getItemMeta();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
pm.setBasePotionData(new PotionData(PotionType.JUMP));
} else {
pm.addCustomEffect(new PotionEffect(PotionEffectType.JUMP, 1, 0), true);
diff --git a/src/main/java/com/craftaro/skyblock/menus/Visit.java b/src/main/java/com/craftaro/skyblock/menus/Visit.java
index 7d735acf..d7a516dd 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Visit.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Visit.java
@@ -1,9 +1,8 @@
package com.craftaro.skyblock.menus;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.NumberUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.api.event.player.PlayerVoteEvent;
@@ -28,12 +27,12 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.UUID;
+import java.util.concurrent.ExecutionException;
public class Visit {
private static Visit instance;
@@ -355,23 +354,13 @@ public class Visit {
9, 10, 11, 12, 13, 14, 15, 16, 17);
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Visit.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Visit.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -476,7 +465,19 @@ public class Visit {
"Menu.Visit.Item.Island.Vote.Enabled.Signature.Disabled.Visitor.Lore"));
}
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+
+ ItemStack phead;
+ if (targetPlayerTexture.length >= 1 && targetPlayerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(targetPlayerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(visit.getOwnerUUID()).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(nInv.createItem(phead,
configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player",
targetPlayerName),
@@ -512,7 +513,18 @@ public class Visit {
itemLore.addAll(configLoad
.getStringList("Menu.Visit.Item.Island.Vote.Disabled.Signature.Disabled.Lore"));
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+ ItemStack phead;
+ if (targetPlayerTexture.length >= 1 && targetPlayerTexture[0] != null) {
+ phead = SkullItemCreator.byTextureValue(targetPlayerTexture[0]);
+ } else {
+ try {
+ phead = SkullItemCreator.byUuid(visit.getOwnerUUID()).get();
+ } catch (InterruptedException | ExecutionException ex) {
+ throw new RuntimeException(ex);
+ }
+ }
+
nInv.addItem(nInv.createItem(phead,
configLoad.getString("Menu.Visit.Item.Island.Displayname").replace("%player",
targetPlayerName),
diff --git a/src/main/java/com/craftaro/skyblock/menus/Visitors.java b/src/main/java/com/craftaro/skyblock/menus/Visitors.java
index ff5a8d71..1427ff05 100644
--- a/src/main/java/com/craftaro/skyblock/menus/Visitors.java
+++ b/src/main/java/com/craftaro/skyblock/menus/Visitors.java
@@ -1,9 +1,8 @@
package com.craftaro.skyblock.menus;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.Island;
import com.craftaro.skyblock.island.IslandManager;
@@ -18,12 +17,10 @@ import com.craftaro.skyblock.utils.item.nInventoryUtil;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
-import org.bukkit.OfflinePlayer;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.ClickType;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.meta.SkullMeta;
import java.util.ArrayList;
import java.util.List;
@@ -189,23 +186,13 @@ public class Visitors {
int playerMenuPage = playerData.getPage(MenuType.VISITORS), nextEndIndex = sortedIslandVisitors.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Visitors.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Visitors.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -229,7 +216,7 @@ public class Visitors {
if (islandVisitors.size() > index) {
inventorySlot++;
- OfflinePlayer targetPlayer = Bukkit.getServer().getPlayer((UUID) islandVisitors.toArray()[index]);
+ Player targetPlayer = Bukkit.getServer().getPlayer((UUID) islandVisitors.toArray()[index]);
PlayerData targetPlayerData = playerDataManager.getPlayerData(targetPlayer.getUniqueId());
String[] targetPlayerTexture = targetPlayerData.getTexture();
@@ -282,7 +269,8 @@ public class Visitors {
"Menu.Visitors.Item.Visitor.Kick.NoPermission.Ban.NoPermission.Lore"));
}
}
- ItemStack phead = SkullUtils.getSkull(targetPlayer.getUniqueId());
+
+ ItemStack phead = SkullItemCreator.byPlayer(targetPlayer);
nInv.addItem(
nInv.createItem(phead,
ChatColor.translateAlternateColorCodes('&',
diff --git a/src/main/java/com/craftaro/skyblock/menus/admin/Creator.java b/src/main/java/com/craftaro/skyblock/menus/admin/Creator.java
index ca46baf2..8acc2b12 100644
--- a/src/main/java/com/craftaro/skyblock/menus/admin/Creator.java
+++ b/src/main/java/com/craftaro/skyblock/menus/admin/Creator.java
@@ -1,12 +1,10 @@
package com.craftaro.skyblock.menus.admin;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.gui.AnvilGui;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
-import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
-import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.config.FileManager;
import com.craftaro.skyblock.config.FileManager.Config;
@@ -19,6 +17,8 @@ import com.craftaro.skyblock.sound.SoundManager;
import com.craftaro.skyblock.structure.Structure;
import com.craftaro.skyblock.structure.StructureManager;
import com.craftaro.skyblock.utils.item.nInventoryUtil;
+import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
+import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.configuration.file.FileConfiguration;
@@ -31,7 +31,6 @@ import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.inventory.meta.SkullMeta;
import java.io.File;
import java.io.IOException;
@@ -80,24 +79,14 @@ public class Creator implements Listener {
int playerMenuPage = playerData.getPage(MenuType.ADMIN_CREATOR), nextEndIndex = structures.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Admin.Creator.Browse.Item.Previous.Displayname"), null, null, null,
null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Admin.Creator.Browse.Item.Next.Displayname"), null, null, null,
null), 7);
@@ -277,7 +266,7 @@ public class Creator implements Listener {
FileConfiguration configLoad = config.getFileConfiguration();
String inventoryName = "";
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_13)) {
inventoryName = event.getView().getTitle();
} else {
try {
@@ -1224,7 +1213,7 @@ public class Creator implements Listener {
FileConfiguration configLoad = config.getFileConfiguration();
String inventoryName = "";
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_13)) {
inventoryName = event.getView().getTitle();
} else {
try {
diff --git a/src/main/java/com/craftaro/skyblock/menus/admin/Generator.java b/src/main/java/com/craftaro/skyblock/menus/admin/Generator.java
index 1420598c..82094eef 100644
--- a/src/main/java/com/craftaro/skyblock/menus/admin/Generator.java
+++ b/src/main/java/com/craftaro/skyblock/menus/admin/Generator.java
@@ -1,12 +1,12 @@
package com.craftaro.skyblock.menus.admin;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.gui.AnvilGui;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.config.FileManager;
import com.craftaro.skyblock.config.FileManager.Config;
@@ -31,7 +31,6 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.inventory.meta.SkullMeta;
import java.io.File;
import java.io.IOException;
@@ -80,24 +79,14 @@ public class Generator implements Listener {
int playerMenuPage = playerData.getPage(MenuType.ADMIN_GENERATOR), nextEndIndex = generators.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Admin.Generator.Browse.Item.Previous.Displayname"), null, null, null,
null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Admin.Generator.Browse.Item.Next.Displayname"), null, null, null,
null), 7);
@@ -206,7 +195,7 @@ public class Generator implements Listener {
FileConfiguration configLoad = plugin.getLanguage();
String inventoryName = "";
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_13)) {
inventoryName = event.getView().getTitle();
} else {
try {
diff --git a/src/main/java/com/craftaro/skyblock/menus/admin/Levelling.java b/src/main/java/com/craftaro/skyblock/menus/admin/Levelling.java
index 7cd344cf..3823b18a 100644
--- a/src/main/java/com/craftaro/skyblock/menus/admin/Levelling.java
+++ b/src/main/java/com/craftaro/skyblock/menus/admin/Levelling.java
@@ -1,12 +1,12 @@
package com.craftaro.skyblock.menus.admin;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.gui.AnvilGui;
-import com.craftaro.third_party.com.cryptomorin.xseries.SkullUtils;
+import com.craftaro.core.utils.SkullItemCreator;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
-import com.craftaro.core.utils.ItemUtils;
import com.craftaro.core.utils.NumberUtils;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.config.FileManager;
@@ -31,7 +31,6 @@ import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
-import org.bukkit.inventory.meta.SkullMeta;
import java.io.File;
import java.io.IOException;
@@ -105,23 +104,13 @@ public class Levelling implements Listener {
int playerMenuPage = playerData.getPage(MenuType.ADMIN_LEVELLING), nextEndIndex = levellingMaterials.size() - playerMenuPage * 36;
if (playerMenuPage != 1) {
- ItemStack Lhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta LskullMeta = (SkullMeta) Lhead.getItemMeta();
- SkullUtils.setSkullBase64(LskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTU3NTE5MTYwNjksInByb2ZpbGVJZCI6ImE2OGYwYjY0OGQxNDQwMDBhOTVmNGI5YmExNGY4ZGY5IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dMZWZ0Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zZWJmOTA3NDk0YTkzNWU5NTViZmNhZGFiODFiZWFmYjkwZmI5YmU0OWM3MDI2YmE5N2Q3OThkNWYxYTIzIn19fQ==",
- "ToR1w9ZV7zpzCiLBhoaJH3uixs5mAlMhNz42oaRRvrG4HRua5hC6oyyOPfn2HKdSseYA9b1be14fjNRQbSJRvXF3mlvt5/zct4sm+cPVmX8K5kbM2vfwHJgCnfjtPkzT8sqqg6YFdT35mAZGqb9/xY/wDSNSu/S3k2WgmHrJKirszaBZrZfnVnqITUOgM9TmixhcJn2obeqICv6tl7/Wyk/1W62wXlXGm9+WjS+8rRNB+vYxqKR3XmH2lhAiyVGbADsjjGtBVUTWjq+aPw670SjXkoii0YE8sqzUlMMGEkXdXl9fvGtnWKk3APSseuTsjedr7yq+AkXFVDqqkqcUuXwmZl2EjC2WRRbhmYdbtY5nEfqh5+MiBrGdR/JqdEUL4yRutyRTw8mSUAI6X2oSVge7EdM/8f4HwLf33EO4pTocTqAkNbpt6Z54asLe5Y12jSXbvd2dFsgeJbrslK7e4uy/TK8CXf0BP3KLU20QELYrjz9I70gtj9lJ9xwjdx4/xJtxDtrxfC4Afmpu+GNYA/mifpyP3GDeBB5CqN7btIvEWyVvRNH7ppAqZIPqYJ7dSDd2RFuhAId5Yq98GUTBn+eRzeigBvSi1bFkkEgldfghOoK5WhsQtQbXuBBXITMME3NaWCN6zG7DxspS6ew/rZ8E809Xe0ArllquIZ0sP+k=");
- Lhead.setItemMeta(LskullMeta);
+ ItemStack Lhead = SkullItemCreator.byTextureUrlHash("3ebf907494a935e955bfcadab81beafb90fb9be49c7026ba97d798d5f1a23");
nInv.addItem(nInv.createItem(Lhead,
configLoad.getString("Menu.Admin.Levelling.Item.Previous.Displayname"), null, null, null, null), 1);
}
if (!(nextEndIndex == 0 || nextEndIndex < 0)) {
- ItemStack Rhead = XMaterial.PLAYER_HEAD.parseItem();
- SkullMeta RskullMeta = (SkullMeta) Rhead.getItemMeta();
- SkullUtils.setSkullBase64(RskullMeta,
- "eyJ0aW1lc3RhbXAiOjE0OTM4NjgxMDA2NzMsInByb2ZpbGVJZCI6IjUwYzg1MTBiNWVhMDRkNjBiZTlhN2Q1NDJkNmNkMTU2IiwicHJvZmlsZU5hbWUiOiJNSEZfQXJyb3dSaWdodCIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMWI2ZjFhMjViNmJjMTk5OTQ2NDcyYWVkYjM3MDUyMjU4NGZmNmY0ZTgzMjIxZTU5NDZiZDJlNDFiNWNhMTNiIn19fQ==",
- "wZPrsmxckJn4/ybw/iXoMWgAe+1titw3hjhmf7bfg9vtOl0f/J6YLNMOI0OTvqeRKzSQVCxqNOij6k2iM32ZRInCQyblDIFmFadQxryEJDJJPVs7rXR6LRXlN8ON2VDGtboRTL7LwMGpzsrdPNt0oYDJLpR0huEeZKc1+g4W13Y4YM5FUgEs8HvMcg4aaGokSbvrYRRcEh3LR1lVmgxtbiUIr2gZkR3jnwdmZaIw/Ujw28+Et2pDMVCf96E5vC0aNY0KHTdMYheT6hwgw0VAZS2VnJg+Gz4JCl4eQmN2fs4dUBELIW2Rdnp4U1Eb+ZL8DvTV7ofBeZupknqPOyoKIjpInDml9BB2/EkD3zxFtW6AWocRphn03Z203navBkR6ztCMz0BgbmQU/m8VL/s8o4cxOn+2ppjrlj0p8AQxEsBdHozrBi8kNOGf1j97SDHxnvVAF3X8XDso+MthRx5pbEqpxmLyKKgFh25pJE7UaMSnzH2lc7aAZiax67MFw55pDtgfpl+Nlum4r7CK2w5Xob2QTCovVhu78/6SV7qM2Lhlwx/Sjqcl8rn5UIoyM49QE5Iyf1tk+xHXkIvY0m7q358oXsfca4eKmxMe6DFRjUDo1VuWxdg9iVjn22flqz1LD1FhGlPoqv0k4jX5Q733LwtPPI6VOTK+QzqrmiuR6e8=");
- Rhead.setItemMeta(RskullMeta);
+ ItemStack Rhead = SkullItemCreator.byTextureUrlHash("1b6f1a25b6bc199946472aedb370522584ff6f4e83221e5946bd2e41b5ca13b");
nInv.addItem(nInv.createItem(Rhead,
configLoad.getString("Menu.Admin.Levelling.Item.Next.Displayname"), null, null, null, null), 7);
}
@@ -180,7 +169,7 @@ public class Levelling implements Listener {
FileConfiguration configLoad = plugin.getLanguage();
String inventoryName = "";
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_13)) {
inventoryName = event.getView().getTitle();
} else {
try {
@@ -410,7 +399,7 @@ public class Levelling implements Listener {
XMaterial materials = CompatibleMaterial.getMaterial(event.getCurrentItem().getType()).get();
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
materials.parseItem().setData(event.getCurrentItem().getData());
}
diff --git a/src/main/java/com/craftaro/skyblock/menus/admin/Upgrade.java b/src/main/java/com/craftaro/skyblock/menus/admin/Upgrade.java
index 044e841f..7418447f 100644
--- a/src/main/java/com/craftaro/skyblock/menus/admin/Upgrade.java
+++ b/src/main/java/com/craftaro/skyblock/menus/admin/Upgrade.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.menus.admin;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.gui.AnvilGui;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -240,7 +241,7 @@ public class Upgrade {
ItemStack jumpPotion = new ItemStack(Material.POTION);
com.craftaro.skyblock.upgrade.Upgrade upgrade;
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
PotionMeta pm = (PotionMeta) speedPotion.getItemMeta();
pm.setBasePotionData(new PotionData(PotionType.SPEED));
speedPotion.setItemMeta(pm);
@@ -258,7 +259,7 @@ public class Upgrade {
new Placeholder("%status", getStatus(upgrade))},
null, new ItemFlag[]{ItemFlag.HIDE_POTION_EFFECTS}), 0);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
PotionMeta pm = (PotionMeta) jumpPotion.getItemMeta();
pm.setBasePotionData(new PotionData(PotionType.JUMP));
jumpPotion.setItemMeta(pm);
diff --git a/src/main/java/com/craftaro/skyblock/permission/BasicPermission.java b/src/main/java/com/craftaro/skyblock/permission/BasicPermission.java
index 90dbdc47..b949d2ff 100644
--- a/src/main/java/com/craftaro/skyblock/permission/BasicPermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/BasicPermission.java
@@ -12,17 +12,37 @@ import org.bukkit.inventory.meta.ItemMeta;
import javax.annotation.Nonnull;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public abstract class BasicPermission {
private final String name;
private final XMaterial icon;
private final PermissionType type;
+ //It used to write the permission's value
+ //to the global settings.yml which will be defaulted on all islands
+ private final Map defaultValues;
+
protected BasicPermission(@Nonnull String name, @Nonnull XMaterial icon, @Nonnull PermissionType type) {
+ this(name, icon, type, new HashMap<>());
+ }
+
+ protected BasicPermission(@Nonnull String name, @Nonnull XMaterial icon, @Nonnull PermissionType type, Map defaultValues) {
this.name = name;
this.icon = icon;
this.type = type;
+ if (defaultValues.isEmpty()) {
+ this.defaultValues = new HashMap<>();
+ this.defaultValues.put(IslandRole.VISITOR, false);
+ this.defaultValues.put(IslandRole.MEMBER, true);
+ this.defaultValues.put(IslandRole.OPERATOR, true);
+ this.defaultValues.put(IslandRole.COOP, true);
+ this.defaultValues.put(IslandRole.OWNER, true);
+ } else {
+ this.defaultValues = defaultValues;
+ }
}
public ItemStack getItem(Island island, IslandRole role) {
@@ -72,4 +92,8 @@ public abstract class BasicPermission {
public PermissionType getType() {
return this.type;
}
+
+ public Map getDefaultValues() {
+ return defaultValues;
+ }
}
diff --git a/src/main/java/com/craftaro/skyblock/permission/ListeningPermission.java b/src/main/java/com/craftaro/skyblock/permission/ListeningPermission.java
index 5ee20e70..c4bc7b23 100644
--- a/src/main/java/com/craftaro/skyblock/permission/ListeningPermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/ListeningPermission.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.permission;
+import com.craftaro.skyblock.island.IslandRole;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
import com.craftaro.skyblock.SkyBlock;
@@ -34,11 +35,17 @@ import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.vehicle.VehicleDamageEvent;
import org.bukkit.event.vehicle.VehicleDestroyEvent;
+import java.util.Map;
+
public abstract class ListeningPermission extends BasicPermission {
protected ListeningPermission(String name, XMaterial icon, PermissionType type) {
super(name, icon, type);
}
+ protected ListeningPermission(String name, XMaterial icon, PermissionType type, Map defaultValues) {
+ super(name, icon, type, defaultValues);
+ }
+
public void onInteract(PlayerInteractEvent event) {
}
diff --git a/src/main/java/com/craftaro/skyblock/permission/PermissionManager.java b/src/main/java/com/craftaro/skyblock/permission/PermissionManager.java
index 9db2e4aa..433c2ae3 100644
--- a/src/main/java/com/craftaro/skyblock/permission/PermissionManager.java
+++ b/src/main/java/com/craftaro/skyblock/permission/PermissionManager.java
@@ -1,5 +1,7 @@
package com.craftaro.skyblock.permission;
+import com.craftaro.core.compatibility.MajorServerVersion;
+import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.config.FileManager;
import com.craftaro.skyblock.island.Island;
@@ -141,6 +143,10 @@ public class PermissionManager {
registerPermission(new HungerPermission(plugin));
}
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_20)) {
+ registerPermission(new SignEditPermission(plugin));
+ }
+
this.registeredHandlers = this.registeredHandlers.stream()
.sorted(Comparator.comparingInt(h -> h.getHandler().getAnnotation(PermissionHandler.class).priority().ordinal()))
.collect(Collectors.toList());
@@ -153,13 +159,16 @@ public class PermissionManager {
switch (permission.getType()) {
case GENERIC:
if (settingsConfigLoad.getString("Settings.Visitor." + permission.getName()) == null) {
- settingsConfigLoad.set("Settings.Visitor." + permission.getName(), true);
+ settingsConfigLoad.set("Settings.Visitor." + permission.getName(), permission.getDefaultValues().get(IslandRole.VISITOR));
+ if (permission.getName().equals("EditSign")) {
+ System.err.println("Default EditSign Visitor permission set to: " + permission.getDefaultValues().get(IslandRole.VISITOR));
+ }
}
if (settingsConfigLoad.getString("Settings.Member." + permission.getName()) == null) {
- settingsConfigLoad.set("Settings.Member." + permission.getName(), true);
+ settingsConfigLoad.set("Settings.Member." + permission.getName(), permission.getDefaultValues().get(IslandRole.MEMBER));
}
if (settingsConfigLoad.getString("Settings.Coop." + permission.getName()) == null) {
- settingsConfigLoad.set("Settings.Coop." + permission.getName(), true);
+ settingsConfigLoad.set("Settings.Coop." + permission.getName(), permission.getDefaultValues().get(IslandRole.COOP));
}
break;
case OPERATOR:
diff --git a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/AnimalBreedingPermission.java b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/AnimalBreedingPermission.java
index 615071ee..444360fe 100644
--- a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/AnimalBreedingPermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/AnimalBreedingPermission.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.permission.permissions.listening;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -49,7 +50,7 @@ public class AnimalBreedingPermission extends ListeningPermission {
} else if (entity.getType() == EntityType.CHICKEN) {
if (!(XMaterial.WHEAT_SEEDS.isSimilar(is)
|| XMaterial.PUMPKIN_SEEDS.isSimilar(is) || XMaterial.MELON_SEEDS.isSimilar(is))) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
if (!(XMaterial.BEETROOT_SEEDS.isSimilar(is))) {
return;
}
@@ -86,12 +87,12 @@ public class AnimalBreedingPermission extends ListeningPermission {
return;
}
} else {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_10)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_10)) {
if (entity.getType() == EntityType.LLAMA) {
if (!(XMaterial.HAY_BLOCK.isSimilar(is))) {
return;
}
- } else if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ } else if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
if (entity.getType() == EntityType.TURTLE) {
if (!(XMaterial.SEAGRASS.isSimilar(is))) {
return;
diff --git a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/DamagePermission.java b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/DamagePermission.java
index da79ef49..f358f954 100644
--- a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/DamagePermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/DamagePermission.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.permission.permissions.listening;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -37,7 +38,7 @@ public class DamagePermission extends ListeningPermission {
return;
}
} else {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_12)) {
if (event.getCause() == EntityDamageEvent.DamageCause.valueOf("ENTITY_SWEEP_ATTACK")) {
EntityDamageByEntityEvent entityDamageByEntityEvent = (EntityDamageByEntityEvent) event;
diff --git a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/PortalPermission.java b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/PortalPermission.java
index 2115b499..537a148e 100644
--- a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/PortalPermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/PortalPermission.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.permission.permissions.listening;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -59,7 +60,7 @@ public class PortalPermission extends ListeningPermission {
if (event.getCause() == PlayerTeleportEvent.TeleportCause.ENDER_PEARL
|| event.getCause() == PlayerTeleportEvent.TeleportCause.NETHER_PORTAL
|| event.getCause() == PlayerTeleportEvent.TeleportCause.END_PORTAL
- || (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)
+ || (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)
&& event.getCause() == PlayerTeleportEvent.TeleportCause.END_GATEWAY)) {
/*event.getPlayer().teleport(getToLocation(event.getFrom(), event.getPlayer()));
Location to = getToLocation(event.getFrom(), event.getPlayer());
diff --git a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/SignEditPermission.java b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/SignEditPermission.java
new file mode 100644
index 00000000..6aa3a57d
--- /dev/null
+++ b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/SignEditPermission.java
@@ -0,0 +1,42 @@
+package com.craftaro.skyblock.permission.permissions.listening;
+
+import com.craftaro.skyblock.SkyBlock;
+import com.craftaro.skyblock.island.IslandRole;
+import com.craftaro.skyblock.permission.ListeningPermission;
+import com.craftaro.skyblock.permission.PermissionHandler;
+import com.craftaro.skyblock.permission.PermissionType;
+import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
+import org.bukkit.entity.Player;
+import org.bukkit.event.player.PlayerInteractEvent;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class SignEditPermission extends ListeningPermission {
+
+ private final SkyBlock plugin;
+
+ public SignEditPermission(SkyBlock plugin) {
+ super("EditSign", XMaterial.OAK_SIGN, PermissionType.GENERIC, new HashMap() {{
+ put(IslandRole.VISITOR, false);
+ put(IslandRole.MEMBER, true);
+ put(IslandRole.OPERATOR, true);
+ put(IslandRole.COOP, true);
+ put(IslandRole.OWNER, true);
+ }});
+ this.plugin = plugin;
+ }
+
+ @PermissionHandler
+ public void onInteract(PlayerInteractEvent event) {
+ if (event.getClickedBlock() == null) {
+ return;
+ }
+
+ Player player = event.getPlayer();
+
+ if (event.getClickedBlock().getType().name().contains("SIGN")) {
+ cancelAndMessage(event, player, this.plugin, this.plugin.getMessageManager());
+ }
+ }
+}
diff --git a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/TradingPermission.java b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/TradingPermission.java
index 734f36f0..0b9b448b 100644
--- a/src/main/java/com/craftaro/skyblock/permission/permissions/listening/TradingPermission.java
+++ b/src/main/java/com/craftaro/skyblock/permission/permissions/listening/TradingPermission.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.permission.permissions.listening;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -26,7 +27,7 @@ public class TradingPermission extends ListeningPermission {
Player player = event.getPlayer();
if (event.getRightClicked().getType() == EntityType.VILLAGER
- || ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14)
+ || MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_14)
&& event.getRightClicked().getType() == EntityType.WANDERING_TRADER) {
cancelAndMessage(event, player, this.plugin, this.messageManager);
}
diff --git a/src/main/java/com/craftaro/skyblock/scoreboard/Board.java b/src/main/java/com/craftaro/skyblock/scoreboard/Board.java
index 014e86ea..a919eeea 100644
--- a/src/main/java/com/craftaro/skyblock/scoreboard/Board.java
+++ b/src/main/java/com/craftaro/skyblock/scoreboard/Board.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.scoreboard;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.placeholder.PlaceholderManager;
@@ -24,7 +25,7 @@ class Board {
this.player = player;
this.plugin = plugin;
this.board = this.plugin.getServer().getScoreboardManager().getNewScoreboard();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
this.objective = this.board.registerNewObjective("sb1", "sb2", "sb3");
} else {
this.objective = this.board.registerNewObjective("sb1", "sb2");
@@ -66,7 +67,7 @@ class Board {
this.cache.put(line, string);
ScoreboardLine parts;
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
parts = convertIntoPieces(string, 64);
} else {
parts = convertIntoPieces(string, 16);
diff --git a/src/main/java/com/craftaro/skyblock/stackable/Stackable.java b/src/main/java/com/craftaro/skyblock/stackable/Stackable.java
index 7237e98b..2c622c87 100644
--- a/src/main/java/com/craftaro/skyblock/stackable/Stackable.java
+++ b/src/main/java/com/craftaro/skyblock/stackable/Stackable.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.stackable;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.third_party.com.cryptomorin.xseries.XSound;
@@ -147,7 +148,7 @@ public class Stackable {
as.setVisible(false);
as.setGravity(false);
as.setSmall(true);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
as.setMarker(true);
}
as.setBasePlate(true);
diff --git a/src/main/java/com/craftaro/skyblock/tasks/MobNetherWaterTask.java b/src/main/java/com/craftaro/skyblock/tasks/MobNetherWaterTask.java
index 4d56fa2e..ee304af5 100644
--- a/src/main/java/com/craftaro/skyblock/tasks/MobNetherWaterTask.java
+++ b/src/main/java/com/craftaro/skyblock/tasks/MobNetherWaterTask.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.tasks;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import com.craftaro.skyblock.island.IslandWorld;
@@ -50,7 +51,7 @@ public class MobNetherWaterTask extends BukkitRunnable {
if (ent instanceof Blaze || ent instanceof MagmaCube || ent instanceof Wither || ent instanceof Ghast)
return true;
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
return ent.getType() == EntityType.WITHER_SKELETON;
} else {
return ent instanceof Skeleton && ((Skeleton) ent).getSkeletonType() == Skeleton.SkeletonType.WITHER;
diff --git a/src/main/java/com/craftaro/skyblock/utils/item/InventoryUtil.java b/src/main/java/com/craftaro/skyblock/utils/item/InventoryUtil.java
index b1405676..dec8f430 100644
--- a/src/main/java/com/craftaro/skyblock/utils/item/InventoryUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/item/InventoryUtil.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.utils.item;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import org.bukkit.GameMode;
import org.bukkit.Material;
@@ -20,7 +21,7 @@ public class InventoryUtil {
ItemStack is = ammo.get(index);
ItemMeta im = is.getItemMeta();
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
if (((Damageable) im).getDamage() != 0) {
continue;
}
@@ -56,7 +57,7 @@ public class InventoryUtil {
ItemMeta im = is.getItemMeta();
if (!im.hasDisplayName()) {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) {
if (((Damageable) im).getDamage() != 0) {
continue;
}
diff --git a/src/main/java/com/craftaro/skyblock/utils/item/ItemStackUtil.java b/src/main/java/com/craftaro/skyblock/utils/item/ItemStackUtil.java
index 9d43f03c..73ae7d1b 100644
--- a/src/main/java/com/craftaro/skyblock/utils/item/ItemStackUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/item/ItemStackUtil.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.utils.item;
import com.craftaro.core.compatibility.ClassMapping;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.MethodMapping;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -15,10 +16,12 @@ import java.io.DataInputStream;
import java.io.DataOutput;
import java.io.DataOutputStream;
import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
import java.math.BigInteger;
+import java.util.Arrays;
public class ItemStackUtil {
- private static final boolean isAbove1_16_R1 = ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)
+ private static final boolean isAbove1_16_R1 = MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)
&& !ServerVersion.getServerVersionString().equals("v1_16_R1");
public static ItemStack deserializeItemStack(String data) {
@@ -27,47 +30,59 @@ public class ItemStackUtil {
ItemStack itemStack = null;
- try {
- Class> NBTTagCompoundClass = ClassMapping.NBT_TAG_COMPOUND.getClazz();
- Class> NMSItemStackClass = ClassMapping.ITEM_STACK.getClazz();
- Object NBTTagCompound = isAbove1_16_R1 ? ClassMapping.NBT_COMPRESSED_STREAM_TOOLS.getClazz()
- .getMethod("a", DataInput.class).invoke(null, dataInputStream)
- : ClassMapping.NBT_COMPRESSED_STREAM_TOOLS.getClazz()
- .getMethod("a", DataInputStream.class).invoke(null, dataInputStream);
- Object craftItemStack;
+ if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_20_5)) {
+ //We need net.minecraft.nbt.NbtIo class in this version
+ byte[] bytes = new BigInteger(data, 32).toByteArray();
+ itemStack = ItemStack.deserializeBytes(bytes);
+ } else {
+ try {
+ Class> NBTTagCompoundClass = ClassMapping.NBT_TAG_COMPOUND.getClazz();
+ Class> NMSItemStackClass = ClassMapping.ITEM_STACK.getClazz();
+ Object NBTTagCompound = isAbove1_16_R1 ? ClassMapping.NBT_COMPRESSED_STREAM_TOOLS.getClazz()
+ .getMethod("a", DataInput.class).invoke(null, dataInputStream)
+ : ClassMapping.NBT_COMPRESSED_STREAM_TOOLS.getClazz()
+ .getMethod("a", DataInputStream.class).invoke(null, dataInputStream);
+ Object craftItemStack;
- assert NMSItemStackClass != null;
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
- craftItemStack = NMSItemStackClass.getMethod("a", NBTTagCompoundClass).invoke(null, NBTTagCompound);
- } else if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
- craftItemStack = NMSItemStackClass.getConstructor(NBTTagCompoundClass).newInstance(NBTTagCompound);
- } else {
- craftItemStack = NMSItemStackClass.getMethod("createStack", NBTTagCompoundClass).invoke(null,
- NBTTagCompound);
- }
-
- itemStack = (ItemStack) NMSUtils.getCraftClass("inventory.CraftItemStack")
- .getMethod("asBukkitCopy", NMSItemStackClass).invoke(null, craftItemStack);
-
- // TODO: This method of serialization has some issues. Not all the names are the same between versions
- // Make an exception for reeds/melon, they NEED to load in the island chest
- // This code is here SPECIFICALLY to get the default.structure to load properly in all versions
- // Other structures people make NEED to be saved from the version that they will be using so everything loads properly
- if (itemStack.getType() == Material.AIR) {
- if (NBTTagCompound.toString().equals("{id:\"minecraft:sugar_cane\",Count:1b}")) {
- itemStack = XMaterial.SUGAR_CANE.parseItem();
- } else if (NBTTagCompound.toString().equals("{id:\"minecraft:melon_slice\",Count:1b}")) {
- itemStack = XMaterial.MELON_SLICE.parseItem();
+ assert NMSItemStackClass != null;
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
+ craftItemStack = NMSItemStackClass.getMethod("a", NBTTagCompoundClass).invoke(null, NBTTagCompound);
+ } else if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
+ craftItemStack = NMSItemStackClass.getConstructor(NBTTagCompoundClass).newInstance(NBTTagCompound);
+ } else {
+ craftItemStack = NMSItemStackClass.getMethod("createStack", NBTTagCompoundClass).invoke(null,
+ NBTTagCompound);
}
+
+ itemStack = (ItemStack) NMSUtils.getCraftClass("inventory.CraftItemStack")
+ .getMethod("asBukkitCopy", NMSItemStackClass).invoke(null, craftItemStack);
+
+ // TODO: This method of serialization has some issues. Not all the names are the same between versions
+ // Make an exception for reeds/melon, they NEED to load in the island chest
+ // This code is here SPECIFICALLY to get the default.structure to load properly in all versions
+ // Other structures people make NEED to be saved from the version that they will be using so everything loads properly
+ if (itemStack.getType() == Material.AIR) {
+ if (NBTTagCompound.toString().equals("{id:\"minecraft:sugar_cane\",Count:1b}")) {
+ itemStack = XMaterial.SUGAR_CANE.parseItem();
+ } else if (NBTTagCompound.toString().equals("{id:\"minecraft:melon_slice\",Count:1b}")) {
+ itemStack = XMaterial.MELON_SLICE.parseItem();
+ }
+ }
+ } catch (Exception ex) {
+ ex.printStackTrace();
}
- } catch (Exception ex) {
- ex.printStackTrace();
}
return itemStack;
}
public static String serializeItemStack(ItemStack item) {
+ if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_20_5)) {
+ //We need net.minecraft.nbt.NbtIo class in this version
+ byte[] bytes = item.serializeAsBytes();
+ return new BigInteger(bytes).toString(32);
+ }
+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
DataOutputStream dataOutput = new DataOutputStream(outputStream);
diff --git a/src/main/java/com/craftaro/skyblock/utils/structure/SchematicUtil.java b/src/main/java/com/craftaro/skyblock/utils/structure/SchematicUtil.java
index ff02e9af..19ed1906 100644
--- a/src/main/java/com/craftaro/skyblock/utils/structure/SchematicUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/structure/SchematicUtil.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.utils.structure;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.skyblock.SkyBlock;
import org.bukkit.Bukkit;
@@ -20,7 +21,7 @@ public class SchematicUtil {
}
Runnable pasteTask = () -> {
- if (ServerVersion.isServerVersionAbove(ServerVersion.V1_12)) { // WorldEdit 7
+ if (MajorServerVersion.isServerVersionAbove(MajorServerVersion.V1_12)) { // WorldEdit 7
com.sk89q.worldedit.extent.clipboard.io.ClipboardFormat format = com.sk89q.worldedit.extent.clipboard.io.ClipboardFormats.findByFile(schematicFile);
try (com.sk89q.worldedit.extent.clipboard.io.ClipboardReader reader = format.getReader(Files.newInputStream(schematicFile.toPath()))) {
com.sk89q.worldedit.extent.clipboard.Clipboard clipboard = reader.read();
diff --git a/src/main/java/com/craftaro/skyblock/utils/version/CompatibleSpawners.java b/src/main/java/com/craftaro/skyblock/utils/version/CompatibleSpawners.java
index d72d8288..f95dc6b2 100644
--- a/src/main/java/com/craftaro/skyblock/utils/version/CompatibleSpawners.java
+++ b/src/main/java/com/craftaro/skyblock/utils/version/CompatibleSpawners.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.utils.version;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import org.bukkit.Material;
@@ -197,7 +198,7 @@ public enum CompatibleSpawners {
}
public static CompatibleSpawners getMaterials(Material material, byte data) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
return fromString(material.name());
}
diff --git a/src/main/java/com/craftaro/skyblock/utils/version/SBiome.java b/src/main/java/com/craftaro/skyblock/utils/version/SBiome.java
index ae5920ef..9eaa7eac 100644
--- a/src/main/java/com/craftaro/skyblock/utils/version/SBiome.java
+++ b/src/main/java/com/craftaro/skyblock/utils/version/SBiome.java
@@ -1,5 +1,6 @@
package com.craftaro.skyblock.utils.version;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.utils.StringUtil;
@@ -34,7 +35,7 @@ public enum SBiome {
THE_VOID("SKY", XMaterial.OBSIDIAN),
WARM_OCEAN(true, XMaterial.TROPICAL_FISH);
- private static final boolean isPostVersion = ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13);
+ private static final boolean isPostVersion = MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13);
private final String legacyName;
private final boolean isPost13;
diff --git a/src/main/java/com/craftaro/skyblock/utils/world/LocationUtil.java b/src/main/java/com/craftaro/skyblock/utils/world/LocationUtil.java
index 8d29457e..8fccf4e8 100644
--- a/src/main/java/com/craftaro/skyblock/utils/world/LocationUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/world/LocationUtil.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.utils.world;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -35,7 +36,7 @@ public final class LocationUtil {
Location tempLoc = LocationUtil.getDefinitiveLocation(loc.clone());
if (tempLoc.getBlock().getType() == Material.WATER) {
tempLoc.getBlock().setType(Material.AIR);
- } else if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ } else if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
LocationUtil113.removeWaterLoggedFromLocation(tempLoc);
}
}
@@ -72,7 +73,7 @@ public final class LocationUtil {
for (locWorking.setY(locWorking.getBlockY()); locWorking.getBlockY() >= 0; locWorking.setY(locWorking.getBlockY() - 1)) {
if (!locWorking.getBlock().isEmpty()) {
if (locWorking.getBlock().getType() == XMaterial.WATER.parseMaterial() ||
- (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) &&
+ (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13) &&
locWorking.getBlock().getBlockData() instanceof org.bukkit.block.data.Waterlogged)) {
loc = locWorking;
}
@@ -90,7 +91,7 @@ public final class LocationUtil {
locChecked.getBlock().getType().isBlock() &&
locChecked.add(0d, 1d, 0d).getBlock().getType() == XMaterial.AIR.parseMaterial() &&
locChecked.add(0d, 2d, 0d).getBlock().getType() == XMaterial.AIR.parseMaterial() &&
- !(ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13) && locChecked.getBlock().getBlockData() instanceof org.bukkit.block.data.Waterlogged)) {
+ !(MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13) && locChecked.getBlock().getBlockData() instanceof org.bukkit.block.data.Waterlogged)) {
safe = true;
switch (CompatibleMaterial.getMaterial(locChecked.getBlock().getType()).orElse(XMaterial.AIR)) {
case ACACIA_DOOR: // <= 1.8.8
diff --git a/src/main/java/com/craftaro/skyblock/utils/world/block/BlockUtil.java b/src/main/java/com/craftaro/skyblock/utils/world/block/BlockUtil.java
index 6696f1cc..94945d1f 100644
--- a/src/main/java/com/craftaro/skyblock/utils/world/block/BlockUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/world/block/BlockUtil.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.utils.world.block;
import com.craftaro.core.compatibility.ClassMapping;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.MethodMapping;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
@@ -54,7 +55,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setVersion(Integer.parseInt(ServerVersion.getVersionReleaseNumber()));
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
blockData.setBlockData(block.getBlockData().getAsString());
}
@@ -77,7 +78,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setPotionEffect(primaryEffectName + ":" + secondaryEffectName);
blockData.setStateType(BlockStateType.BEACON.toString());
- } else if (blockState instanceof BrewingStand && ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
+ } else if (blockState instanceof BrewingStand && MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_12)) {
BrewingStand brewingStand = (BrewingStand) blockState;
blockData.setBrewingTime(brewingStand.getBrewingTime());
blockData.setFuelLevel(brewingStand.getFuelLevel());
@@ -191,7 +192,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setRotateFace(skull.getRotation().toString());
blockData.setStateType(BlockStateType.SKULL.toString());
} else {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
if (blockState instanceof EndGateway) {
EndGateway endGateway = (EndGateway) blockState;
blockData.setExactTeleport(endGateway.isExactTeleport());
@@ -201,7 +202,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setStateType(BlockStateType.ENDGATEWAY.toString());
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
if (blockState instanceof ShulkerBox) {
ShulkerBox shulkerBox = (ShulkerBox) blockState;
@@ -217,7 +218,7 @@ public final class BlockUtil extends BlockUtils {
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_14)) {
if (blockState instanceof Barrel) {
Barrel barrel = (Barrel) blockState;
@@ -232,7 +233,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setStateType(BlockStateType.BARREL.toString());
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) {
if (blockState instanceof RespawnAnchor) {
RespawnAnchor respawnAnchor = (RespawnAnchor) blockState;
blockData.setCharges(respawnAnchor.getCharges());
@@ -247,7 +248,7 @@ public final class BlockUtil extends BlockUtils {
blockData.setFacing(((Stairs) materialData).getFacing().toString());
blockData.setDataType(BlockDataType.STAIRS.toString());
} else if (materialData instanceof org.bukkit.material.FlowerPot) {
- if (ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAtOrBelow(MajorServerVersion.V1_12)) {
try {
World world = block.getWorld();
@@ -301,7 +302,7 @@ public final class BlockUtil extends BlockUtils {
return;
}
- if (ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAtOrBelow(MajorServerVersion.V1_12)) {
setBlockFast(block.getWorld(), block.getX(), block.getY(), block.getZ(), material, blockData.getData());
} else {
block.setBlockData(Bukkit.getServer().createBlockData(blockData.getBlockData()));
@@ -334,7 +335,7 @@ public final class BlockUtil extends BlockUtils {
beacon.setSecondaryEffect(PotionEffectType.getByName(potionEffect[1].toUpperCase()));
}
state.update();
- } else if (blockTypeState == BlockStateType.BREWINGSTAND && ServerVersion.isServerVersionAtLeast(ServerVersion.V1_12)) {
+ } else if (blockTypeState == BlockStateType.BREWINGSTAND && MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_12)) {
BrewingStand brewingStand = (BrewingStand) state;
brewingStand.setBrewingTime(blockData.getBrewingTime());
brewingStand.setFuelLevel(blockData.getFuelLevel());
@@ -422,14 +423,14 @@ public final class BlockUtil extends BlockUtils {
skull.setRotation(BlockFace.valueOf(blockData.getRotateFace().toUpperCase()));
skull.setSkullType(SkullType.valueOf(blockData.getSkullType().toUpperCase()));
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_10)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_10)) {
skull.setOwningPlayer(Bukkit.getServer().getOfflinePlayer(blockData.getSkullOwner()));
} else {
skull.setOwner(blockData.getSkullOwner());
}
state.update();
} else {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
if (blockTypeState == BlockStateType.ENDGATEWAY) {
EndGateway endGateway = (EndGateway) state;
endGateway.setExactTeleport(blockData.isExactTeleport());
@@ -445,7 +446,7 @@ public final class BlockUtil extends BlockUtils {
state.update();
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
if (blockTypeState == BlockStateType.SHULKERBOX) {
ShulkerBox shulkerBox = (ShulkerBox) state;
@@ -456,7 +457,7 @@ public final class BlockUtil extends BlockUtils {
}
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_14)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_14)) {
if (blockTypeState == BlockStateType.BARREL) {
Barrel barrel = (Barrel) state;
@@ -469,7 +470,7 @@ public final class BlockUtil extends BlockUtils {
}
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) {
if (blockTypeState == BlockStateType.RESPAWN_ANCHOR) {
RespawnAnchor respawnAnchor = (RespawnAnchor) state;
respawnAnchor.setCharges(blockData.getCharges());
@@ -488,7 +489,7 @@ public final class BlockUtil extends BlockUtils {
state.setData(stairs);
} else if (blockDataType == BlockDataType.FLOWERPOT) {
setBlockFast(block.getWorld(), block.getX(), block.getY() - 1, block.getZ(), XMaterial.STONE, (byte) 0);
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_8) && ServerVersion.isServerVersionAtOrBelow(ServerVersion.V1_12)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_8) && MajorServerVersion.isServerVersionAtOrBelow(MajorServerVersion.V1_12)) {
if (block.getLocation().clone().subtract(0.0D, 1.0D, 0.0D).getBlock().getType() == Material.AIR) {
setBlockFast(block.getWorld(), block.getX(), block.getY() - 1, block.getZ(), XMaterial.STONE, (byte) 0);
}
@@ -533,11 +534,11 @@ public final class BlockUtil extends BlockUtils {
materialStr = null;
if (blockData.getVersion() > 12) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
materialStr = flower[0].toUpperCase();
}
} else {
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
materialStr = flower[0].toUpperCase();
}
}
@@ -558,7 +559,7 @@ public final class BlockUtil extends BlockUtils {
if (bottomBlock.getType() == Material.AIR && !topBlock.getType().name().equals("DOUBLE_PLANT")) {
bottomBlock.setType(XMaterial.LARGE_FERN.parseMaterial());
- if (ServerVersion.isServerVersionBelow(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionBelow(MajorServerVersion.V1_13)) {
try {
bottomBlock.getClass().getMethod("setData", byte.class).invoke(bottomBlock, (byte) 2);
} catch (Exception ex) {
diff --git a/src/main/java/com/craftaro/skyblock/utils/world/entity/EntityUtil.java b/src/main/java/com/craftaro/skyblock/utils/world/entity/EntityUtil.java
index f8f4e35f..0b3b16b0 100644
--- a/src/main/java/com/craftaro/skyblock/utils/world/entity/EntityUtil.java
+++ b/src/main/java/com/craftaro/skyblock/utils/world/entity/EntityUtil.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.utils.world.entity;
import com.craftaro.core.compatibility.CompatibleMaterial;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.core.nms.Nms;
import com.craftaro.skyblock.utils.item.ItemStackUtil;
@@ -119,8 +120,8 @@ public final class EntityUtil {
LivingEntity livingEntity = (LivingEntity) entity;
EntityEquipment entityEquipment = livingEntity.getEquipment();
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_9)) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_10)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_9)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_10)) {
livingEntity.setAI(entityData.hasAI());
}
@@ -175,7 +176,7 @@ public final class EntityUtil {
Material material = CompatibleMaterial.getMaterial(materialData[0].toUpperCase()).get().parseMaterial();
if (material != null) {
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_13)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_13)) {
((Enderman) entity).setCarriedBlock(Bukkit.getServer().createBlockData(material));
} else {
((Enderman) entity).setCarriedMaterial(new MaterialData(material, data));
@@ -229,7 +230,7 @@ public final class EntityUtil {
villager.getInventory().setContents(items.toArray(new ItemStack[0]));
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
if (entity instanceof Llama) {
Llama llama = ((Llama) entity);
llama.setColor(Llama.Color.valueOf(entityData.getLlamaColor().toUpperCase()));
@@ -244,7 +245,7 @@ public final class EntityUtil {
llama.getInventory().setContents(items.toArray(new ItemStack[0]));
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_11)) {
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_11)) {
if (entity instanceof Parrot) {
((Parrot) entity)
.setVariant(Parrot.Variant.valueOf(entityData.getParrotVariant().toUpperCase()));
diff --git a/src/main/java/com/craftaro/skyblock/world/generator/VoidGenerator.java b/src/main/java/com/craftaro/skyblock/world/generator/VoidGenerator.java
index b70efbbf..c25fbb43 100644
--- a/src/main/java/com/craftaro/skyblock/world/generator/VoidGenerator.java
+++ b/src/main/java/com/craftaro/skyblock/world/generator/VoidGenerator.java
@@ -1,6 +1,7 @@
package com.craftaro.skyblock.world.generator;
import com.craftaro.core.compatibility.CompatibleBiome;
+import com.craftaro.core.compatibility.MajorServerVersion;
import com.craftaro.core.compatibility.ServerVersion;
import com.craftaro.third_party.com.cryptomorin.xseries.XMaterial;
import com.craftaro.skyblock.SkyBlock;
@@ -56,7 +57,7 @@ public class VoidGenerator extends ChunkGenerator {
throw new IllegalStateException("Unexpected value: " + world.getEnvironment());
}
- if (ServerVersion.isServerVersionAtLeast(ServerVersion.V1_16)) { // TODO Should be 1.15 but it works fine there
+ if (MajorServerVersion.isServerVersionAtLeast(MajorServerVersion.V1_16)) { // TODO Should be 1.15 but it works fine there
setChunkBiome3D(biome, biomeGrid, world);
} else {
setChunkBiome2D(biome, biomeGrid);
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 3fe97d68..1084189d 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -19,7 +19,6 @@ softdepend:
- WorldEdit
loadbefore:
- Multiverse-Core
- - ProtocolLib
author: Craftaro
authors: [ Fabrimat ]
diff --git a/src/main/resources/structures/default_1_20_5.structure b/src/main/resources/structures/default_1_20_5.structure
new file mode 100644
index 00000000..79a73d03
--- /dev/null
+++ b/src/main/resources/structures/default_1_20_5.structure
@@ -0,0 +1 @@
+eyJibG9ja3MiOiJbe1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoxLFwieVwiOi05LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjEsXCJ5XCI6LTgsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MSxcInlcIjotOCxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoxLFwieVwiOi04LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjEsXCJ5XCI6LTgsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MSxcInlcIjotOCxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi0xMCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi05LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTksXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotOSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi05LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTksXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotOCxcInpcIjotNixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi04LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTgsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotOCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi04LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTgsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotOCxcInpcIjowLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotMyxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTMsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDMscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi0zLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotMixcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTIsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi0yLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q1LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MixcInlcIjotMSxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjIsXCJ5XCI6LTEsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDUscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjoyLFwieVwiOi0xLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTExLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTEwLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTEwLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTEwLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTksXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotOSxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi05LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTksXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotOSxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi04LFwielwiOi02LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTgsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotOCxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi04LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTgsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotOCxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi04LFwielwiOjAsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDEscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi00LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotMyxcInpcIjotNSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTMsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDEscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi0zLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QyLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotMyxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTMsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi0yLFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotMixcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTIsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDMscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi0yLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotMixcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNSxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTEsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi0xLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjotMSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjMsXCJ5XCI6LTEsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDUscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjozLFwieVwiOi0xLFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6MyxcInlcIjowLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEyLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTExLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiU0FORFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6c2FuZFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTExLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTExLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEwLFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEwLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiU0FORFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6c2FuZFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEwLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEwLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEwLFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTksXCJ6XCI6LTYsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotOSxcInpcIjotNSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi05LFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiU0FORFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6c2FuZFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTksXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotOSxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi05LFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTksXCJ6XCI6MCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi04LFwielwiOi02LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTgsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotOCxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi04LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTgsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotOCxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi04LFwielwiOjAsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJBSVJcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmFpclwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTcsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJDSEVTVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Y2hlc3RbZmFjaW5nXFx1MDAzZG5vcnRoLHR5cGVcXHUwMDNkc2luZ2xlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJDSEVTVFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOntcIjBcIjpcImZvbTIwMDAwMDAwMDAwdnZobTRvMzBjcmc3Y2k5Yzk0NjRtYjlhcHI2Y3VvcjBzMG51Y28zMHA5NjYzbzZkcG42NG1qOWU5OTYybmNlYTloNzZhcGowOW43MnZqOWJjNWc2MG8zMjAwMGVqbzA1NmNyMDAwMDBcIixcIjFcIjpcIjdzYjEwMDAwMDAwMDAwZnZvcjJjMWc2ZG8zbTk0bTRpMzJiNWtsY3RqNmZjZGdlMGJ2NmMxZ2NrajMxMjM2c3JqMmI5a240a2oxYm03NTRyamU5cHU1aXZqbTk5aDc2YXBqMDluNzJ2ajliYzVnNjBvMzQwMDAwNmZ0a2JvdjAwMDAwXCIsXCIyXCI6XCJ2aGM0MDAwMDAwMDAwMXZ2M2M5ZzYwcG4wZXA0aW9pOGM5Y21pbGptY3B0aG0xbzFmc3BnNjFpaWNjN2djdmplYzlkNmlzaWljNWVvaWxpOWY5Yjc2MHBqMDluNzJ2ajliYzVnNjBvMzIwMDA1ZWkxMmQ0czAwMDAwXCIsXCIzXCI6XCIzdTVnZzAwMDAwMDAwMDd2c2RoNjBvMzZzMXI0aWIyOTFoNWlxYW1lcGo3bTZvNzA1dmo2MG82YTloZ3UxaXVkcGg1a3FiaWE5Z2xyMmltYXB0NW1hcGowOW43MnZqOWJjNWc2MG8zNDAwMGU4ZWZqY3NyZzAwMDBcIixcIjRcIjpcIjdzYjEwMDAwMDAwMDAwZnZvcjJjMWc2ZG8zbTk0bTRpMzJiNWtsY3RqNmZjZGdlMGJ2NmMxZ2NrajMxMjM2c3JqMmI5a240a2oxYm03NTRpYjJiaGg3aWtqZWU5b21tMnBqMDluNzJ2ajliYzVnNjBvMzQwMDA1OXIyZjc0djAwMDAwXCIsXCI1XCI6XCJmb20yMDAwMDAwMDAwMHZ2aG00bzMwY3JnN2NpOWM5NDY0bWI5YXByNmN1b3IwczBudWNvMzBwOTY2MjQ2ZnBuNjRtajllOTk2Mm5jOWE1MzZpcmk2ZXBpNWl1amlkOWtrbWNwajA5bjcydmo5YmM1ZzYwbzM0MDAwOXV0bDNuNTAwMDAwMFwiLFwiNlwiOlwidmhjNDAwMDAwMDAwMDF2djNjOWc2MHBuMGVwNGlvaThjOWNtaWxqbWNwdGhtMW8xZnNwZzYxaWljYzQ4Y2pqZWM5ZDZpc2lpYzVlb2lrYmlkOXNtOGtqcWVwaDVtYXBqMDluNzJ2ajliYzVnNjBvMzQwMDBjdG1oYzJzdWcwMDAwXCIsXCI3XCI6XCIxdjJvODAwMDAwMDAwMDN2dTZvajBjMWplMHRpOTVoNGdvaXBkNWI3Y3BqcjNjM2cydnBqMGMzNTRvbzhncGY2c29pcWQ1cDU0b2F0aDU5NTRyMmVmNWttc3NhNmFwdjdtYXBqMDluNzJ2ajliYzVnNjBvMzQwMDA3bXFvOGYwdmcwMDAwXCIsXCI4XCI6XCIzdTVnZzAwMDAwMDAwMDd2c2RoNjBvMzZzMXI0aWIyOTFoNWlxYW1lcGo3bTZvNzA1dmo2MG82YTloZ3AxaTZkcGg1a3FiaWE5Z2xyMmloYXA4bnN2MnVmNWttc3NhNmFwdjdtYXBqMDluNzJ2ajliYzVnNjBvMzQwMDAyZHM4ZjNkMGcwMDAwXCIsXCI5XCI6XCI3c2IxMDAwMDAwMDAwMGZ2b3IyYzFnNmRvM205NG00aTMyYjVrbGN0ajZmY2RnZTBidjZjMWdja2ozMTIzNGNyajJiOWtuNGtqMWJtNTU0c2oxZTU0bW1jcGowOW43MnZqOWJjNWc2MG8zNDAwMDc3ZzllaWtzZzAwMDBcIixcIjEwXCI6XCJ2aGM0MDAwMDAwMDAwMXZ2M2M5ZzYwcG4wZXA0aW9pOGM5Y21pbGptY3B0aG0xbzFmc3BnNjFpaWNjN2djdmplYzlkNmlzaWljNWVva2thaWE5bDY2MnBqMDluNzJ2ajliYzVnNjBvMzQwMDAzMjlzaXZvczAwMDAwXCIsXCIxMVwiOlwidmhjNDAwMDAwMDAwMDF2djNjOWc2MHBuMGVwNGlvaThjOWNtaWxqbWNwdGhtMW8xZnNwZzYxaWljYzdnY3ZqZWM5ZDZpc2lpYzVlb2lsanE4OWttNjJwajA5bjcydmo5YmM1ZzYwbzM0MDAwOGNvMDRlc3MwMDAwMFwiLFwiMTJcIjpcIjN1NWdnMDAwMDAwMDAwN3ZzZGg2MG8zNnMxcjRpYjI5MWg1aXFhbWVwajdtNm83MDV2ajYwbzZhOWhncDFpNmRwaDVrcWJpYTlnbHIzaWk5OWttY2lpMWRoYjdraGplOTlrbW0ycGowOW43MnZqOWJjNWc2MG8zNDAwMGZwYzgyNWwwZzAwMDBcIixcIjEzXCI6XCIxdjJvODAwMDAwMDAwMDN2Z2JnZTExNjAzMDMwNXEybmthNDF0bjIwOTZ1M20wcW5oNG9sNGc2ZDRrNm5udXV1Z2lpNG9lczUzbGg0cmFvMXBjZGwycXM1dW44cDZ0aHFjZWxrNDRhNXB2NzU1b2xkaWc5MzFzM3Q1aTA3OHUwMWg4M3I3bjkyZzAwMDBcIixcIjE0XCI6XCJ2aGM0MDAwMDAwMDAwMXZvNW80b2dsMDFnMWcydDFicTUyMGV0b2ZjYW1kam4xNWFnY2M2ZDg1NmlmMXZ0djZzMGdoc3FmODQzbmxramFvMzk0ZHRicmM1dWRhZTlycm1vMTk5anByMzdjNDhqYXE4OThlbjl1MWMwMW92dG9sNWJzbDFnMDAwMFwiLFwiMTVcIjpcImZvbTIwMDAwMDAwMDAwdnZobTRvMzBjcmc3Y2k5Yzk0NjRtYjlhcHI2Y3VvcjBzMG51Y28zMHA5NjYyNDZmcG42NG1qOWU5OTYybmNlYTk1NmlwaWE4NW01NHZpbWY1c2ttY3BqMDluNzJ2ajliYzVnNjBvMzQwMDAxajU0M3U1MDAwMDAwXCJ9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotNyxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MT0dcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sb2dbYXhpc1xcdTAwM2R5XVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTcsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTE9HXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbG9nW2F4aXNcXHUwMDNkeV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi02LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xPR1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xvZ1theGlzXFx1MDAzZHldXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotNSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMSxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTQsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTE9HXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbG9nW2F4aXNcXHUwMDNkeV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi00LFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QxLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotNCxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTMsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDEscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi0zLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xPR1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xvZ1theGlzXFx1MDAzZHldXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotMyxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMSxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTMsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDIscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi0zLFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotMixcInpcIjotNSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTIsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDEscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi0yLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QyLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotMixcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTIsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi0xLFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotMSxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6LTEsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDMscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo0LFwieVwiOi0xLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NCxcInlcIjotMSxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6MCxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6MCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjQsXCJ5XCI6MCxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xMSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xMCxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xMCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xMCxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi05LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTksXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotOSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi05LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTksXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotOCxcInpcIjotNixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi04LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTgsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotOCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi04LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTgsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotOCxcInpcIjowLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QxLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotNCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTMsXCJ6XCI6LTUsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDIscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0zLFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QxLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotMyxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTMsXCJ6XCI6LTIsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDMscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0zLFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotMixcInpcIjotNSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTIsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDIscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0yLFwielwiOi0zLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotMixcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTIsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDUscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xLFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotMSxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6LTEsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo1LFwieVwiOi0xLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q1LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NSxcInlcIjotMSxcInpcIjotMSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjUsXCJ5XCI6MCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi0xMCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi05LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTksXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJESVJUXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpkaXJ0XCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotOSxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkRJUlRcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmRpcnRcIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi05LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTksXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotOCxcInpcIjotNixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi04LFwielwiOi01LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTgsXCJ6XCI6LTQsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotOCxcInpcIjotMyxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi04LFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTgsXCJ6XCI6LTEsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotOCxcInpcIjowLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2QzLHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotMyxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMixwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTMsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDMscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi0zLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q0LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotMixcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkMyxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTIsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDQscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi0yLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiT0FLX0xFQVZFU1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6b2FrX2xlYXZlc1tkaXN0YW5jZVxcdTAwM2Q1LHBlcnNpc3RlbnRcXHUwMDNkZmFsc2Usd2F0ZXJsb2dnZWRcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NixcInlcIjotMSxcInpcIjotNCxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIk9BS19MRUFWRVNcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0Om9ha19sZWF2ZXNbZGlzdGFuY2VcXHUwMDNkNCxwZXJzaXN0ZW50XFx1MDAzZGZhbHNlLHdhdGVybG9nZ2VkXFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjYsXCJ5XCI6LTEsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJPQUtfTEVBVkVTXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpvYWtfbGVhdmVzW2Rpc3RhbmNlXFx1MDAzZDUscGVyc2lzdGVudFxcdTAwM2RmYWxzZSx3YXRlcmxvZ2dlZFxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo2LFwieVwiOi0xLFwielwiOi0yLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiRElSVFwiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6ZGlydFwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjcsXCJ5XCI6LTksXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NyxcInlcIjotOCxcInpcIjotNSxcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo3LFwieVwiOi04LFwielwiOi00LFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfSx7XCJtYXRlcmlhbFwiOlwiR1JBU1NfQkxPQ0tcIixcImJsb2NrRGF0YVwiOlwibWluZWNyYWZ0OmdyYXNzX2Jsb2NrW3Nub3d5XFx1MDAzZGZhbHNlXVwiLFwiYmlvbWVcIjpcIlBMQUlOU1wiLFwic3RhdGVUeXBlXCI6XCJOT1JNQUxcIixcImRhdGFUeXBlXCI6XCJOT1JNQUxcIixcImJhc2VDb2xvclwiOlwiQ29sb3I6W2FyZ2IweEZGRkZGRkZGXVwiLFwicG90aW9uRWZmZWN0XCI6XCJDcmFmdFBvdGlvbkVmZmVjdFR5cGVbbWluZWNyYWZ0OnNwZWVkXVwiLFwiY29tbWFuZFwiOlwiXCIsXCJjb21tYW5kQmxvY2tOYW1lXCI6XCJcIixcImVudGl0eVwiOlwiQ09XXCIsXCJleGl0TG9jYXRpb25cIjpcIlwiLFwiZmxvd2VyXCI6XCJSRURfRFlFOjBcIixcInBsYXlpbmdcIjpcIk1VU0lDX0RJU0NfQ0hJUlBcIixcInNpZ25MaW5lc1wiOltdLFwicm90YXRlRmFjZVwiOlwiTk9SVEhcIixcInNrdWxsT3duZXJcIjpcIk5vdGNoXCIsXCJza3VsbFR5cGVcIjpcIlBMQVlFUlwiLFwiY2hhcmdlc1wiOjAsXCJpbnZlbnRvcnlcIjp7fSxcInZlcnNpb25cIjoxLFwieFwiOjcsXCJ5XCI6LTgsXCJ6XCI6LTMsXCJicmV3aW5nVGltZVwiOjAsXCJmdWVsTGV2ZWxcIjowLFwiZGVsYXlcIjowLFwiZGF0YVwiOjAsXCJidXJuVGltZVwiOjAsXCJjb29rVGltZVwiOjAsXCJwYXR0ZXJuc1wiOltdLFwiZXhhY3RUZWxlcG9ydFwiOnRydWV9LHtcIm1hdGVyaWFsXCI6XCJHUkFTU19CTE9DS1wiLFwiYmxvY2tEYXRhXCI6XCJtaW5lY3JhZnQ6Z3Jhc3NfYmxvY2tbc25vd3lcXHUwMDNkZmFsc2VdXCIsXCJiaW9tZVwiOlwiUExBSU5TXCIsXCJzdGF0ZVR5cGVcIjpcIk5PUk1BTFwiLFwiZGF0YVR5cGVcIjpcIk5PUk1BTFwiLFwiYmFzZUNvbG9yXCI6XCJDb2xvcjpbYXJnYjB4RkZGRkZGRkZdXCIsXCJwb3Rpb25FZmZlY3RcIjpcIkNyYWZ0UG90aW9uRWZmZWN0VHlwZVttaW5lY3JhZnQ6c3BlZWRdXCIsXCJjb21tYW5kXCI6XCJcIixcImNvbW1hbmRCbG9ja05hbWVcIjpcIlwiLFwiZW50aXR5XCI6XCJDT1dcIixcImV4aXRMb2NhdGlvblwiOlwiXCIsXCJmbG93ZXJcIjpcIlJFRF9EWUU6MFwiLFwicGxheWluZ1wiOlwiTVVTSUNfRElTQ19DSElSUFwiLFwic2lnbkxpbmVzXCI6W10sXCJyb3RhdGVGYWNlXCI6XCJOT1JUSFwiLFwic2t1bGxPd25lclwiOlwiTm90Y2hcIixcInNrdWxsVHlwZVwiOlwiUExBWUVSXCIsXCJjaGFyZ2VzXCI6MCxcImludmVudG9yeVwiOnt9LFwidmVyc2lvblwiOjEsXCJ4XCI6NyxcInlcIjotOCxcInpcIjotMixcImJyZXdpbmdUaW1lXCI6MCxcImZ1ZWxMZXZlbFwiOjAsXCJkZWxheVwiOjAsXCJkYXRhXCI6MCxcImJ1cm5UaW1lXCI6MCxcImNvb2tUaW1lXCI6MCxcInBhdHRlcm5zXCI6W10sXCJleGFjdFRlbGVwb3J0XCI6dHJ1ZX0se1wibWF0ZXJpYWxcIjpcIkdSQVNTX0JMT0NLXCIsXCJibG9ja0RhdGFcIjpcIm1pbmVjcmFmdDpncmFzc19ibG9ja1tzbm93eVxcdTAwM2RmYWxzZV1cIixcImJpb21lXCI6XCJQTEFJTlNcIixcInN0YXRlVHlwZVwiOlwiTk9STUFMXCIsXCJkYXRhVHlwZVwiOlwiTk9STUFMXCIsXCJiYXNlQ29sb3JcIjpcIkNvbG9yOlthcmdiMHhGRkZGRkZGRl1cIixcInBvdGlvbkVmZmVjdFwiOlwiQ3JhZnRQb3Rpb25FZmZlY3RUeXBlW21pbmVjcmFmdDpzcGVlZF1cIixcImNvbW1hbmRcIjpcIlwiLFwiY29tbWFuZEJsb2NrTmFtZVwiOlwiXCIsXCJlbnRpdHlcIjpcIkNPV1wiLFwiZXhpdExvY2F0aW9uXCI6XCJcIixcImZsb3dlclwiOlwiUkVEX0RZRTowXCIsXCJwbGF5aW5nXCI6XCJNVVNJQ19ESVNDX0NISVJQXCIsXCJzaWduTGluZXNcIjpbXSxcInJvdGF0ZUZhY2VcIjpcIk5PUlRIXCIsXCJza3VsbE93bmVyXCI6XCJOb3RjaFwiLFwic2t1bGxUeXBlXCI6XCJQTEFZRVJcIixcImNoYXJnZXNcIjowLFwiaW52ZW50b3J5XCI6e30sXCJ2ZXJzaW9uXCI6MSxcInhcIjo3LFwieVwiOi04LFwielwiOi0xLFwiYnJld2luZ1RpbWVcIjowLFwiZnVlbExldmVsXCI6MCxcImRlbGF5XCI6MCxcImRhdGFcIjowLFwiYnVyblRpbWVcIjowLFwiY29va1RpbWVcIjowLFwicGF0dGVybnNcIjpbXSxcImV4YWN0VGVsZXBvcnRcIjp0cnVlfV0iLCJlbnRpdGllcyI6IltdIiwib3JpZ2luTG9jYXRpb24iOiI0Oi03Oi01OmlzbGFuZF9ub3JtYWxfd29ybGQ6LTAuMDc5MzM4NzoyLjI0OTk3OTciLCJ0aW1lIjoxNzI1NjA1OTk5MDA0LCJ2ZXJzaW9uIjoxfQ==
\ No newline at end of file