private IEnumerable <string> GetSignature(Seed targetSeed) { var signatures = new HashSet <string>(); { var storeTreeItems = new List <StoreTreeItem>(); { var storeCategorizeTreeItems = new List <StoreCategorizeTreeItem>(); storeCategorizeTreeItems.Add(Settings.Instance.StoreUploadControl_StoreCategorizeTreeItem); storeCategorizeTreeItems.Add(Settings.Instance.StoreDownloadControl_StoreCategorizeTreeItem); for (int i = 0; i < storeCategorizeTreeItems.Count; i++) { storeCategorizeTreeItems.AddRange(storeCategorizeTreeItems[i].Children); storeTreeItems.AddRange(storeCategorizeTreeItems[i].StoreTreeItems); } } foreach (var storeTreeItem in storeTreeItems) { var boxList = new List <Box>(); var seedList = new HashSet <Seed>(); boxList.AddRange(storeTreeItem.Boxes); for (int i = 0; i < boxList.Count; i++) { boxList.AddRange(boxList[i].Boxes); seedList.UnionWith(boxList[i].Seeds); } if (seedList.Contains(targetSeed)) { signatures.Add(storeTreeItem.Signature); } } } { foreach (var signature in Inspect.GetTrustSignatures()) { Store store; if (!Settings.Instance.Cache_Stores.TryGetValue(signature, out store)) { continue; } var boxList = new List <Box>(); var seedList = new HashSet <Seed>(); boxList.AddRange(store.Boxes); for (int i = 0; i < boxList.Count; i++) { boxList.AddRange(boxList[i].Boxes); seedList.UnionWith(boxList[i].Seeds); } if (seedList.Contains(targetSeed)) { signatures.Add(signature); } } } return(signatures.ToArray()); }