package com.keenant.tabbed.util;

import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.comphenix.protocol.wrappers.WrappedSignedProperty;
import com.google.common.base.Charsets;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.io.CharStreams;
import com.keenant.tabbed.Tabbed;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;

import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;

/**
 * Some Skin utils.
 */
public class Skins {
    public static final List<Skin> DOT_SKINS;
    public static final ArrayListMultimap<EntityType,Skin> MOB_SKINS;
    public static final Skin DEFAULT_SKIN;

    public static final Skin DECOR_TV;
    public static final Skin DECOR_RADIO;
    public static final Skin DECOR_SKULL;
    public static final Skin DECOR_AQUARIUM;
    public static final Skin DECOR_CLOCK;
    public static final Skin DECOR_PRESENT;
    public static final Skin DECOR_DOUGHNUT;

    public static final Skin BLOCK_COBBLE;
    public static final Skin BLOCK_LOG;

    private static final String profileUrl = "https://sessionserver.mojang.com/session/minecraft/profile/";
    private static final LoadingCache<String, String> profileCache;

    static {
        DEFAULT_SKIN = new Skin("eyJ0aW1lc3RhbXAiOjE0MTEyNjg3OTI3NjUsInByb2ZpbGVJZCI6IjNmYmVjN2RkMGE1ZjQwYmY5ZDExODg1YTU0NTA3MTEyIiwicHJvZmlsZU5hbWUiOiJsYXN0X3VzZXJuYW1lIiwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzg0N2I1Mjc5OTg0NjUxNTRhZDZjMjM4YTFlM2MyZGQzZTMyOTY1MzUyZTNhNjRmMzZlMTZhOTQwNWFiOCJ9fX0=", "u8sG8tlbmiekrfAdQjy4nXIcCfNdnUZzXSx9BE1X5K27NiUvE1dDNIeBBSPdZzQG1kHGijuokuHPdNi/KXHZkQM7OJ4aCu5JiUoOY28uz3wZhW4D+KG3dH4ei5ww2KwvjcqVL7LFKfr/ONU5Hvi7MIIty1eKpoGDYpWj3WjnbN4ye5Zo88I2ZEkP1wBw2eDDN4P3YEDYTumQndcbXFPuRRTntoGdZq3N5EBKfDZxlw4L3pgkcSLU5rWkd5UH4ZUOHAP/VaJ04mpFLsFXzzdU4xNZ5fthCwxwVBNLtHRWO26k/qcVBzvEXtKGFJmxfLGCzXScET/OjUBak/JEkkRG2m+kpmBMgFRNtjyZgQ1w08U6HHnLTiAiio3JswPlW5v56pGWRHQT5XWSkfnrXDalxtSmPnB5LmacpIImKgL8V9wLnWvBzI7SHjlyQbbgd+kUOkLlu7+717ySDEJwsFJekfuR6N/rpcYgNZYrxDwe4w57uDPlwNL6cJPfNUHV7WEbIU1pMgxsxaXe8WSvV87qLsR7H06xocl2C0JFfe2jZR4Zh3k9xzEnfCeFKBgGb4lrOWBu1eDWYgtKV67M2Y+B3W5pjuAjwAxn0waODtEn/3jKPbc/sxbPvljUCw65X+ok0UUN1eOwXV5l2EGzn05t3Yhwq19/GxARg63ISGE8CKw=");

        DECOR_TV = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQzOTgzMjQsInByb2ZpbGVJZCI6IjMyOTVlNzYzOGZmZTQ5NDJhZWNkMjZjMjc3MWE5MTExIiwicHJvZmlsZU5hbWUiOiJzeXNmYWlsdXJlIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS80NWU5YmQ0MjVmYmQzOWE5NGMzMGJmNWFlYjMwMWRiMTg2NzEzMzIyNzYxZmM4MmE3NmZiNjE2ODc5MzQ5MCJ9fX0=", "YRVA6M7rCgBNJ/ZhfOwgXk+1ybMyrFRLIwFh9kQTVRF26ruPVsLPvAc6iAuoHVjRIHE6MD1agg3gznIZ0YxIGfkQNIaTcqag0N2BzyrDmaq718KTFP1aKN+TtnAsgDH09Xw+Em+xp+0ubnoB1e9yVhf2/oLOsAgzRgAJb9pU35st0Qts9vzOu5228cPQ/FXZkh9rcNjFiXcrrPClNL86y4DNj1E0GMMgXREI2XB6itUl9Hk6Db93VIcXmgLQtbOGqDbf6+OmGrGkQOqerjhBgmLIY1/7tqtSlQrAb7BvhlBVQnwpLxxBmWab2TqYZkze0JAfldZ+FiDMT8Alw/kz7MS8BpWoVATXuNyb5HmxWwDNMZsBuAHDJC4Pi/gnFVEAO6HFN36iR8Rh9a7x0c2MeVzY+0AUmSjJvVIV+tOMrh7PDYgSSrAkdK7HFiI8Ois1rQINogTKO7wxa/MlctCZrVYtehrHGppq4hgz+fdv63t1c5CGda90ubA5VnrdcBkwE9seESgyrZzOC7Flr+EUfDbtaGEcxwEwEUp9/vh0Btm7tEqwJtEJockveHF6eNnVPavRi+vgl4Jzdb1pueg4qRMe4kYKP7cNWa0uRm5Ocze7D8jPMmEM7k0wRE6WOgPGDUXRWEe+uSLQxg4vqx3LN2fI+nOXe74aWJ9PY+pU6QQ=");
        DECOR_RADIO = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ0NTU2NDksInByb2ZpbGVJZCI6IjhlMzllYzNmMmFmNDQ4ZDhhZTM5MjVlOWI4NTYxNTI3IiwicHJvZmlsZU5hbWUiOiJ1aW96Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS80YzNjODUxNzUxNmY4ZDhlODA2Nzc4MWU3YzYyZWVhMjdkZTQ3OGIxNGM0YTY4YzhlOGMxYWQ4YWYxYmFlMjEifX19", "jkoAzeaIKqUujz9VS2K7uVOIFsHTKK5SIEelRIPHxovgonk4EDF+TaOhqcwNcvpFVSNqyS/cNRebP1l71y3Y3kEXZA+Y1pzJ08SCWe2qqst+QJwCuvFxemcuNRSvpo93las7kFb6zAV0Olp81sFP94ulzCj/vz2EDxeMGXDV2OR0PMVMtD7vbBv9SJBO+KUNWAUttR5Niu06JcwmUxIyU9iJUfMT7bY2PB7RKrlcyfYaJdzlJjqMXaGLF3jZnu1eaCBJasQg7FUVWsV561q1a3G9e/pyNGJ+g/7Xy3abGuUU9NpjBQcxli94UEoxdweccGNeXWPMUDj1ZyJ6RHPvPAfXwKvHDFpuPAtMsPZAeoWPHE42hTAGb31AschR1AOWPUO+2uYla7gQtPIMH6m7J258mbYeMKorQbZf+zJloM3xEqRW7vdsqhY3fAMScbIn2yUjyDaIExdJGwPpC78ZRW4vJYWsbDapOv1c4TWPE26ZPJI+PazxQGvwP9IpeZ+/sTBiHcZL42xCISa/e9lQS0WbOEWlqoRLO3zkguczcOrEFauAm9xBgHesG9VmesqpOqZT+JnYfT4+g4egHk6KB0gp0cgQn9fqvAI+WsyWJRtoZGF2OuBipnf1yD6Ltinwuq3yZVL350YNVmH4UATkvIuQFup2KiB9asmuYgcUMYo=");
        DECOR_SKULL = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ1Nzc2MjcsInByb2ZpbGVJZCI6IjFiMWZiOTE3Nzc1YzQwY2JhYTdhM2Q0Zjk1ZmIyNTU1IiwicHJvZmlsZU5hbWUiOiJWaXJlIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84ZGZhYzJmNDNjODU2NmU2OTY1ZGVlMDNhMTZkZGM5MjJkN2M4MWM5YzI0MjlkZjcxNmUzYzNjODFiZTk0In19fQ==", "WLwXmNoovM0SvWP6dYgCs+8sH/WcPNrlAKw9IGxsN+xsLHjRzZetz/ZsEE85sfttF2sFtHIvZxBefhfd9ONKXy8cxDygd+MjkGHuFClsX8M/WGPewqpL+wTURTXPa7wPRNAKKYcT1QXUp9NokkVDviuogIEjd95QI0PmDowcyfkk1H/k2wDpt8mV1kUXtOEmXruFUK9jQLsQZDMmXmlXqCnGcsXSFexCbcZZPe1UB8VN+7QvLaUOLePzQ7T8W9OkKc6CMpyC8uwnswseVMk3L5xY39jyZ840HGWNqCrh1OmJylnl/e7fY/YGS6qaAcYKuKbx5Tgxax3N95Yb8iICA2BotXv8JGOtm9Vv400ijrhDWjo67hSc9bbeO9M2229KQ4x/54lPG20iC/yVcsfsdF9Rdbc5OSyab3VKFmPogycVTgrXoeecx3iP/ywWTfMWunYNG7XsEu/Rv20J7Kdjg7k8p5t5c1cft2aZ/IppHIiFbXp0+r5Zp4BEnfJ9KDT2leSkQ4KDL7ukTSs24QyHITfIX0Wx6Fv2Wyq0Pf4zmuBCOTKE2gKuvUCEHPvNh+HAyI9HD4+4XmLExf757AU9Ig9PbJh8ExojtKoYsorhvSkIcd2rpTPvPu12Ykcu4VPzPKVwXHObRIGEZBqox2vSXkQdjVyqA+aJJTAFP3ynnrs=");
        DECOR_AQUARIUM = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ2MDU2MzgsInByb2ZpbGVJZCI6IjlhZTY2NmIxNDM2ZTQ0YjFiOTU1ZDc4ODE3Y2ExMjVlIiwicHJvZmlsZU5hbWUiOiJGaXNoMTgxIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jMjg0N2NkNTcxN2U1ZjVhNjRlMWJhOWNiNDgxZGM5ZTIyYzc4Y2EyM2Y4NTE2ZDU1M2Y1NTQxMmZhMTEzZTAifX19", "gDywQIMil1Hlq2hWECFeB3HwQquxKGYYd9+e/XxYd1ctLbXIyqMh1bhWjNLuklpQvChmF5mKjfGG6/eSAoC5MipRI84Gt1OHus2EybWky1yufe7uhbEASGAuUKhGzmIwElFNvpjtSTEZVaSNMnf0vRrg+hOeTfb/ejHMwWcvqz+phtJVQzX+uoX+j9Aze8Y6O3c+opav5vGhfTN1K58Zh+aUdYJvizLNJ2iUQkLxMGO9xh9Atk8nTO+Ml+FigQ2FEEwMO3MQuNoX+mp4208Hwmw5QjiYxRsIcz4qdAvf0Nn8e52I35pBHcR4ut2yoh6DcnJCj44Asx4xGX9Xcyr9IBroELghIZUbWfrcOQPbemlUG/KGvIPkg1I8Ssfg4XyfY3cZ90/MBK5+sXCN+SWWSxTljLu5phJkXKCJFdLejBdr8hv13D8b3z7z0yeLgSIYnCyynX6hxAm+WbsXpKvSDPAL80q8xc4J/epyV900jKmubXSSxHx2mmhdieVTLkjAFLzCu0tR+5e6E2P0LofzGQssrJNwGtijemEPUTInd9vGjPDNPno8iGuZ1dMi8mkbodO8iOGPfE+oCQPrYbAYGfCAme2MD5k10FIHZ08gDJ4uC53Cqq5VuHwp+3luW9PO8xLuxSTc5+JizfoImNb74qp7FDAAyAH3vbcWWwYkxBg=");
        DECOR_CLOCK = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ2NTYyNDQsInByb2ZpbGVJZCI6IjJkYjExZjVlOWUwNTRmODRhNmJlOTYwY2E5M2JlOTYwIiwicHJvZmlsZU5hbWUiOiJPbGFmX0MiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2E4MmRjNGM0NmQzNTBkNDJkNzM3MmEyYTExOGI5YTY0MjFmN2ViMmEzOGJlM2FmNmE3NzU5MjU5ZjZhMTcifX19", "A8CffUydp5Q5bJsmiF0EWwbECeT+Bdfp9eYBgjwqntntSOfiGm9EQFVGmbpa5FgVDfmm65yAlK+TOa5PRuVpjzLozsXXfKMLB9TsKOC0MIN13tYTGWxOBBKfaz9nI1Fsd+1TVFIY+KVscGQsKJXVbGilB1Xbdu/f/btM0z2uTuBIYUuTtYOEHF7yhurW3EsuPn7qG0evPNtl0wOOqrrH/u1HKyowOAWTtRHW5aSn/WQoTDPuVsg0M0p31RBQvjfYdFDK3gN8YpLoE49pkALBuzuFufMYy9qaKNnk7qnMsQhBDIoTOuqPJbvSuPB5ESvLHw40f7oKcx1Cj9K0FrSdcWBmgCrow0rtNIDIgHMJNZGZ2/evrQ/Cp8woTsRSULdbFYf+4L7EgzKHEEVQZ4u30v1DAnZMUnuS0T1yrXfGHJ3zzvS0MjmoB/xGszx23KvqYYSoh0CQiiXzne3KF6VOPm+Fb6uZqPLqgoKbeWxAiN2EEkb2UIzGyhOZg33Ith5YH+BZGd2ZR4hBPHOj0ncyT7dAaqf2ugyk2H6pGXvjtZMx7x6yVPPQn0Lb2NZfcH1vzX/a1ngwoCC+IOBLzQ0QIRuerMWWGqKECp1ORH2R9dWZ13hYf5D7bDTdjRkWT61bjblz0XtUqfZc8sCECkfSsKDeAVU4VJkFyD+MZX7TD2U=");
        DECOR_PRESENT = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ3MDgzNTEsInByb2ZpbGVJZCI6IjZhNmM1YjAzOGQ1MjQyZDhiOWFmZGIwYjIwZjYxNjcyIiwicHJvZmlsZU5hbWUiOiJIYW5uYWg0ODQ4Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yZjhhNGY4YzMxZjk2NDQ3MjZiNzRjM2ExNjE2OWM1MmQyYjIzMjI0NjA5YzlmYzJjYWFlYmRmODg4NjQ1In19fQ==", "mUiH6CkQX8xnIaCzCP/xjjvTxNf0l6NzTgD0fIwC/xUz6gXkIAUlJALW46qNkGMhOrDYX6Ln7twspcviScSjp/Kz0j706OKXprKfkEW72WEMkGw3WImFWVjxavV8/XB2dlMcKcGLnZm/D95jHLWfCJl021Hvkd9zaV5Y2sYdTGxWEs4j2bv8DWS44k3tTxavG6+20Nb/M5vJL3kEHT2zbVLeprZDbu5ZUJ+tnWThVmh9Iu3TzRGdTsY7GmqaaF4imF8ILrLqVjn0lD3I9NKOT1dvAQNgsbPmUmFP+mwyd0XNmoUP8CEqxI+Tea1cCBl1LSht8LaX+w2IxVoTlF8D8S8saZsxokjzVe8uZnEUTmp3eqpfpWrD7Il2o8RiUQYaWzPBcC3/kJKODpRmGGBIepomdnTblv4KbCxzky1v7eP0nhs7BZTxJKW7+hPPeS3IAhMANeG7FcofUzAuD/OPg0CZApZkLH4KPuEhSCXZBCPTCtk3fzCPVqdKf2rfHPbSTD7nVo58h7UOgIIMlYDvIZR+STPB1xtTKSFNYh7oVXkD4t+unGvgC8odvkRcBLzB2riTEmfVwvpjUFiS0jFZYJN8YKHrgfp7WmRArSalH8XlJm4MHe5rXa2oHCeHH7vJ4/des/PpTcEidByryFi42atlpcS3JQT1fZYCuhf22a8=");
        DECOR_DOUGHNUT = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ3NjUxNjYsInByb2ZpbGVJZCI6ImVmYTRhMzQxYjY0ZjQ4NzVhZWEzMzZhN2VjNjJkMDUyIiwicHJvZmlsZU5hbWUiOiJEb3VnaG51dERvZ2ciLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2ZiNGQ4NDIxNDY5N2JkOGExZjVhZTczOGQxOTA3MDg0NmQzMmI4ZDRiNDIxYTA2ZDY5MjFjZmViMmRmODg0ZiJ9fX0=", "yIos4C5p/ZrRmpXPO93Hu/va9ZAOeMkEZE7vI/HAbe5TACsuUwSL1XQMwonOAvOkNlhO9MtSW39DT+wG8ZYPRTLdPj/hvJkYvZzBWvPz91vRRHhvhplJkrzvicytSWwUfHBZ/uHXzfFyZ5zZ8FiZYeHXOekgyWHkWZV3QPtjxiFk8NYNnZem011FsqHKSrRxqvwY3myRhoQeCW8eEgak7qvipna/WECMkBKWBjPPxptE7oKyOsfRAlnNi6PM6ntjMkfRci12ltdlPIdw7dk0dLxpCM95+zI00iLkN/sxJD8YvIXSJf84qz+2abfbvn0gj1vU8GP6g5eeKY9y+35WBvGGshOjUwChKoafkddK2ltYOSNRkmscXKWaQR0Jw6ls3R9OZ9FfYCu/ILihtTo1qDIMTuSW0zStRpik0TWM/EcncoZQSWt446HMFfXs5gJZnbcAkoVE1M5MnoNHt49zPk+LqT4SGlclshEvvSi4KU4erpeJijT0B2FOvTrfq4tRqwcX5IVcKGYHTkOgStcxjSZm5Rxzbq7VWxZTvEGxnXBl1Ou+ZhUF4+9fAOwRhb4Q27T4SeD/biIWQY1PMQGEQ35g05rgRsBATIP/+P0f/IFDnd/CLm2qfrO4dUOoMhtnEqILUi6HaEhzu74tn9SMrHyTgo2z+PPqxmOCAhRZPJI=");

        BLOCK_COBBLE = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ5NDQ0OTQsInByb2ZpbGVJZCI6ImU5ODI3ZjI0NzUwNTQ3YTZhY2M1Yzk5M2FhM2ExZDNhIiwicHJvZmlsZU5hbWUiOiJDb2JibGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdhMzE5MmRkNzdkZTkxZThhODdhNDFmYzgyNzk3NTkzNmY5MWEyNTdhMjQyMjI2MGRiNGZkMzI0MjQyYWIzNjEifX19", "A3C0HcqM0wwASEyw4Dl2izjCBGf9Q4SHLXCBwXb4SafPCZqDE9o1JnKdJhw9hhcpMeaxQ57WbnxpqTgRQ1aIorDp/o2QdRHq+CtKt6by3EHWAvzJPqMfRHBmaa3qq7RjcAOgG3T6r0RqQNR0aKyYQStdTwezOA0nekswS/6wOD+DTdJ454hTrPsDDxQoTCOnykUpilO6Lcfw3S/aSyPypI9Q7rXAQY+o/panCx0fI0S8ovwE6ehWWITHwoiDZKpQhVfZ2ZG5wkKQnVh0zesCGi8h/KqP+JgAZXN/kueDQB2e+HUhBTZ9fMTRqAVWaw0AhR5hyJQC938HSSXcp0nYEixaNn0WZyJiZKpJ2CCNWAVu614LrJkYdZiFQMwdxDSSgg7qCQ5z/1a8s7mALT0ZQSb6ncRWWdhqc7zV4++0BoJ92Gmf3JbaTLcdUzyapCFLv5OzwLF17h8f2a2be0BhlMgVnkOx8Pe9FmybD0v4QTCVX52MYgmQZ5IlI8meelvwXwgs739+kqLNXooNodzt7xViAZ+4dRFQnlcqtzt1TJkeLdjIJy0ARlwoBU+RBhF2Ac61jRhpKhH9YXIrQ5S2PVL7z7IBK1YOULKQSR7QTTmBh1S/MwdrfJ9yFD6u1wZ8wQ6Mug8cYHVwDE5cYdPMM+YSgq8f+myXSCV7cKvjtVE=");
        BLOCK_LOG = new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ5Nzc0MzksInByb2ZpbGVJZCI6ImNhN2E2N2RlYzQ2OTQ4NGJhZTI2NzU1MGJkYzljZGI4IiwicHJvZmlsZU5hbWUiOiJNaWdodHlNZWdhIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zNTFhZmFmYzZmNjQ2ZGQ5ZmY5Yzc3NGE4MmVlODlkYTcwZDMzMjM3MjJjZDAyY2JjZjNkYzYxYWU3MTdiYmMifX19", "FVrl7HW7zRtk8XnOoJdk2zqN5EOD6JqVS5axu5khM9QcRH0JOQuys+Y8PifJeB7dXkYJGcy7rscQyujIPOLnWJ9+endtjJTIalNrsMvOh1VUyQjQfj3ms8SpDvKwX6Mea4FW8t/RDHTWZ2TBHgcZ7ehhOJIv+0o7IKbOkRGm5GhuN9jMBDewU6bksqugqiv4z4xAcrT3VNLU3MFSOTVC5iVwGEfXVQ2liKOyRKhKl2ClpEqGkCM6i7Hr2dKROZkpa1RR2HD6lpOocDg70j2xAW8tRPTel6nW2imI0ujMEU+Tdjgqx22PAtooMLzSicPzh7Jyd4a9aznib0/1B89TnNvpx2tr4/QvHAeUxbOgDwOxIzqU+4l7IeXeU68Y2+pc12Ah7vRTOSAY2bYg72phAZX/uZ6+RJRKph0IAdGICWqdF6jqfhRqy7lxLRc9bfVnn8U08mYvL8eJ0b9X7a4ORydjn74hoRytn35vv/l5qSUfWXMY9+xwsdW2AbvQ25FA5AaKddct+CuXAerOdLbbeBv5f7YHfaKQ3uSyR8cI728g1y4Lx9UMKjCmwQlcA2gJpsb1uSySgvpfUNRuP7g2j5VmKx6hliRLq0LjTmQP8A/MbhBVMQmnaWEXX8narn+tBcIo/eK0txPpCho8TMyOg3U8IC6sz9uEEU5hNfxjr3U=");

        DOT_SKINS = new ArrayList<>();
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc0NTY5MDEsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS85ZjcxNTBkM2U1ZGY3ZjIxNzEyODlmM2M1ODYzYzkyYzJjODkwOGMzMmFkZGM4NmVhN2Y2MWVkODQ3YjY5ZCJ9fX0=", "v4HSztoVOn0TMBHyDymPBItvOpWs8z6twVamfdrE4yhr8HZoBYWzl+qxfWu+8+DNyBSCpN6nr/UQpFErdys9Kk6urIURx8mEeWDXcYOhXrFs7oNpXiD7UvYm4nd+vNr0xbpfQmSXBGIZ+eOei4ThbKdkSIB79mlq0ugbwxCsK2I8kUlUU6+KnsunPr80adcPu9RryAW00Bmta+eP65nIKwUWNKeLb5iHaPq+N/IZ5aKHmLFiSXiWniDB5UAYybkBZFuvosSr4TBpn1pTbEF3PtKpnPM/8mpt+97W1JcCAv0mdFZUr0hT9eMAe3U0r37J4w/RmLd0sCD7zOBX0pIPPIMrXOQ4DfuDbKSJPXyXiLQQrWCHYnOO8+8kiQcoQ427trsb2y+jMwYel2GEU6gS5zOdkkVm8Je6tNxgA8vRGqA8ABW8SVQz7y5spk2CGiTQQbV3EeJwKcZHXAAplkoSB0p8fRE1fEY0+REoETg5TbguZnONm1+PdW/LdLifL2tGClSz6Nb4D513zZuJaFc/dQ7yagJR0cFkuWVuI59ZnoKqiEW+tMsrhn7QwCwGN6eASHd9seNvnTXsGOyZ0iOWFCay7JWOGSMr8iGiYCd92kn4r+UbCJ+OtokHzxFIoEHr2hRnN6thye27/tpP9Is7cmmmrDAKvecGtYfsrCVmTIw="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc1MzgyNDIsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zM2I2NWQ3OGMwYjI5N2RhMzgxYWJlN2JhZmM1ZmE2YzFhZWVhZTY5NDcxZDlhN2JhYWQxZDQ5Y2FmZjVkYjkifX19", "mKqD4+2/uXiIjNmtQDcaGoxghxN3d+YFX5VgVHO1whwWSdEzRtNj3tw5CJOyBZVzQh6GfYqqi38ylfCiBq6t3JAYfaf4BxsDSKyq4yRfNb2JnYQoXGrhIhwMqEEyieXoJUshnBXpneASDf0a+BE5hN29l2vqQGs9VPKggqbt2zpZHyUi6tQMlwOiL+jDKh1bcSr4Wl1Ad8JC/BhUXytOR5u0FWm4vOEsqq8Td7S4Jm+XzgwxogtrpeVhRMFwYL7snjehYF3qh1W9p8PNmJGtZ9AApUctc/qEVnWeCOnDAaKgqozj4ruc4Xk2KMXxj0GmDS6b65C3m71MG+cW/0sS/Rx8vmif9SJum+E8C0X8inNr1nui+3ulmwqC3x0MeVsp81cr+LJIA2dcryKVWV3W6hkYuc3OBUjxrN6NOP495fEsPTFx33eop+pajS8g8Re4drNYHUSy7suzDOq+Yv1XM3hOASN/msCU79/tj1G7HIQ2+RHz2eFZlUWC3IEX+5BM5cf7uK1hhkkbejUkmQSblFGeuTnUdV7Yr6kmn0kXQbHAOIrRvw8d91x1lHoX7yjh+HbG4+RymOcm09MJAfdaut7Q8fINHM7rsiHOT6P0Tj7u1UXUUT9w9YXkVgEPCpjSjsjfkGblq/bzDzg8d/es3aZd00WmqFGjlNMx/EKVf/A="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc2MzUyNTgsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8xMDU3ZTUxYWE2MmFmMjQ4NjdjNjc1Mzc4NmYyMzRkOWJlYjI1NDEyMjM5MTc4YTcxODZkODE4NjkxNmU2YyJ9fX0=", "P6gT4sSTDPKon9h+Qp/JEK1minlQQRi0ReIsYdYFzHiVpOejPxq4MU+0Ebmvs23mgX2tgqUQV8oeHK9xNCoTB4cKrLMq0U7JJ4C6ShCrQXL3Mr6MilVIDUbP4Fvj9uLU9vFCEiyHVnYwKlnIsnDxnOOBFzki5TyaFTVt2LeNrlso6eh9ARpa5PCAevtEDDrZ51ftvoI268RrbQTfgE7coiDYAcEzgSY9Lm5I9vQxIN6VWhh/tUxHHdn8u1eDIbga/I/EuQZ6H+V0E3THmR55ob4mKZ4e3TYWWRRlOIZPOdFcPIluVdkVZG03cQfw8RYsON/dazBnbME55NTF8U6ovyDWcwYhCEJtRtA4yGMOocX06InRDOkmFk8FcomtJF0WFSSZRbNfxEmG1XXZx1VtKX4eYR97Y/ihOBilN+Aq5yQ2AB+JvEPb1NFiQHdu3mQ/E4tJxKgsorFd75xbPBV7A/mPsrUV2GHvLFJzlBQGDYJCWqqIEdRV/V417j0XlpM+D7UBiIekcsDo2ajOg0v5mQqGF5d1+H16K58PgAOkPLmKwy3lTAnpPWhSWfcrSbkon93eezlD6eMZie8YG2ucaPR9TXYXRwLxK9DrCx5ZfzQV4lgeDSsL2i8kNnYmTLZ1DnsVw8IwWifUFGwwapHFWO1thdy5yifjaa/AOWYTJQE="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc3MDY0NTAsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9mODZiZmEyODRjOGM1ODk3NTFiMzQ1NDA1NTc0NGM4YmM0MGVmNjVlYTZiY2RlYzc3NDg2YzllNDE3N2FmOSJ9fX0=", "LGisiuVbSaI9K2dXN9CsV8SxuXieWvCHTg1mdjUh744AYQBbINiEgEbXiFz3cQXzzJttUAW8MPZyBnl4qxJr5QRXd4mB8bOd6nA9eimRPiCIpS8QG6V5YZWdyEvKuV+xpdWNkB8I4kpgkRFBmYsKNWeg3xhmgeA0QP1kpadGKU4oOMb5vzUzsIVbyycjhtGcRNuGKjZaNoHVssuTUpi83xIqdCPI353rsltncBY4Idheig0cUzBXqvLX0K3pVxVgg+jQxRPRlGdLhiMXXs6IkRj1glvcZO4MEMg4IfA/W6Vq4UiVG6RpubS53jDJDt4G4ZrtSVX07rQOowHlnY8xIgtpSAbW2iy+uHu3mvv4lWATZE7irU3QrRg7PUSZYSIihqY+CWp8eJwhs+JxTTBMqCzfv5HvZg73WVj2003JTIIxtqTyrlBxIa+4DnPBhoCJ+N0v7wmLdZQC+PsVaRAC8nrlhgDewfglW9HHhqU8m5LVa5gDyMlkIOo6w8cW3mOCTqndGNf4GmDVCbli5Yu5SptaZXvibCp8HcNmkJdP6yf4h/hKPEvOc1QzQOm4L5+9jJxGtpZA2+sTDXqucI2TPy5XNxd9+GaZP9J/xMiwihqeGYmNXbjCJdFSE5NX71HH0NbIVQu5G2VIFccuKkz0iDP1vl60ZiHZdVhn3DcL1gY="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTY3MTU0NzcsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82YWM4ZDlmNjQ1ZDU1MDE4MzRkZGZjNGY4YjVkMzIxNmQ5NGYyMTEyOWE2OWQ4YmE0YzJiZjE4YzE0MzEyOWQifX19", "D7ub7tuNpCdQckdl9tMJMoSF9XfEAhL0UA4hqMNUcm++uHJviVXbI9ePlg98+N5aisqzVj19/Ld1DaJENFH8eKtQ+lhvzS6Rh+x/JF/QGfDGbWSbx9J9H86LvJpY28hQ/XJ1cFSmtqK5xlnXBNilFj+sAtqCJ+KRdPzwnhgvMNqFMmy5op4qjHaQH4QN997DDF8RWt/9dMzoBDS32sr9RAwzyQzuRsa2mHyMbrrPzST78tcyBWk/dddE5zY9qdt7sDtkar3hDOEMgrid+ChxmAlh/LulaXhpW2S0XEsUEY3uBc58iNrnIWaQedaYYaFFdXPe95BPMaMXtgHblRsOhWlvTAXv9P/CB3v0PKlbfH+kFZyf/OgHfkZan575dAdeEl5mVdT6h7rqriau3MIj/MPUX76xMY+0cbNUGG8Dmw5s6Fw2CnkBuRJWaf9NlSynxm0S/K8BqF/UdGCHc3BVYJ54Bhc65KyN2EONaON2OT2p41Ssvt0Z1UEdb9w+0G+pMYJ9qp/firkdsyQC0VQepymxTDvsmhrA+MC/fb4QL47XucJIFGzhi/qbxj+AjKSt6jhbqYUNE74Y4S8U6fsjIko5dEiQ1eVhq+TOsGAiF0M5M84Jpcyh3B/agvJLic4zIwR0AEE91Ok5ZM8hOimhQf206XvYItw3FqNGjdOsiPw="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc5MTAxMDMsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83NmNiYjYzYWFjMzM2OWE2NzI1ZDQyZmEyMjM4OGFhZmUzYzFiM2YyYTE1MTlkMTA3MjE4NDMxOTgzNWNjYyJ9fX0=", "QUWtd7snPe+R9CWdOgAVlagJE79wO4NUGouqctu+/38p2L2b8PRyFydPURaN7gimsBd3+XM6fd2SqS5goc/wj/YXn7FKrIAWP7Wlq1+638006wKaqtyeIXPIOEGBt5fZ/ooYvKDlVjEkyZ1MHwhUVtkmBDUGkvG05WKOJ0LscyCuUw93qfE9LJjowMLubIw1Aq3gSo0dmcN+KcSebHxP7ppThE14BZBrUr2h5zbu1LLYSDKgjFiO3BFkVKFTXtz8P3/kLprQUycT+ojGf8aye2WjO9GlEkiEEj/MLb31B8ImbOZcFWpmqEGfxctKyK2UNZdVrof+Y2qKpZMMVcn6H1SWCM+H/vt7y0wxs9j6kk+xkFTgQJUJY4Y+lBuT+id5Zm0iP3Ua/dCauhlQNezWvCnvx/ICKtGaibzpsouScj/2XMapnQQBNnurTK6v5viDvlt3vF5sdg/pRYDtqyKF6j0prBjQJBayAmANMIefAVYKwGyHONg+JJi72JEm9srIamp1a3ijfP+gYj/1wKtu38w4t3Yfbr7PRO5ArhZbUKvxw+nIDRPwK41SqARU/j9aWVtsud4ASigNno8KNndH9Q/RIfXXukKBNi69PRvPgG+FKhrpN+U+13Zcdzx0mtkMK+ZGb1Qp05Ko7gDfCFawWQE8wKiFC6mIWzWVSeCMqdQ="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc5NDUxMzEsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jOGM0ZDQ0OGIxZTEzYTI1ZGUzODg0ZGIxN2Q5YjBlZDM4ZGY1ZDEyM2RlNTc3M2YzODIyZWJiNTNhNzYxZTMzIn19fQ==", "gdr3b0Zy/uOlU4VdDuAmnPGhKlg9qImK4zj0qoisJZfiVYrPNPeQCocxVvnkAYqsuTsoe7UUo5/oW/G6Z6AKw+2aapkNbUSwxhdCb2vLmnIt8WGhxTxKcd2OEdCnAmCNgtcF8kF062yK8Enoni2eJI2oV+7MektoFWV5pWBkSmhNMBuw5AraYv9S0+zJTYjX0eANTuNXV+VKnfzMCcKuyOBwqXhNMzL9vmvXTMBJAr9bYx/xH3POO5xhGRrW4NyuWSE9SXhV4NngSR+59kImfZmSA6d9kuK26feZrfRrAME/UV2rjbnT4WWumYzvrroZKJBcq++yBEsVluEagkWzs8UXOtOiNYttp4ETg19aYObXdQSLGFRzTeVCVw4cHVSX6Svbiie/Kyr+s/5fQX7/LCs7uVlclPMrabQiam/DzDRre3hbEHXTfiUCLFQLjyqOQ1+gsPqWN2E/HMj0I9gbKL6qrgRVstvTf97UXqXxXudbOC3EthdgAM4n/lR8s6RqmqwzfdkWAyvYGW2c49tImnEtaltwhzeprURNy/dEbLkU3KYfXx2nVHO7+d67WJscwHiffyxDpLwTWkclIrC7bl2SKyfib1cElDqzXNzKYeqZ595PkiHeBBRjL9CWLTlXcLMWuJtdqvquCXt6oJ7EtalcVhKE6DHXdtBDDYDaWpA="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTc5NjU3ODgsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yYzkzZWJjNzc3YTg3OWVkZWViMTFiOTY2MWNmYTZkNzdkZjk0ZTY1NWM0ZTI4N2Y5NmY0ZmY3OTI1Mjc2In19fQ==", "jL/5arN/cnJbD/DZG9HTo1ckkwZk+XXYUe6QUqbZ0QAm/wecw/mDZqvGwqwnngsgyg0UelxPHvRK3J3z3SdVq7Kavq2UdGkFLr1fe+34bxTnzricHXs4baYDQPOunmbdHgDs+7wwjYJbuQ4nNRE0vQsCmMAe2epchFEDRsiWYuBS0bWCDtQzCBJasGridmH8MIpBmicKQ8OWor9q9T/Pvxh1KEJdpFJuvEGS6xA1J3GxuRT6Iq1elATJNhW3P0MeHU5f/C8N42clLy9K2W8DGm0VuDQbYZmBCaxYcIo3kbkAVVZ6LGHfO8q0kxKIq9q+qXcmn5TQK3BmyjqTGY3PFYRVR9thgA+LWk1s1Ln1jA6ousckJmQJa1eW73mRt91fvRVAMUGm5qrwScL6q2pe3BjBfB3OnilSR3x2cdwM3WkmfN8VuELykJvxHIhDXGCxI5Xg4ghPyZvqW1NNTJmCUokp/fEt+64ZkXoqXzzV88pGZXuVC3ySgg4hdhL4he0tUOVQHttls+lQ2id6R3XaHdh4Hlk/EjSDM5O9auenvKdKAis+vVUV2oqJ+XGb5juD/MOG/INieNfuhQArWeTxyeufsOj8llWEcyYVRVcmJJfjrAagSLuY9OfoNVlSBM2wP92tzQUXQrvHM+mqw9gDlhudOnJAyP6iP8bVsqPN1bU="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTgyODg3MzcsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9lODQzY2ZjM2ExMmNiNjQ0MWY5NjA5MDIwNjM2NzI2NTdlMDhjNmQ4MzQ0YjUyOGE4NDU5YmQ1MTYyYjJkNDgifX19", "nPEbxncNxOm4I6BEsRQ+nsSy5qXKsvKkKLTYHUkze9fQS5JYyiTgAuN/ouljx8fBSbEBdFWxFZq68WxF5h3QDIX7O9x2OFtx9L7vURndZ9pACBRJehy2Kt50eLlEeNMfg1z12J0ODQ36fKbujUYK4ad2ZkM+IOd+QGRV2EDRqFpKC4NMIiXnQ40RYo5GJBAIuW96kioCvaN7+jbpyKW7ub9RAj7dVlXeBbP7cCYvPHb74Ww/lw/EhcsbrwH92eqrApr/oq0Aa9MoW4FKLsEejXvYFjzn6d44uPddwjkcWnd0B2Z8Z8PU/ajS+ZYQY/RqQKRo72bjjPKmn92A19ULtPTFTSOsxxVmLTSSFbYqujt4hUd7BEcDlFcowfhdXtUQWYp1c0DV63UU+dkp8bmnaSCHoG+goyJJN43eqZwSiln2UzEGb+it/wSE3kgsy8q2X4pNgx67ZVUW1ZdRomsBIO0WoanuYoeCNXKRzwMj2mygocdlSer5ZmsnvqG8e+zt8j4iytYDRZ9AWu4euHPPYPbWozAUUbqzsAkogcqa29Bz0mEbr56Per+4806tmPrg+kheI/pBvqCv+HBMRM5ZEEO9FWkTKl2hvr6t6uTNuXFnlVkwspEJaocE+8JJ0E4WDW2mR997uvYYbohY/HPMUG6cK05SwghM9OhQmD8L1Ao="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTYxNzkxNDYsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS80ZjE1NWRiMmIwZjE1YmIxMThjMmNjZjYyMWI5Y2JlNDBiZjQzODk4ZmZkODRhZjczMmMxNWYzZGNlNWM4In19fQ==", "tXZ/NzLISCygr4aGFLVwW6g8lZdoPruN472pVGHepHU+e+spVjOoQQ/vXrIl2nO5EZe4yVsXYDGZK7UD8v3pNfjyXdwAdaRplgQy4B71dvpxoookgN6ytbkr3EV0WucsNCpJPVEAWN8P1DGYVU0lVWyqdphfmbqGaTQOtJonS95TIbfJvmropA86Uc3s6mCOGceb6+wu216IGOtQ1tnBI7wJJF6p3nYm2hXKPDz/ulZNUb6A17T532hfLNRk7tWaPsjzYnKdTFvpVzuVyulfUPz0cxfjQPAreU072/GxKxk2eTlK6qBCT4hOBa+jlnBUUuG8JIL1/HetF5e+svs4LcMzVh1ZSnPsu6ucEpN8VESDK6ErUSuxIm/f2FnaR8eHaqdJBd/1xaA2jAILNP/Y//4G72BdnMnFsv+rVptE+V+yWzg0Pvlv3I0FqGNc+fZWmP4pqjIUd2T7LjtztV7MyBDECg2ASXRhmaaldjKcZAjgaOyPjYkQ8ydFgPMrQB/xR4yiHnivguJWG9ReuwALI480ZKw5VM4evp6JhvYGBkgnrvC+AKGX+gAZhfAnIT+KdUXAJh3LYfy984e1OQQqNCOg+lHR1aPU1RbtSEN878gqYNbMVbZ7Q5fAEo7kz9V9uqmHSrqQ8w4ltUO9W4zbMYJDVVdVAWbzF915ohYpgp8="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTgzMjE5NTAsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jMGQzODkzMjYyMWI5NTIzZTlkODdjODcxMzEyNTk3ZTU0Y2QyMjRjODQ0NmY2NTE0ODY1ODE0Y2RlMzhhMTIifX19", "huZ5VsNJVXyj1jijC2KE3rE/XbF47jfj/dApSKRqMbTmHQhi3AEFUAetgN0TsBJWaynz/bgADVTY84WsDeeZyW6u1FZHQtOyvq6zxVCw2L1tFrjO7Ts0AYXpNvaZawz+r9OuM01Y62z9oK4VwA7e9oFHDSuo4mExcTgd35cqyxJmqNA2k5xMh88BBiKumJNTenzTEqfQaaWesSmRJWnxZ09zZKhZb2E0m4ekymZPKZWPuxxfOenaFWlpyltLnx/2pC7VRkG1v+zoBe/VmfsEtu5qWPPS8UPtg1Fpx+Q3GtxIApGj0Ni/DiKkaOmOY/5HH9uYD4BtJ3NjXEFCWbkQOXEgLrgwdstRVL53opC3+07QZTbnXVNA2Ua76Gu6T8j+KMxpA0+q0nS+FQZCL2TEt2Pm9nsAZx43kvQ/iA3hnM1hZ64jSQ4nj38mUJ7bnmqM2bcZpQMtIDzwMwswMLh9/jpYFZBK9p5tG2TW91RjSne6R0sOyzZyfOBX/T8oNohBCSVokD4+8SGyBGzknUb1VE0YOZ5HOj3N7agGxhWyPB6DrYCUT8hljtezFO+iPBSBLVo2yuX1PMrrQYB9ir+rTc7mjOYWmL6ENrkSN52fBDCd4yLhPZyU0AP4ov+Nl175c32e5f8Ihhz7IRnVhNDzOE12WS55ynn1IofblMSgfPU="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTgzNDc3NjIsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83YWQzYTk4NmU4N2E3ZDZjMzk5MTNjNmM5MmE1MmNkNTI0MmUyNmU2ZDc4NzRhYzVkYmFiMDdkODNiYzE4NCJ9fX0=", "QwTBMrsbG4EGg5GnaYGyWy5S6G7UWJTTafe/22OMDEsmIy2mcaPzTRHdxQjeWPa8Zk5wGlp7ehZMbC262DRdDG5Wg7SKuAkxNdow/u8BhrUJg4Z9nQhfOauoN2tk/F1j+isV+xVi58EsEhhsr9h/1s9vxJKI2GBJJUmTjZ8xzYmcsihpoM4LaHKRu8sXWQ1MHa5QBgqzOy8UPRabFFNg/5GT8xo0UqM/5FlsYMdiIPsEdOi5bMPsU6ZTco/hWpqTMAlhDMw3hLUxvknnQ6Pf1Mi6GOqTSucaKggAyrj++p9LMtihwBOvRHhWUfIPTKdZ05JllS8Q6aZioOqVbsd+GLHYZp/PKtwKNC62rPzpqZMIBw3HgZ5ciQhSmDMr/l2dDUKEn/LIAJew9P+GXVEpPTAJSLy2IkcEKzrtU5ZSTmbZwzzldviK0+tPVCE3AzMcnYqoVbj4uOpo9Uo/uaunLWm8/PWcjRw3qy8c3czxC1xVynEDA5J6wjo8oqjSnEOuHuJ6cFLCYUf4QMlRmVIaA4lllAOOr+68QEHzek+DRc6rNgkUoqCcHF53YCfH7JItpSxxTZ6snFS2LI20KFUp93DibVEkxifkyQLbqB1OAcyDXkji8HJ7IKUMAUKoNFpLL5eANJsv/96P81N16rGA3THLe5iz17L5xVX/hpruKAo="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTgzNjk3OTUsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84OGNiOTNlOTgwZjYyOTMxMzYwNGNkMzMzODEzOTRjNTA5ZjljMTIxOGRjMjYyM2Q2NTBlZmI4ZjNkMjAifX19", "FqA2ErdpdSPLYrb+O0O1i5dxEr9ZD7ZhaeiSZmU8QSf6+yA8eGo+KZo0N7EHC6YFXnxkgySFqJYk7itcHQ5bLRKpKCaSKAXP4XX5a94/7x6lNa8ev82L+Er3A/mH/0cllxmngqLY5vK8Hej09NoMMNNAhtp+f07TkqLPCi3J6G4mFK4zHAId1gEIEyj7JxlTDeOeU0MRUE4bbngyt2h5VsGpitFaYWJZTSnl8XsXr+6/diXk1nM9smKmmwIv8C02Ufdw3N4/fB93qWfuDUmpd4RLck6XJpp8qJ95twQTmdlpEkUtTt258mHnCV/pjMY9T0J7R1MDbYajkfhDQ1xIdKpVZEsYroEVv4jNOedbRHccF5XZLG7QcYGUk22A53XT0/zuyIBfQbYk/XShABdIHoNW+PNscrtahAmqqGmxkxQqZdI7DdB6V4f5J2YpLkt6k/nXvV1uA+Gm2uPylPvvJusVJJD0Z+BroyM4SsXFfaN9oAqGmNFMdIWR+17vl9TZmfN+K3KodMeiSTcVNUFKVAtMFXSaz80UzmKAB1D+EsZQrJ/Qzo4+OP52TwMmlLOBUY3TvgZkJrK+2MC5kGnwJlW3atjR8JlsKTdNJx/xoCg8HRbaqdxQAfz7zYBRnYfFeuf9Uvb0G7RW33CO0ifqP0gi9HUoQH3LxAiJ0zNqh+o="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTgzODM4OTUsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9lN2E3ZmY2M2RjZDU4NWM0YzZmNjM4OWI0ODZlMzBkNjg0MjE2NGZjNDRlOTQ2N2I4OWM0ZTFjZTZjMzg2OWY5In19fQ==", "HMmoTUZECnTE/LoW4y4+yH7YENNOHqFdhYPFmULfFsEYjU/cY0eUu2LmlFcfjox0RTHqGebR0OmGnfVgim/p6n1RQtOXW0dt3GZKgrU10LPGRvEwQ6SMAB9/o5qKL+tnNDAtzbgrUJQh6kQGI7EU89h1KWeUpXmksPhnAPTvuXhFYEj467Ocg5Jz+CT1n8x4Gu0lXI8v8jHW+G/KP2JSQkLeLkqVRb8dGs9laFRvVwXQ3zLgTFgksgwGnuSlWTxoKVS//oLjwlZtiSowg1g+mQJJZxoH8esfAFGsxNKV+7JrdN13PfCkbdZYDpm5eom4SdrSflP3DXCBuGvBSFoStDYYegZEY5t7GhRizubZOU8ze3hfnbU8HqXZH4wqvmHzH7PhM6edQUrgJ+j9HV5jfpV9fQ9vhtlAFg9x1s9V8+yxpQ827FIqwyR4LY5cVZHyQCl1vkeCSuImrIUmYZ3ZsbQXzODDlzLEox++YDiEnUeuRCdJi4MInO9oKbZnZltEO4fsyWj7dRgQZQKWCR+iXaWiGsNmiiJiishn2+dEjFGg0L0pG6KE4XmkCJtDX2VvvgK3q4e9a0mZucZn68SjV3CcBghXkZ31pKzxxaQrKQoxs1KZFfG2UL7QDGmUURZxwWYzOo6KhI9eyAx41mujy8xlzarQzUErN4cwoFoPSmA="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTg0MDE0NzAsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zYzY2ZDFmMDhkZmRmZTY2ZjljZDExYjA1MmY0YzM1YTdkMjk0MWZmMjNhOTRjY2UyM2Y3ZjgyMTg1NzcyZDgifX19", "Rs2GuNrHjFBLk09ymZ/3UpTNSbbjmnZ3WvzA8n0X0gwzNHAx+8u/pNWO2uMEW1TZE5fhmrRAb8krfEpr/D5RdeXl+Se7NRch4mxpWqz4jiipMigFgGnf/s0JY+/dn5amGnoHKzqsktHFx3qwwOjGaz2jj1vhysuzQLGptnurn9wnRgVIueWfR2Cctc0v1pJ9jBVx/gkG3N+2Wznml+50pphxhcYBtfUKtwnMRxHIOz0me1KuRhqmBtmMzoQUArJXiz7cAX8cRlTqUg2ilY4UYLxNsH3cyaJi//tOzpk7EEwo2W1vYT/ZqiHTUvDBeRSu4Or9YZ7TwF/klbSnZJqaC2X0du00QcaoGAvFPY+A9HXZ3QII7k4g0M+aI3huiDUQX24O3p9h4J4dKJpktq1FH0G271uf5m3DMQlAQHTJWP07r3rL/23hAALMtIjE4SvUANd+WBxAeAlgSQamWk2YKQv/TxnNlr6tZMKOz/L1xsXJdn4eATWO786wH5IlxHKwgIQnmEYPSZX3AYsGtIsYuQhttbjmqYiecNdywXy6/WpZwhUHWW2aKuvkczJ8kX5Mcq+viVQRWRJNsCwqwzeXMLEX5tpNGOlQAyRJ/lyGUYJKmEXyqWXIxJstbJG09OR/G9V53ZhNa1hEaaVGv1FwZ9WdH1xHhGyJySz9JtrmKQ0="));
        DOT_SKINS.add(new Skin("eyJ0aW1lc3RhbXAiOjE0NTI0MTg0MjUyNTQsInByb2ZpbGVJZCI6ImU4MjYwM2RmNDE3ZDRhOTViZDFmMTcyMDY0OGJlMGI0IiwicHJvZmlsZU5hbWUiOiJQYWJsZXRlMTIzNCIsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jMWViNWQ1MzExZjI1YjQ5MmEyMTIyYWM0YTNkYWUzZjNiMmRmNTc1NmFjYWM4ZjVjYjk2NWEyYjhjMGY4In19fQ==", "LHeNKZWS3u7hmMmxqjEiCLAlhHRR4ZzQDZkCwJNid0odX38Qm98teyCwg4VmYKUrovIpqX3xReYiZ2LIY2SQDz6nARj6qarHQHDMgZ6Itqfd8jue5ZlzbwRwv9Fmirxdq67yA/VAMmy7Hel60X39PF/qVlVmA1k9nFz2NDmMlASA61nI2oEjfvdwRgODAG0rSkocIqxpZ8y/hUAsUsP2NPISIRl+yY+QLpzkx56+iTvLvYsYbhFMMJyjshjgL6j/TH9XRyjfqxfthTiKrH7zYSbxIb1nQC+Osrzg2EN9M2BPfyvF/MiFsQGu8It9CXSSR6ZFqTnDmhteFySiOrC8WF6F6rZL+vMYLSgke4vixLFLLdgdb1NBBMy8wGfEJFfLGs0n7UcnHERLg8ZTzz3yov6vKVd5dqv8uClQGHbv4iHVpvvepZ8BUuPH4PQgxqhs1akQ/q9B0RVXucigEcQMWfBAftGEDUI9PL17jjjsNbLYnX7yjSV3AWi3PPFVs7JWXrG+9KQPYHO1OuoA0ld3gA50+nSRXqcpDrvxRqo88MlqAv54Wc/I/lYOfpzx9BCgQsMz7n6wq22BsGLhNdbB+Usw/GB8s50KDZ91Zigc2REljgyoabzNBMHa/ACaPiBuFZ8ApBd84no+ipnpVJXnNcFxSH44AShuIcZaCdBlwbw="));

        MOB_SKINS = ArrayListMultimap.create();
        MOB_SKINS.put(EntityType.PIG, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1MzAwNDAsInByb2ZpbGVJZCI6IjhiNTcwNzhiZjFiZDQ1ZGY4M2M0ZDg4ZDE2NzY4ZmJlIiwicHJvZmlsZU5hbWUiOiJNSEZfUGlnIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS82MjE2NjhlZjdjYjc5ZGQ5YzIyY2UzZDFmM2Y0Y2I2ZTI1NTk4OTNiNmRmNGE0Njk1MTRlNjY3YzE2YWE0In19fQ==", "CP9mhV9+RayouT8wKkH5NctgdqTbW/Lu5jURwZVCxSCGEDW3Np5t2v3V+aZMfTTdoSvIZXofw6wm6O2AV4QsHf6/y1RXPRanJS9k5C2hyWvCL6MFBHfe+bvA3Xnl5Og8QO4WrouIOfKL71fGyAoQHhtK6aOv42wm1dGcE1lRx7614q+3GQKZcg9od6kR5kSOOpPpIE11tlCQ/khRGeSF1IsvSIJ1a/90Uh7eT0A5VNdqb+e2vTcgQSTUKgnmMk2ktDDx8QURFo2VxszAXvtADx/RAHVPpW9/z4HWD0g+KNvxGKCH1qhTpuq64tZEH1rS8mjDxsmdIw0AcPV06xopNKG6FkWfayZq5zBoyrB/uM0fW0UayEN47kJG4JhCDG0O7wLg84BH5Lhl/AQReG8K/rVDLwhZxNH7OgJ4Udw1+mR+mDrQmDBEmWutDX2ECksgysnAYw7nvFoYVUUim0d6Monvn67670GUFvyXE7Azdvo2EAjgEwRFMbzpDvT7RPqUWLfJ3wEFmymlHnTAAqSo+5kyrhvQ/jD0CwFMIClmI+2TehmrUB+89bKP36yNbpJeAh4ThQMLkSMVdItaoLSYoPenJ7SbWxH6UopnQsv/oVPoKMBYhIuXqvdCT+ucAoljL9HGanM84St59Jt+Aof90dd8T0/eR3Za5HttS+p0a8E="));
        MOB_SKINS.put(EntityType.COW, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1MzUxNTYsInByb2ZpbGVJZCI6ImYxNTliMjc0YzIyZTQzNDBiN2MxNTJhYmRlMTQ3NzEzIiwicHJvZmlsZU5hbWUiOiJNSEZfQ293Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS81ZDZjNmVkYTk0MmY3ZjVmNzFjMzE2MWM3MzA2ZjRhZWQzMDdkODI4OTVmOWQyYjA3YWI0NTI1NzE4ZWRjNSJ9fX0=", "VxbMhJHqh/g53VQJ83wdvuKv3b+sAaJ32VH49Dbc6TzY4WXoCJxytYMvVwE4YoZlPWsbHEtCst/NKZYGfK5SpkzMPRn445mKUcwL5Mq3hGaCIZTEtvjwFFT1XgVcTGCKOJ9GvLZjtv1SEeJuGWIRBCfKvqrpCh2rG67UKDBwiKW7YKnTQiMGX/aXmFcMLPCjEyfGbo0Dne2KgiLeNAoP+XCPOxuJD1yg4RCRCn89h4Up/BVw3IYUfqZgkRveGOMMn4DssQJ5Vkbs1xWQX+8TCaArs3nCFJfxczr7ToNJOOVYk3fckLd6J9xRUcojD0VatvwOG3LgadCTdlxCt26+5RoeoU7Y8vuWuPGSyvBwcVRtBK2E196rHcfGTNOQO3F+7xJB6ZIldVEtVpGBYeyqIAypa+O8WCPdfxdhspkT0tYcG4Kd3eo56dqlUWqTMl7e3SznFEY+k6vlx6/gfbeW8peut4cVG4uwDFK5ZHBdssI02kqib4W+h84W0KaZA4p9DaSvSRepC+GQd6Jo4vOLKqUk7mhM6YPTqE6gwjvCdoh7t9U2H/44dFlK8WQV+q0p3AKWGgaAH+cE+UfCTHsTlWebiuqW77B3VC133ROiB6MENBHudvHo8YmnWx2fDzhxyOBa6IBiKoC25CWyThkWtLRtlVFhKRZO/NIuJV3tKYs="));
        MOB_SKINS.put(EntityType.CHICKEN, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NDAzMzIsInByb2ZpbGVJZCI6IjkyZGVhZmE5NDMwNzQyZDliMDAzODg2MDE1OThkNmMwIiwicHJvZmlsZU5hbWUiOiJNSEZfQ2hpY2tlbiIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYzODQ2OWE1OTljZWVmNzIwNzUzNzYwMzI0OGE5YWIxMWZmNTkxZmQzNzhiZWE0NzM1YjM0NmE3ZmFlODkzIn19fQ==", "HMY/vx1/kn9UJMm7GWQqPikG5G8KcbVVYus5/ePrs8Jb2pLzb2oYkraHkH6fer/QRCntecq1eCJKKFGjRldYFY+0LyL9StgOZJz/FFjcNVY3I9XJYhqquVOgDmrMo2TnsJbDj5WqdYiC2kGlLIdXwxw6tHzuEBirsFhmhr4zQZi0QLs1fJ+Kehdbd/tJb9RkamgXRSS5ZhkBkGCHh6YU+GFBMdCqE25Q1GC3tfaMQdIPkV15eKDBugUg/18bUr00igLPPexrWNoI96UJdPdRaoKR+P1nmkKXgEy2QCtKfOJlR5ws7h7Xs3hxgExN51gHwcsh5c2VFelOzY63NGTAzJL0UnbzD9LEFS3vktk7Q7eOF0gtVV4BmIA+7yJnv7ZeoR83jS9Dr7MS6aKuYnKS5f9iXwq2/vd3PNg7D98qbEcnpwZFyATsHFTpNddRZVZTuqbdmdKtkr3PY8X6tXCrGXUCpa9G4DN/u/cmGyMF6h8O/sqXmWkO31/GeavpMRUOgqINusR84tEtB2sQgUKz6Yo39a00TgYyrwhtGUr4Ba2oFy474+kZpm+nL3g5awTipDaDG5Qv5pEbr53hWjrGzanMiBJlVlEWSpXkvpuDnlDUnTFJgs5QdTHHC/SmuKxiicfMov7IzB3G4anFXLyt5ugLJ47daLDC+4bvLiZ2ZQs="));
        MOB_SKINS.put(EntityType.WOLF, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NDU1MzYsInByb2ZpbGVJZCI6IjhkMmQxZDZkODAzNDRjODliZDg2ODA5YTMxZmQ1MTkzIiwicHJvZmlsZU5hbWUiOiJNSEZfV29sZiIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjc2OGNiZDUyMWNiMTg1YjI3NjcyY2U0MzBmYzQ4NTBkNzU5NWM2ZTg3NzhlMDcyNzFjOTU3OWVkMWY1YWZiNSJ9fX0=", "Wl6Tzi3mnBfoBdMt/RsZT0RciWpTfAKC0C9nivFKy4A+qtLf3qwne5e+YyrgJ3hqmk9O0tsrvgEkUR0kOXXIc3IefQ8E1+5Ucqswa7oBMA4NhIe8dRlhbCqe/T9pbU0rRFqnRNJMYCagxsE9ESZRx7u06LKa8+q7ZvmO7JxdSbYRhT3l752Fjaaue+3Jdysbvn0FDz8+qWycUAmuRMJAFSzaxY9LByEvBIr+Luu8j5YDUl6lRXA6r5XK5BLN7Okv2Lpo/yTgl1QcUKcy4LLFroYZE3+GGHo8wR0UNfje2RhY2SqKslXYncQd95Sbm2I/GP/fDefG1eSR2YQJxoyO7Azzm7WylKcUZERHqHx5ihKJlCKXLeqGZUdFbiW/cv05ejXZNKcDHAvwH0Xh9LaITaWlELCNSj3V4KRtROdrnhYGU+e/5VYRCVuqyvKsY8aNyboCz0eths2rpfySVxgL2Ey3DyiLSR7SxFY1/MXd0/YeEVztUCBCgAv8hX9MYeFX6mDEFWpYYqVR84aXRGyy8yJFRemu9ciOaMiK0oJjZlp+iIV9C+MUnzB6BxkwWdHKGzWbCbmbZJz/d/QHyVbMRUqiTeiTv//37lPx6TxNUUAn9A6OSsPBT535deogPdQTdcTNvz2NbPbCTlJ3z7Nv4ZYQqPITyg2YTaWnVI/DHQc="));
        MOB_SKINS.put(EntityType.OCELOT, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NTA2NzcsInByb2ZpbGVJZCI6IjFiZWU5ZGY1NGY3MTQyYTJiZjUyZDk3OTcwZDNmZWEzIiwicHJvZmlsZU5hbWUiOiJNSEZfT2NlbG90Iiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS81NjU3Y2Q1YzI5ODlmZjk3NTcwZmVjNGRkY2RjNjkyNmE2OGEzMzkzMjUwYzFiZTFmMGIxMTRhMWRiMSJ9fX0=", "IOxTd/lKiOZ6WosQfZba8ky4GoSI90UnUlqGESR356QWzJUXsfQ/Mak7t3qVNDFSShLBzyoe5c0qMkoJqdP0csdtCjftVvYjg6fSrl8PYx8kqfzDmnYokEakoF0FVNm19LkGLBQCqknBA/Eys0AdgIKvmD9E/AjI/9+6tskhalJFgxBg8G0h/dlZML1i4JWlV33JQCNEK/rb8TEYgtAOlEtPJCAvpUmut30ynvCeINDQCSq01KZbQ5PLiVUot8m5OF619opf02tiDnHxZo8JJX+89be7xr27jy/s/QvTm409igP9KTm9GuEqzZ37Xp7LpCYe3VRivr4DARQX/sJu3bDwHvJCC8/wLtY4jhwu5M5ZUrTqS/7O1bydr62kDRExsLRXPZrLqCjFCvgqqY5MPxGiyghZ0JEQqOkrdtKM6MFDH6qWwUoUiD9pU7VxZ5zlXjb0ZnJf87zNZ5IXf3PvQlf4DKurkuKifU3/0Oaa05wjWX5+/+KVErlt9+OlyaZ30MdfMi2ue2xti67f7a89EB9eb0DWvPrf4NRUBwYO0fpSic7e47wQ65jVGMSxDD7PCzeLgxlCXlh2fwKqXkdlbC8g34SDlOL+hkAqYBLEPpJJBfuagBgyUzlb/U+Ef3GgyM/RCBlhYZaRfoygfp9qr/BuudirmhGo3KB05X/OVQo="));
        MOB_SKINS.put(EntityType.SHEEP, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NTU4NTUsInByb2ZpbGVJZCI6ImRmYWFkNTUxNGU3ZTQ1YTFhNmY3YzZmYzVlYzgyM2FjIiwicHJvZmlsZU5hbWUiOiJNSEZfU2hlZXAiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2YzMWY5Y2NjNmIzZTMyZWNmMTNiOGExMWFjMjljZDMzZDE4Yzk1ZmM3M2RiOGE2NmM1ZDY1N2NjYjhiZTcwIn19fQ==", "LxktEVjpGulm0o7wPpZ5Pvx4jNGx7lDqzigrkpH36VSETgyXP2uuGAdpJOsGwHpyYXqzL2qAe3hWy/quNtuFSQ+GusE+7tJkY0msrC2hLRGr801kebRrpOhQ7pZifKMKsRD/ea748ltYlXLJQkZ2nTBKd69GmVZdnjyHthqy3rXsT7EUlESn2Ajyuh1F0L6tqrWyXo05WcAOzpiEGANgcKrrsemada8eVjYeBygOu8VTxJBEYhwOjQpLT+RqTde+vamMUn681kHJyfeOjj5w5/P4D2UjU1JJyhOQRg/nXdbRxt3EXoJgfT69oaenLUsAlg64WmH2xx5rR+4Ag5jPmZ1lniO61a4zUb49tdynXkvJxqZTYrE0KSuQg3RgMxgiwQn2Wl881JpI56sYpt9yo075a5Sx761e7c/GWh+fVOTiAtYtujB/nSyb8ud7uqVFWPZyunPM6g21A6vfHXS7DqSUIPnqVDTMJCMOLtCQcd7644fIU+99TCpKdohDbK0OdWV9RaHkOtNuPB0CQG4ic6kjY5wvRCZQFO2pPVC8SEFUocOAKBpCLlIhPBzsYQzSJ5vbuvnAo4GX6n5tNll2QWKiN2ciDSR2ZLqWByZQksOLJDcbCtUJB16v9VPK5T04UltotPRjSGEfeRYyLxDUeylK6e7NpNI736D+84T8CKE="));
        MOB_SKINS.put(EntityType.SQUID, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NjEyNDcsInByb2ZpbGVJZCI6IjcyZTY0NjgzZTMxMzRjMzZhNDA4YzY2YjY0ZTk0YWY1IiwicHJvZmlsZU5hbWUiOiJNSEZfU3F1aWQiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzAxNDMzYmUyNDIzNjZhZjEyNmRhNDM0Yjg3MzVkZjFlYjViM2NiMmNlZGUzOTE0NTk3NGU5YzQ4MzYwN2JhYyJ9fX0=", "xYGyUUZuPtG/BJooEL0kGfFtVlZWCrQ9NHtlMIfX4k7gq5MkhtdGl7DLo+CB9BgufwCuC+3DUih7xOuroNtAZesPZ5dF6BlAZXSohr7wiQE3o9sB8oHgVc5lAagjs/ef6xc8yRzLLB7Et6YUtWkIpie2i4na+CA1S4y6FAqmiJ7tgHXpoVBagI5XGc/fvV7RHKBG4v1P3bStEcGmzIZWZA0LM0azsb4jRwno0r+Pn8UIuCOEU5VZFZGIk5DtcAsDKRi5m2WwHHD/n+gpw50z/BtgXcjnJcqdAYezr7wbXti7ydJEx0mq/gqMttZzQAWgmoVg6GcbdhWAklilKtHPIlz6KHuYreXEciugAdfEdmSoT5QwXdAyBd1ftNluhe+tNEZPHAtyaCubpQwcHdvkCl+WWc8mE0W20+1XD2dHCpFdiJm7ZsW+WtdcwEnjyiq+eS2BppP+prgRE/15rQm7JjPGSlDhLvjtbicraCH1EedcObhaqs9vOd8dNMPP+ptw0D8FTcQiff49r677MciHc+WlZPssS71dGUx1qsq0+JnZ8qJPMbWCSgQTT1aFjxQSwZbTOwSdXN+hps/rFSnQ+K44kkGnXJNWRgf7dKIYnmGXI4a95naqhvVBPxLSW4EWbSnU7tfR8mJJpn+iEI39j2tOtA9UNz88HaqCSyioY+o="));
        MOB_SKINS.put(EntityType.VILLAGER, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NjY2MDgsInByb2ZpbGVJZCI6ImJkNDgyNzM5NzY3YzQ1ZGNhMWY4YzMzYzQwNTMwOTUyIiwicHJvZmlsZU5hbWUiOiJNSEZfVmlsbGFnZXIiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzgyMmQ4ZTc1MWM4ZjJmZDRjODk0MmM0NGJkYjJmNWNhNGQ4YWU4ZTU3NWVkM2ViMzRjMThhODZlOTNiIn19fQ==", "jk3tLB8b0dVjR8qdMkXAeVAgdPDMHmhiDcvDzpF55vQehvuVl2f+r8Mgqm/EyNtVzxH78rXiJjRbxdmh58kNRoLXY35+rBTUhZgiUAh5JTWEbUOHA7k8ZqF16+uRqiCgAXGX5ZzC49Lspye8CSrEhqXfQhiWDgmX1xkpaKRDRpsdciMKG9m6rmowPbYPf+QF/RuMHi5zY+4xvjMCFY3KKaHE37l+J6MPnrF9c5/o3/hWpCe+kUJ1vJ5z5Lz45jDUsVEtydVAzrdWW1lxlYxM3JZ2+aqNcMBA5cWts70ujxZ4bWgwgpaEeRCi0j9jjjigazCfu6GhueD4HfBvPzBcXFq4rzPumPm5je2CBvhSmwnTw/Hb9OsF5FWexNB3VvS1gJ4lNDtCkV9Fyz5Gs5tLUVatH2PVvrIW7Zm7TwU1SYeahPJCiCyURteH52IEDko3wQRQxOkrqJI8vn3ppzEmEGkcU7McDCuf7Ttsv2DlRHxO9nJVSqud8/lSinum8cndMJ4/ABO5Wq6T2aucf9zQ45ZcFJId8fEYeIoZ1nFXL8EhwUJS+s6y/ORb8HWqHZ5uR0New2A/saAv4mxVsz5z3d/MvXGm7LG6Ww2W/I0JW3Vj7RBoximz8ZMXEOIi9YJ8tX853IZUdjjyyCNlXiK5YUP4+5LAi8sHi9htX6xAZXo="));
        MOB_SKINS.put(EntityType.SLIME, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NzE5NzYsInByb2ZpbGVJZCI6Ijg3MGFiYTkzNDBlODQ4YjM4OWM1MzJlY2UwMGQ2NjMwIiwicHJvZmlsZU5hbWUiOiJNSEZfU2xpbWUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzE2YWQyMGZjMmQ1NzliZTI1MGQzZGI2NTljODMyZGEyYjQ3OGE3M2E2OThiN2VhMTBkMThjOTE2MmU0ZDliNSJ9fX0=", "LQG9d8Ki2nDIOwj7AmpgM7pbTI9XRBpThvqnCnxW5Z6zgnGMtYBXkVoDkL0BRvImiZeY6SjSlTfR5uPtFpgc/+IRbzMhF0rn/BEpAVHIivCFKH4esYrsjJieAD2RV86AxaqZvA7WVG6opnmdjJKYrd8q8M0fI7QRXTQF5Ub03KTO2ajvBSgBHjKA60IdvvY2ulZAIDmvRe461yJ2EmHXKboW/hEyVU2+59O9R+/1aiv1LnfepP3/w0+vUAVptSkB6+Hg7aJdrFFQqIm4JlKtUyhFVjl5vjNjAdNp1mL6ZusYryHId6aarQxa1/8PeBGLEv2ntp9YAjXmvYLGEiz+6Rq4OC/51i9uEhIA8X3CnT2bmaupEGeQykQx9iCyypcGJzzQOvOiw6fCjIp4UxsmS17Dd3Xec578MjEvB5IzAPT8/OM+yDrXN6ediw0wAz++KECT9TZRZba4/wL17+HAVtELTfacTEmDOWYXZvvdGStbNab+VOK/okuNk1PPWIcq3KgryGvMeOZkj2xhrDpkhFXy4H/doBgR3kK2QwrxEyox9L7GclgACHjPFOj76GRJlS/IhT5xfGZ/++tZnEzeeG/dKoYGA5ll6RGJafkbqZlYPAGfPFfQ1leQyFOua4jOxDzCH/FO9ftR9yKEdOQeztTj8whv3Mn9hcX8w/C5v48="));
        MOB_SKINS.put(EntityType.MAGMA_CUBE, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1NzczMzcsInByb2ZpbGVJZCI6IjA5NzJiZGQxNGI4NjQ5ZmI5ZWNjYTM1M2Y4NDkxYTUxIiwicHJvZmlsZU5hbWUiOiJNSEZfTGF2YVNsaW1lIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8zODk1N2Q1MDIzYzkzN2M0YzQxYWEyNDEyZDQzNDEwYmRhMjNjZjc5YTlmNmFiMzZiNzZmZWYyZDdjNDI5In19fQ==", "Eg/5pglZg3aluXEzzdNOx8eg7A8dS7eZb7WfEtutHK4qG42WLB45nMq5ZsoZmFhWT4+aXcN8EFlDh36RGWCFYAWtP7Ct4HrDRANGfuFB8XzShX/bCGquLewRCeFbvvxdi9TnOh07xBOup1DgBVYr2ACHQ2SMH470JTYyvX7jO54LG2h0T6hmAnDeloOgFcXr3l3qxxo1vRP3nrsUYLkbMA5CdzJgQHxg+5yZMrLCtyIsA8A70WQPVaEWbF4fjocP2WmQZT9U9yZYA6NDr6e2uKDU+rp4rEeWCCt7cEbLPODT/QtLpoJMo3vFxGYQ0LCjF57oQRKZBpANDWNajfmk1aY2yjM1JA/bWK9DjuilvbgHcsW2ekEsvi1liztELT8TuToO8+wuz6McV7QQrWL8LPspQFkpTJ7aevbBR2zxQTg3R4HMRkMT3H71YdEbtUuc9zLS5jsc9/BiWoGVtRHo4v2Yu2s2vvN2PRSiYbnykxIDaa6Z8SPB/ezMgrTligwekHKUI9spxARZ3QQyewTEH55dni8/2OYHGqeXQ6ibYIT/e1eETAMIUjEJ81bu9/D8MzLqn+wodZ+kjnDsDRCb+zNMP1FZLqN9jYlsbuEX/ghQI8RZ7Tws7TMcKGXbKabww77lnfo8KhKaZnz0SlPFmnnQG2fDNZJB2ktsgpVBfvs="));
        MOB_SKINS.put(EntityType.CREEPER, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1ODI2OTgsInByb2ZpbGVJZCI6IjA1N2IxYzQ3MTMyMTQ4NjNhNmZlODg4N2Y5ZWMyNjVmIiwicHJvZmlsZU5hbWUiOiJNSEZfQ3JlZXBlciIsInNpZ25hdHVyZVJlcXVpcmVkIjp0cnVlLCJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjk1ZWY4MzYzODlhZjk5MzE1OGFiYTI3ZmYzN2I2NTY3MTg1ZjdhNzIxY2E5MGZkZmViOTM3YTdjYjU3NDcifX19", "SEmNuwrYq1BVE35AMiFtRvnrWSs3dvmFHa7HZS3wXfHM5Xi5Jv/1Dkjah5jIxATbkuTEYCiNmRuns/pzCOPVcB9mTEFkXnc30+/1UWhJ+l0xVM2X8u9iTBWDalRJVV7t8M2LekyH/v8g+pREjZvJoKD5rb0VVDAIbMr0S7EycPlns0tCwvuu4rlfr7cHAbycDSc87kcawJNhDM2fr2Od/3zBAjKlk1xmLcD7P087buqArJnSsLcn3v2HAccDgCJ9vdr0MpFeT9mvw34daVxv8JVtOYkf49fKKNOaC0gTRj1upLSINmhx5zP3EQGQk3/RvJSHxcBBbIvvat1e84+tNpP7z2PNmYvFBRgM+ovgKu4vLImFPBdNgcyANjOecBZZwVFkq1Lo5sz7upxAhuV1dS/hb/n7gDDYZDvKdvxqQpYYziSVJ5qjveoF7YSxSvteIP96H4xFaDc2DlGzEHT/pNCjSmgRGfw77/NgCwwiCHL23/STsY5OrT/VPbeY2jl4mPESs6nFwT4/yGkPI0qSG9K66zteMfwyAbbOY+ueuT8SZlM4AHBp4SWrx2gWKniq7ti/EczAkE8CJc3Pgoj5GCYkl+iZqtYclIMNk0otpyJ9tFF1Q9g6qubq9JRDPzOEZxYVSqJCRIRsaf2yBMKPh6vCso0kNSugunuyf+lCMDA="));
        MOB_SKINS.put(EntityType.ZOMBIE, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1ODgwODEsInByb2ZpbGVJZCI6ImRhY2EyYzNkNzE5YjQxZjViNjI0ZTQwMzllNmMwNGJkIiwicHJvZmlsZU5hbWUiOiJNSEZfWm9tYmllIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS81NmZjODU0YmI4NGNmNGI3Njk3Mjk3OTczZTAyYjc5YmMxMDY5ODQ2MGI1MWE2MzljNjBlNWU0MTc3MzRlMTEifX19", "OR1BY4LqqVpI2AnM4IePAG677M8DkVAeiknMqqrb8q0KYCAon6ylP5Zn78AJQZOzNi3Y/tPvdj/NS5vexfr9FuAwo2CPd49O1DFVgtljt/hNM/40hBk3tE/ZlNvbZpMwGWmwQdbhxZf+9wrlJpkaMPsT3y8ifbehv9C2RMlaaLQBjedMT5B8yDTT/pZwWqNZ4iPtUeDiI8VsvcMyawkjnD5kQsxB6GCrCx9vAPFRtsw5r4YAhIzPpFdrGnKXRmEuR//POE8KFlL72iMhoR7pmcglhYAUlSAfL4Y6Y9SKYP91BV54Oh0DuBybr7ifb3Bu1zN37xPYih88H6nyPuVwsfQ2f8YUHQvRMRHi3iLwUut5TIVf7FOQOdMbcZWNk9SaR0E2ha8+T1EDW2X4+DEEk6CsLPSHTx/jtR89AcZxvayqOu77oP5V+seBThcXlkzk2bo1H3AdGz6ynQVeQoSnjzChwYhNs7roJAzQ+C0ipMr+1ezT6rdX39vtOIcHsF4EX6mqR6Tob84lUeDjiHiBVAUeralRY6I5Rl7vsTk8GFkQ7rAFj0OG1XKIKH2EAW10EtePdI6wH4DNbc4py4VL5o0lh9EPFpr8AC3lHSzaKELrlp3GcOhhA5NhWrotW8xxXssnH8mpbw8KWe6evI3Us7Ng1qiwwHCC0Yc7n9MgZL0="));
        MOB_SKINS.put(EntityType.SKELETON, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1OTM0NzIsInByb2ZpbGVJZCI6ImEzZjQyN2E4MThjNTQ5YzVhNGZiNjRjNmUwZTFlMGE4IiwicHJvZmlsZU5hbWUiOiJNSEZfU2tlbGV0b24iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzJlNWJlNmEzYzAxNTlkMmMxZjNiMWU0ZTFkODM4NGI2ZjdlYmFjOTkzZDU4YjEwYjlmODk4OWM3OGEyMzIifX19", "Bp35CW338fS5VEHtpHE+ZQH0Jq4z4m2F9ReQ+HdpLL9PHVusaD4Orud9se3+HJTTeDCRSRdc1N8oTcRdA5/xdl2CrjjUcIxa8Sfg+ySJd02xut3t1p5qxFe+w2zRytLBAQzcB8zO2QXf+niPhddESAC1sZ5Ds7/9CXXV2kSVvk+h2Mry0PR5inxPVqppDOTyFgTWivk4GVGnjJ3DOpnLAiTx5eafx42NPaQFRSj2Ho+9JejBgNtJpb8pGSGByyLVWnnVZhmm1A7SVzI2Vf2YUgEN0LautHCy/HyOFCS3/y/oy5+HNb0TPLVBlYl3I/Di1xZfYVScmTrJM6QPgW+tR5v/p+EH7eHdo/OGLwKjKlsmbX+BO6UHVofVEdiQDtOhBzBplitJj77UCQW+gXsFVLN38hrIRjR3v9cNKbr9XAZ88dU70FrwatvKEbfIETUmrW5ZyS/AHJrL4QTipmpw/j/usFNvhV3+N+Q1Iq7gB+ZNWCTdYCjBg0M/0jlwXyqkpb6UN/GQHH2q0VppmGZixrarCnolD/NcwU78np157hU5OZkhjFqCaB3CDc0FjsT4gXhQL03DhhSJwnAFkel0VxZjD3VShx+WDa0wHw5lTq++WDmJuvZep5sV38bTws9l9Zl5rqX80qydYup8v0byk/gt3FhoQ9Bqkcp84G3RNxA="));
        MOB_SKINS.put(EntityType.SKELETON, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI1OTg4MDcsInByb2ZpbGVJZCI6IjdlZDU3MWE1OWZiODQxNmM4YjlkZmIyZjQ0NmFiNWIyIiwicHJvZmlsZU5hbWUiOiJNSEZfV1NrZWxldG9uIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8yMzNiNDFmYTc5Y2Q1M2EyMzBlMmRiOTQyODYzODQzMTgzYTcwNDA0NTMzYmJjMDFmYWI3NDQ3NjliY2IifX19", "ot6zQO97qCDOSIPUhmtdnoQfT0aVWi9BESmu8/P/EtnuyCfyugDPMzSAbmmsc9Ae+fnBHnmz2YUZ5JAmI7d+6PFuiZYhoc8bYdOLbnO5Cr9j3WGSmq2hb0cvhhr4okktCbNKmEl3F2ZBgtIDebkykoRTj72vlqevmjIi98wxEbbgNk9W0ikJcGeoV2Ksi0MErz9q5xjr+kWuq+b8qeyyAKv6wNqwZtE94rXX5UoBvrRS4NVMjpyFTUnV6Fq9s2eHXpa8Jx9sqfkc9btVpEwVy/w1CUXCdqWpoOe1sPPcUiniu95woX2ODVsfAk1wgxTiLzpYEdir3iMPzBZLFrPY+7XrN06droZ6vGSrOTtXIew7j8MrJfrob2GBsEskDZ4oegfwuqn8d9pGlEe1WOLSaXwRzryQx15sQQqC/LhZETFF4hJyZ8AlbircEqxDEEst0K8HAWiT0cIQLKwiJxzpn8L4CPaxGpBt3CrmpFhRAiTZJNs+deFHqrQ+75uNZoAnKyvwN7eMSvfDDYY9mQLI9AERAeHw3cAA3hoTe352Q9MTrzdecwBnZZgA5ZbO3ICacKloxZpmrC4MKS5jRKY0Th6m5vbCtoUXZdmeoL3ndlFLodyrmASGTyKsZ1ntR99MsxXjhRTuO/6ZT3Bu6m6ZVjnBKP/86UFkKc2owyIFbxc="));
        MOB_SKINS.put(EntityType.WITHER, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MDQxODMsInByb2ZpbGVJZCI6IjM5YWY2ODQ0NjgwOTRkMmY4YmE0N2U5MmQwODdiZTE4IiwicHJvZmlsZU5hbWUiOiJNSEZfV2l0aGVyIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jZGY3NGUzMjNlZDQxNDM2OTY1ZjVjNTdkZGYyODE1ZDUzMzJmZTk5OWU2OGZiYjlkNmNmNWM4YmQ0MTM5ZiJ9fX0=", "aHJTgEmMWxswmbj9YAwa7kpn9AhaJylKGNGsEJYDHNrxy29cNqfAHE56NABifOMvshIpqbYXA3JbgHbAM5asQe73EsrVTTUXRVnwICPmKQEv5sIY6jAKlL3+vB5NmxE+7GqrArn+d/olzLByIwt3Vk+lnNYmwy/mTvxQ+qTu3PUYea+7iyHdpMFoATyO8EQmAdDTuw32LrfP5Vam+f/lnkzbIqMAJ6nlNgYpRi1zhLR5mbiFWMchwsyTCwoH/0EX6s/h4+LUcOJ3Bb+HsiWz+fKYpi+Ky6FD87g7E3tFxB3SmZAncpPzNoWoEsD2fegqDnXjUkhSISF7bMjkxacjG03eWlPUj4JzZjqq/vtdNS7RT9USt+3PNaF8rKb6CxMeUV4dCeG4ybkLgoXpWNUr/9mzuurFOP+tOn5IXi3v6THXLFXHJgsiWkb7lJ9e/b+XjmDz2TmWA5g5RxVw8vXT4D2l6SPjBwT+CnqZKEAq6a4PT8KYePPXhhd+tM7zXvURpXHSItKza7m7VAJfyuZVX2zxLSwHrYVE0tIkzmvVQdvFJw4Z7Lvzz5CBokgaFsVavJuASYToLu1lXrTDxEQvPTYCnS/5qrtWUJjBD+4LJjnSWdB3CiBowZOUqKP3itbyxUfYGNRaR1bwScq1+zTaDKoM7n11zAzciXkMEDpQsXc="));
        MOB_SKINS.put(EntityType.ENDERMAN, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MDk1NzAsInByb2ZpbGVJZCI6IjQwZmZiMzcyMTJmNjQ2NzhiM2YyMjE3NmJmNTZkZDRiIiwicHJvZmlsZU5hbWUiOiJNSEZfRW5kZXJtYW4iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzdhNTliYjBhN2EzMjk2NWIzZDkwZDhlYWZhODk5ZDE4MzVmNDI0NTA5ZWFkZDRlNmI3MDlhZGE1MGI5Y2YifX19", "K3BjrmWkdzFkzd/1Ifux5NC9Qk36IEP9LlR/B6hs6tweyV0teY7BYC8WfcUYBMG7H7TrPVuTQrvsUsqsI4S4ZJPXWJLE0hbhKjUP/V1OE4pAV7Np7m1lvULeThxJzlJbPO8vRmJ6nQP2QqI2cJa/Lf4CaKQmFaGegZevX9aEY6eBVKfVOUkxscGNi6Pa5Gfc6IoWxRuCpIYoVu7jXTxx2NPjYxziDzi0+GdZDTZfbtIyKAd3dujCR409e4CECPrGh+3SWB1kEayp1WdDDWta/wWzTs/hNgYWYWrS+wuTT2IRkwK4eJk5c1qp6/vUREOqN5P2lyFuLgLa31UMnaLxh7uHyFned6IA4w9ZJlH36X7+MrPXb1RXUJc7YgCLE9RtaJVh5LiHNj3pBp72U1icFN1FfMqpaxM/WtuuU4k1iJzxr7F0Pbi8rrjqCBlyzxVqpQGRxAeO591gmL3Mmx8Jy/DsadzSNsWavxH09y2LAQZR/86tMu+HOGKFtBttuhjk1dAg5eJmjxX/NSJNVSNgW9lhR2oTd5r+R20fYAHnMm4DPKus9fR5K9qYcCUsvNK6rJJULj3TRJ0/muEaTajxGidTOKBa9oe/aVznQ9M8a8qnHbH/ewZDQDVBYAeyk1I70iQl4hIEoXhMDafk7NP0k7L4Tb8GE9KG5EL6MsjZP3s="));
        MOB_SKINS.put(EntityType.IRON_GOLEM, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MTQ5MjYsInByb2ZpbGVJZCI6Ijc1N2Y5MGIyMjM0NDRiOGQ4ZGFjODI0MjMyZTJjZWNlIiwicHJvZmlsZU5hbWUiOiJNSEZfR29sZW0iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzg5MDkxZDc5ZWEwZjU5ZWY3ZWY5NGQ3YmJhNmU1ZjE3ZjJmN2Q0NTcyYzQ0ZjkwZjc2YzQ4MTlhNzE0In19fQ==", "Smgrh2iBssFVnQKHSQojBUyg6QM7/8Z4c2J2s6SmlZ1Yvt7byBdMGXqfYZWRvpKGI1wCaG3oiOVOTdh/pZDyqSGD2QpUI3+A3I8uUxUUVgB+92WA8zKaMQ/QKrCuJ540TIJsXVwnwEDwEDiKrPhvIfgaBim9GmJIq4ecUK+Auov2BN4HDQOFfb8YrM204kJSnKrCez5bI4xEprv1n09y0cnJJmb5JHZ9ny083KLcosQD3BqAgGX78viC94rVZjRCKICnfC6j7KumKro/gYPo2fHpc2UeeKGz6Z9Mva6niPP7guQ54LzsBkG/AVEAHyQgHoUgbvDYoFW7K003rTmOjpKl8eytO74dKlT5BWDQU93V6z9S5IPi6SDg7lR4ZdpoCEjhT3Dw75YpJK9XVgMsQfmrURotXXIOo+1XX0VeMeNpXyQAPNbiaCBYM9Q8zX6clZ73JpeqNJg5QrGT95t4u6ImshSS0L/OgaeBYM731oAS3Qk5o8EcRGeuKx0DsoLmjqwSrcPpZZ5w99wa86s6tCWRVc78OHSP976pIpUxTNxO7UAc7NKDf0DP3Z7GhAbqjJDx3csinMmb8iXKlk4ESAcAwzsd+9YGiZ9EOInhqh2DuaPbleXWaF0kQOhm914mihRooeSLoq/mXlH8H2KjTUR8QOLle+ckBp+tqKfoF4I="));
        MOB_SKINS.put(EntityType.PIG_ZOMBIE, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MjU2ODAsInByb2ZpbGVJZCI6IjE4YTJiYjUwMzM0YTQwODQ5MTg0MmMzODAyNTFhMjRiIiwicHJvZmlsZU5hbWUiOiJNSEZfUGlnWm9tYmllIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS83NGU5YzZlOTg1ODJmZmQ4ZmY4ZmViMzMyMmNkMTg0OWM0M2ZiMTZiMTU4YWJiMTFjYTdiNDJlZGE3NzQzZWIifX19", "EiqU/OHDzxVJ7dpkjBtfUWcMgo0uTRMuhjhqZaTsa2Vgb4uZvvO6luxFLY2T9maA+HBVuBZ6r99NkZRnlO9/GBjEeMnC6+Uxtn1h27x6k0OzAGdIhLeo9Lbs2cAxcYTK+mCnkLxr8sfDmh0xEBRx+ejrvZY/G3GHIMaxBbRaIV3Lsy4bae2W0zPyB6MZ35Ydu8Or0QfDueAXw0vX3XuiPN0mmzrQybkKsXTG3QGyaTdl3OG3/hKE5N2uKpbuXFE8dQLKUh4B41yP/LGVOEI9DZw44FzZLY8IpbJSz0ZSsvrqItDMHhyhcK8pQ7o5yd4OEEP+D8IiPQGAqgbl/1Pq6kIlvWAb0PIYIgOpwMbhmX5BkCghsc6M6tHsbFkNkWV5TVd+oLdk4NvBeUEPxSNRpoe1SqpBUc7i8LWfhsKaMS3563NEhJLuAm0BXKpTJtgpHXeL/VlsZXYWQDm7m7z3x1fCY4WXfHBU119RDKNQDlDaCkNshQUaxClf3uhNzE5YsXy0fwzAhjPfDYaRYjemANSdJSQsQuf7zQ0KAoKy0bFOy0aN8+PXQ174XwVgoTkRsqo9wRK/ZhKeS8cYTosxeMklimyayfvYyf132syVRZSo/iiRYZtnmN0DPleDTb6vrpEZ96R9d8xpw9SKJDPO1ZMAj8rLXVIJh09mppO/dqg="));
        MOB_SKINS.put(EntityType.BLAZE, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MjAyOTYsInByb2ZpbGVJZCI6IjRjMzhlZDExNTk2YTRmZDRhYjFkMjZmMzg2YzFjYmFjIiwicHJvZmlsZU5hbWUiOiJNSEZfQmxhemUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2I3OGVmMmU0Y2YyYzQxYTJkMTRiZmRlOWNhZmYxMDIxOWY1YjFiZjViMzVhNDllYjUxYzY0Njc4ODJjYjVmMCJ9fX0=", "RnEzoI9dE9xwAKekixMf24vtTvhLgrjKG0kj0kRHb8qUL3EiEj37vT/Z3jjH0CZ+Hn48wI6ilXz/JSJaH+AmLEcPyiYd/2S/k4Hlk0QEt6E7wWIK36a6cLF+uKUQs/rFoSWRIYXyYX+oQ2TJvylzMWVsJGxq8u3JbjmK6rMLkyzs9ZdXr2CCEMEBLNYZdTfKUyT7EDUAfT61RftLidINHAawCXDZ2+K2Hc7VHTbmbLCHqZ8XWyv6tUY2sA2qfm2W2NbyAtd7/fcThIIhv2yabGs1vU8JDUrwA/fX7PK9iKPu05BSPrHNwSkqcUFXxkt88K6nOeDAnFYb9jzoU1vm6kXX0n8/yrRxJ3npjOs/YQmR7Ed1fBvT/og/tvcD2DiuyptN4w4fzwzQeqenrnIHt7Na/1VI+3gd+5u1mv6tny4qg+BmFBHU3nGlKT5dmbRzpr7MKek2SkBmkw8K9r5cqHDSQeh6Pnc60gtuIsOKbHsmgFezRmqlI7d9vv4kqMAGMYqTub+/t8LOwSmjD8+pWfkhfCqB8tQ+wqaMqTQh91fFMW0+pdfNksIjvJLJ5ZMSaL2m4WuZoxf2ZskZzXYixLCp69tsh2yiPl3vn13onO+kiQGO0R6pc3YPmalPQjF6Qa2hvowLMpiqB2tzLbj8lfqNEZFBb1VOn8vImiZbJZI="));
        MOB_SKINS.put(EntityType.GHAST, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MzExNTAsInByb2ZpbGVJZCI6IjA2MzA4NWE2Nzk3ZjQ3ODViZTFhMjFjZDc1ODBmNzUyIiwicHJvZmlsZU5hbWUiOiJNSEZfR2hhc3QiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzhiNmE3MjEzOGQ2OWZiYmQyZmVhM2ZhMjUxY2FiZDg3MTUyZTRmMWM5N2U1Zjk4NmJmNjg1NTcxZGIzY2MwIn19fQ==", "Jna4wrXN45Ga9YwVOTb5M778l1PXRW+ILNk2EZZeVklW7qDj6uLflB6lrffqYhOxzC3igM5Ad9ug8A/Ngiz0hGy9oyXN5QVFaQTZEcqkNCyhYSjEHE2g41Q+/ign2y3knDQETRrRjeykpHUgj9YnYjR3jFg2i9QF9fWpFRoDlzpv4qkKtr08lbvFQqpztFMuJG9Yvs28AM3qka11pkwXIOWN+U8SGhaFTz4lzKTsnuon2YDvFE9/Db06OtBZlTst9Mh6qQb937v5gJ4ni13JHm9fKXW2q4USwSoDKc45bixjr75JUm10m7b9LKaVEFvqEwmwoLEPt+U8QDhSTNnzmata4YxoqVhvl+QX+rODkmvIT2sslYPHVCdCr2QMr/M43dRmFR9/PIhenMD/GYSPsZDnGUF8zI3A9Wj2kvUCUL9D2qmthQ7trIfvA74QSbfL5Z6uwiIztGSVtVBXxOxhhKPk59sfkU+8qk1Fgq5RysLKOnb4lWYUWv5A+jSNVbq6aiPPYQyzogMJUgc6IYq45klbgB6vlVvB6CvMFVtElEPcP+anMw5WRzK1MFmtE3rFwiGIXxeJ52RXUxylb1/MoG1Ix1kZbTDZ/QP8SqYnpeNukwwQdc5rfQ0N5qC3w3qurfmDk7rPPqyYNCEa7G8A+Hye6oUNlL5DPJ553UHJZck="));
        MOB_SKINS.put(EntityType.GUARDIAN, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2MzY1MDgsInByb2ZpbGVJZCI6IjQwMDVjYWMxYTE2YTQ1YWE5ZTcyN2ZiNTE0MzM1NzE3IiwicHJvZmlsZU5hbWUiOiJNSEZfR3VhcmRpYW4iLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzkzMmMyNDUyNGM4MmFiM2IzZTU3YzIwNTJjNTMzZjEzZGQ4YzBiZWI4YmRkMDYzNjliYjI1NTRkYTg2YzEyMyJ9fX0=", "q1xSZ4pM4rBaXs8PBIInu3PdGBKTpgXAoQavLr67zHfGYzjWycV/JbgBJYycGv89ntXDs/iDkBv30Xb470nNKwW8lBGmgATXb1R0R6rbk8mz4V19MSa1Y7uQNFGPwMK5PxQway7i8hb4x9h+aaXn0xFeVL8ecv2pbtdX47PmW5sI2tPiGPUPkBn45fY2n7L6QP50CnWoG3a+ndoHQ59NTMoI0J9+7VuZGVjQHjWrK51lhF7cgIYOuSFjqa4ePp0Mvj7WrnrzFeAf6r+/1BU5Jo3wrzH8ES1F4rqppY6ga3+hfAEK7e8DyaYb/lLfy85eiUi+L007rxqoFy+s7cGMVI1lfO+rFAgHdxiB5IcK3xmMn/ThbfmydOXHK2IiB1Psn1YNuV4Hw7wv3hONEl4k6Ytd/CjZ5NmiRWV0LtLoIYogpZusXI3g76JL/BzKWOj4eu0FQ+JSnYjGXg3x/JwyfTPPD8uvFEm/OvlRUa1rOuMT7zBYVjxnjoOYCcMoPUYTZBXCJl1qMl2aCw/EG36L4JxNKNCc7JPHlk5byLtr9/m5rBM3iNLHIEcY1nVGzrAtoZg+sYh+5Y5q47nCg4OCUXNcPDcCyfpPeaPqJU5YSVRULRPiLG9RIYsNGuwDr8u63eNB1Bh9k9CGQpM0fBuJjh7zkjMJ/NKrnCY0w7gZHMQ="));
        MOB_SKINS.put(EntityType.GUARDIAN, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTI2NDE4ODIsInByb2ZpbGVJZCI6IjczMmFiMGIwNTQ4YTQ5MGI4NjgxYWExY2E5MmIxMWExIiwicHJvZmlsZU5hbWUiOiJNSEZfRUd1YXJkaWFuIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS8xYzc5NzQ4MmExNGJmY2I4NzcyNTdjYjJjZmYxYjZlNmE4Yjg0MTMzMzZmZmI0YzI5YTYxMzkyNzhiNDM2YiJ9fX0=", "GFsAu3Lv7nPlwnWGmt3whR7sQc2rMCUjGlNlafBkVeLBLK3bZei2wK7KkJlWMmpQTpOiiyaoQB6hLXPYF7vfYnX20pSfq0IHM0nGWXVAZePsYS+N9dj3nsA2WFaDlkXQfi16zIZgTG/LDMmRKhTqsDXiUM7me7kqJ1uy9cMOB2+IUKsLJwZ01WTo5OFDCTLVdE+B8y9s/KZPsCXb39K/SdkbQEh1Aa5Bru6QoV8latLIHyY9bMZzH9an2zVyzAn0J3TaIixirWAdnmgHf8UmE3L2zysq7q4anYw7X9kCn/wvjgwz5wLrCE71GMEm3FXSrjCpJz38npMKc3tVHi6Go+WUzJ8Y9r80U7ffGgSAPyyM96pQl4TNH/th/wJ9lBdGi0ZT6yK5dlfaVSFPGIKSswqzYrNl5YcoLwiJ/YIPuZvKQi5fOuVbegm7bHeHYRt4iE6o5E2ZGr29JPAasm3nF4VDLCzLKW3qEoMZ+6xn+zglew1CcQPoGc5N9km5Orx+uNOmK/s0so5ofL5ZUrRn579e539RyMNfFg75UExIC4kn+qJe7BeCZc2uNYn9OFnfs4IL7mYBnNpwIyNSYOD+R4TYRRHfnykRXEt6cGPGhxRmCXgOiMq/sDxxPeEM0SOrjAckx5Bm5RLBcbAh0LZcU2+1gMLcEOi7mfVUYDGWlws="));
        MOB_SKINS.put(EntityType.SNOWMAN, new Skin("eyJ0aW1lc3RhbXAiOjE0NTU5OTQ1MzA2OTMsInByb2ZpbGVJZCI6IjUzZjE3NTM0NTBhOTQ1NjE4YWZhMjk4ODNiODRhMWNjIiwicHJvZmlsZU5hbWUiOiJTbm93bWFuXzciLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzhlOGQyMDZmNjFlNmRlOGE3OWQwY2IwYmNkOThhY2VkNDY0Y2JmZWZjOTIxYjQxNjBhMjUyODIxNjMxMTJhIn19fQ==", "Y1ujadK6OTRrm6WleyL0Dujj2qoBFZKAshem2gKRbwBjUQOWZ6jhlKzl9z7t1L/nKCAdjyFFxHdLOIlqh41l+v/8HxnQsyIl4mEzYQsN77s2uBE4pUGq+UH6hhTMKNIvqDkOruvDuRBe31k9Q731MP7zq/MUBeYT9OTQqf6eRvh+liwC6uxPW1UWDK5TQzjAYXZl/wdFUcbGL4x5/u5S6WcA5syV8SiJ9NAdrn9YBX6B4rHpByrOcMz9jeTKs5kGdc30NiLTkiYSOo97oxqCKCqdSdN/KPUqx6kcgYeWW2mxzFVjnPGMdTqEGM9N0doHuPn+W2YFwp8yywx5h3ZqWgQwKAMmpHwJKAvYvI+B8vu6E/cbzCn6H+LsqHbtBFnyQXxtH11ePxUdHCLcGwvWiI/3rURnD5F8Dz3ZYpJNCKaa4dg6UQm0Rs5nwvOrwJ5VxusZv9kIHEYEAM4NuwE/NHtpBhBQc7t665x5XLOfIdaU77OwwXlVNfvCRq3QqRkA4AzyqfIxnFpQ/SQR96vfa9OMHm05ktnxOq8pMAAY2FKF/Saqn2FM94FxjZ4NXHFW+rfkk4fMyjund/NUfuGoEOThVCVGIfpjUWbQtp4h+vxk5Qo38DqiYVqWRhT6eWHcKOxxZngY4JbzF07f/jh3tSgq1tI0WKz79J+slHS5Yx4="));

        profileCache = CacheBuilder.newBuilder().maximumSize(500).expireAfterWrite(4, TimeUnit.HOURS).build(new CacheLoader<String, String>() {
            @Override
            public String load(String uuid) throws IOException {
                return getProfileText(uuid);
            }
        });
    }

    /**
     * Get a skin from an entity type.
     * @param type
     * @return
     */
    public static Skin getMob(EntityType type) {
        return getMob(type, 0);
    }

    /**
     * Get a skin from an entity type and alternate form number.
     * @param type
     * @param alternateForm Used if multiple versions of this mob exist (wither skeleton = 1, ender guardian = 1)
     * @return
     */
    public static Skin getMob(EntityType type, int alternateForm) {
        List<Skin> skins = MOB_SKINS.get(type);
        if (skins == null || skins.size() == 0)
            return DEFAULT_SKIN;
        if (alternateForm >= skins.size())
            return DEFAULT_SKIN;
        return skins.get(alternateForm);
    }

    /**
     * Get a cool skin based on a chat color (grey square with a colored dot).
     * @param color
     * @return
     */
    public static Skin getDot(ChatColor color) {
        return DOT_SKINS.get(color.ordinal());
    }

    /**
     * Get a skin from an online player.
     * @param player
     * @return
     */
    public static Skin getPlayer(Player player) {
        WrappedSignedProperty property = DEFAULT_SKIN.getProperty();
        Collection<WrappedSignedProperty> properties = WrappedGameProfile.fromPlayer(player).getProperties().get(Skin.TEXTURE_KEY);
        if (properties != null && properties.size() > 0)
            property = properties.iterator().next();
        return new Skin(property);
    }

    /**
     * Get a Minecraft user's skin.
     * @param username
     * @return
     */
    public static Skin getPlayer(String username) {
        if (!Bukkit.getOnlineMode()) {
            Tabbed.log(Level.SEVERE, "online-mode must be true to fetch skins");
            return DEFAULT_SKIN;
        }
        return getPlayer(Bukkit.getOfflinePlayer(username).getUniqueId());
    }

    /**
     * Get a Minecraft user's skin.
     * @param uuid
     * @return
     */
    public static Skin getPlayer(UUID uuid) {
        try {
            return downloadSkin(uuid.toString().replace("-", ""));
        } catch (Exception e) {
            e.printStackTrace();
            return DEFAULT_SKIN;
        }
    }

    private static Skin downloadSkin(String uuid) {
        uuid = addUuidDashes(uuid);

        WrappedSignedProperty property = null;

        JSONObject json;
        try {
            json = (JSONObject) new JSONParser().parse(profileCache.get(uuid));
        } catch (Exception e) {
            Tabbed.log(Level.SEVERE, "Unable to fetch skin for uuid " + uuid);
            e.printStackTrace();
            return DEFAULT_SKIN;
        }
        JSONArray properties = (JSONArray) json.get("properties");

        for (Object object : properties) {
            JSONObject jsonObject = (JSONObject) object;
            String name = (String) jsonObject.get("name");
            String value = (String) jsonObject.get("value");
            String signature = (String) jsonObject.get("signature");
            if (name.equals(Skin.TEXTURE_KEY))
                property = new WrappedSignedProperty(name, value, signature);
        }

        if (property == null)
            return DEFAULT_SKIN;

        return new Skin(property);
    }

    private static String addUuidDashes(String uuid) {
        return uuid.replaceAll("(\\w{8})(\\w{4})(\\w{4})(\\w{4})(\\w{12})", "$1-$2-$3-$4-$5");
    }

    private static String getProfileText(String uuid) throws IOException {
        uuid = uuid.replace("-", "");

        URL url = new URL(profileUrl + uuid + "?unsigned=false");
        URLConnection connection = url.openConnection();
        return CharStreams.toString(new InputStreamReader(connection.getInputStream(), Charsets.UTF_8));
    }
}