private static void ExtendedCoordinateLoad(ChaFileCoordinate file)
        {
            Sideloader.Logger.Log(LogLevel.Debug, $"Loading coordinate [{file.coordinateName}]");

            var extData = ExtendedSave.GetExtendedDataById(file, UniversalAutoResolver.UARExtID);
            List <ResolveInfo> extInfo;

            if (extData == null || !extData.data.ContainsKey("info"))
            {
                Sideloader.Logger.Log(LogLevel.Debug, "No sideloader marker found");
                extInfo = null;
            }
            else
            {
                var tmpExtInfo = (object[])extData.data["info"];
                extInfo = tmpExtInfo.Select(x => ResolveInfo.Deserialize((byte[])x)).ToList();

                Sideloader.Logger.Log(LogLevel.Debug, $"Sideloader marker found, external info count: {extInfo.Count}");

                if (Sideloader.DebugLogging.Value)
                {
                    foreach (ResolveInfo info in extInfo)
                    {
                        Sideloader.Logger.Log(LogLevel.Debug, $"External info: {info.GUID} : {info.Property} : {info.Slot}");
                    }
                }
            }

            IterateCoordinatePrefixes(UniversalAutoResolver.ResolveStructure, file, extInfo);
        }
        private static void ExtendedCardImport(Dictionary <string, PluginData> importedExtendedData)
        {
            if (importedExtendedData.TryGetValue("com.bepis.sideloader.universalautoresolver", out var pluginData))
            {
                if (pluginData != null && pluginData.data.ContainsKey("info"))
                {
                    var tmpExtInfo = (object[])pluginData.data["info"];
                    var extInfo    = tmpExtInfo.Select(x => ResolveInfo.Deserialize((byte[])x)).ToList();

                    for (int i = 0; i < extInfo.Count;)
                    {
                        if (extInfo[i].Property.StartsWith("outfit0") && extInfo[i].Property.EndsWith("ClothesShoesInner"))
                        {
                            //KK had inner shoes, EC does not
                            extInfo.RemoveAt(i);
                        }
                        else if (extInfo[i].Property.StartsWith("outfit0"))

                        {
                            extInfo[i].Property = extInfo[i].Property.Replace("outfit0", "outfit");

                            //KK originally had only one emblem
                            if (extInfo[i].Property.EndsWith("Emblem"))
                            {
                                extInfo[i].Property += "0";
                            }

                            //KK has multiple shoes slots, convert to one shoes slot
                            extInfo[i].Property = extInfo[i].Property.Replace("ClothesShoesOuter", "ClothesShoes");

                            i++;
                        }
                        else if (extInfo[i].Property.StartsWith("outfit"))
                        {
                            //Remove all the excess outfits
                            extInfo.RemoveAt(i);
                        }
                        else
                        {
                            i++;
                        }
                    }

                    importedExtendedData[UniversalAutoResolver.UARExtID] = new PluginData
                    {
                        data = new Dictionary <string, object>
                        {
                            ["info"] = extInfo.Select(x => x.Serialize()).ToList()
                        }
                    };
                }
            }

            if (Sideloader.DebugLogging.Value && importedExtendedData.TryGetValue(UniversalAutoResolver.UARExtID, out var extData))
            {
                if (extData == null || !extData.data.ContainsKey("info"))
                {
                    Sideloader.Logger.Log(LogLevel.Debug, "Imported card data: No sideloader marker found");
                }
                else
                {
                    var tmpExtInfo = (List <byte[]>)extData.data["info"];
                    var extInfo    = tmpExtInfo.Select(ResolveInfo.Deserialize).ToList();

                    Sideloader.Logger.Log(LogLevel.Debug, $"Imported card data: Sideloader marker found, external info count: {extInfo.Count}");

                    foreach (ResolveInfo info in extInfo)
                    {
                        Sideloader.Logger.Log(LogLevel.Debug, $"External info: {info.GUID} : {info.Property} : {info.Slot}");
                    }
                }
            }
        }