diff --git a/PKHeX.Core/Saves/Access/SaveBlockAccessorSWSH.cs b/PKHeX.Core/Saves/Access/SaveBlockAccessorSWSH.cs index 7759c63f9..3c0fb5007 100644 --- a/PKHeX.Core/Saves/Access/SaveBlockAccessorSWSH.cs +++ b/PKHeX.Core/Saves/Access/SaveBlockAccessorSWSH.cs @@ -1,10 +1,12 @@ using System.Collections.Generic; +using System.Linq; namespace PKHeX.Core { public class SaveBlockAccessorSWSH : ISaveBlockAccessor, ISaveBlock8Main { public IReadOnlyList BlockInfo { get; } + public Dictionary BlockDictionary { get; } public Box8 BoxInfo { get; } public Party8 PartyInfo { get; } public MyItem Items { get; } @@ -23,40 +25,45 @@ public class SaveBlockAccessorSWSH : ISaveBlockAccessor, ISaveBlock8Mai public SaveBlockAccessorSWSH(SAV8SWSH sav) { BlockInfo = sav.AllBlocks; - BoxInfo = new Box8(sav, GetBlock(IBox)); - PartyInfo = new Party8(sav, GetBlock(IParty)); - Items = new MyItem8(sav, GetBlock(IItem)); - Zukan = new Zukan8(sav, GetBlock(IZukan)); - MyStatus = new MyStatus8(sav, GetBlock(IMyStatus)); - Misc = new Misc8(sav, GetBlock(IMisc)); - BoxLayout = new BoxLayout8(sav, GetBlock(IBoxLayout)); - TrainerCard = new TrainerCard8(sav, GetBlock(ITrainerCard)); - Played = new PlayTime8(sav, GetBlock(IPlayTime)); - Fused = new Fused8(sav, GetBlock(IFused)); - Daycare = new Daycare8(sav, GetBlock(IDaycare)); - Records = new Record8(sav, GetBlock(IRecord), Core.Records.MaxType_SWSH); - Fashion = new FashionUnlock8(sav, GetBlock(IFashionUnlock)); - Raid = new RaidSpawnList8(sav, GetBlock(IRaidSpawnList)); + BlockDictionary = sav.AllBlocks.ToDictionary(z => z.Key); + BoxInfo = new Box8(sav, GetBlock(KBox)); + PartyInfo = new Party8(sav, GetBlock(KParty)); + Items = new MyItem8(sav, GetBlock(KItem)); + Zukan = new Zukan8(sav, GetBlock(KZukan)); + MyStatus = new MyStatus8(sav, GetBlock(KMyStatus)); + Misc = new Misc8(sav, GetBlock(KMisc)); + BoxLayout = new BoxLayout8(sav, GetBlock(KBoxLayout)); + TrainerCard = new TrainerCard8(sav, GetBlock(KTrainerCard)); + Played = new PlayTime8(sav, GetBlock(KPlayTime)); + Fused = new Fused8(sav, GetBlock(KFused)); + Daycare = new Daycare8(sav, GetBlock(KDaycare)); + Records = new Record8(sav, GetBlock(KRecord), Core.Records.MaxType_SWSH); + Fashion = new FashionUnlock8(sav, GetBlock(KFashionUnlock)); + Raid = new RaidSpawnList8(sav, GetBlock(KRaidSpawnList)); } - private const int IBox = 143; // Box Data - private const int IMysteryGift = 186; // Mystery Gift Data - private const int IItem = 191; // Items - // Coordinates? 253 - private const int IBoxLayout = 275; // Box Names - private const int IMisc = 288; // Money - private const int IParty = 428; // Party Data - private const int IDaycare = 465; // Daycare slots (2 daycares) - private const int IRecord = 544; - private const int IZukan = 699; // PokeDex - private const int ITrainerCard = 1259; // Trainer Card - private const int IPlayTime = 1302; // Time Played - private const int IRaidSpawnList = 1326; // Nest current values (hash, seed, meta) - private const int IRepel = 1469; - private const int IFused = 1789; // Fused PKM (*3) - private const int IFashionUnlock = 1989; // Fashion unlock bool array (owned for (each apparel type) * 0x80, then another array for "new") - private const int IMyStatus = 2275; // Trainer Details + /* To dump key list of current format, use the following in the immediate window, and update Meta8 + var blocks = BlockInfo.Where(z => z.Data.Length != 0).Select(z => new KeyValuePair(z.Key, z.Data.Length)).Select(z => $"{z.Key:X8}, {z.Value:X5},"); + System.IO.File.WriteAllLines("blank.txt", blocks.ToArray()); + */ + private const uint KBox = 0x0d66012c; // Box Data + private const uint KMysteryGift = 0x112d5141; // Mystery Gift Data + private const uint KItem = 0x1177c2c4; // Items + private const uint KCoordinates = 0x16aaa7fa; // Coordinates? + private const uint KBoxLayout = 0x19722c89; // Box Names + private const uint KMisc = 0x1b882b09; // Money + private const uint KParty = 0x2985fe5d; // Party Data + private const uint KDaycare = 0x2d6fba6a; // Daycare slots (2 daycares) + private const uint KRecord = 0x37da95a3; + private const uint KZukan = 0x4716c404; // PokeDex + private const uint KTrainerCard = 0x874da6fa; // Trainer Card + private const uint KPlayTime = 0x8cbbfd90; // Time Played + private const uint KRaidSpawnList = 0x9033eb7b; // Nest current values (hash, seed, meta) + private const uint KRepel = 0x9ec079da; + private const uint KFused = 0xc0de5c5f; // Fused PKM (*3) + private const uint KFashionUnlock = 0xd224f9ac; // Fashion unlock bool array (owned for (each apparel type) * 0x80, then another array for "new") + private const uint KMyStatus = 0xf25c070e; // Trainer Details - public SCBlock GetBlock(int index) => BlockInfo[index]; + public SCBlock GetBlock(uint key) => BlockDictionary[key]; } } \ No newline at end of file diff --git a/PKHeX.Core/Saves/MemeCrypto/SwishCrypto.cs b/PKHeX.Core/Saves/MemeCrypto/SwishCrypto.cs index 7e87ba3ac..cb6a0e374 100644 --- a/PKHeX.Core/Saves/MemeCrypto/SwishCrypto.cs +++ b/PKHeX.Core/Saves/MemeCrypto/SwishCrypto.cs @@ -151,7 +151,7 @@ public sealed class SCBlock : BlockInfo /// /// Used to encrypt the rest of the block. /// - public uint Key { get; } + public uint Key { get; set; } /// /// What kind of block is it? diff --git a/PKHeX.Core/Saves/Substructures/Gen8/Meta8.cs b/PKHeX.Core/Saves/Substructures/Gen8/Meta8.cs index b01c5ac96..c81264139 100644 --- a/PKHeX.Core/Saves/Substructures/Gen8/Meta8.cs +++ b/PKHeX.Core/Saves/Substructures/Gen8/Meta8.cs @@ -1,105 +1,125 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; namespace PKHeX.Core { public static class Meta8 { - public static SCBlock[] GetBlankDataSWSH() => GetBlankBlockArray(DefaultChunkSizesSWSH, 2408); + public static SCBlock[] GetBlankDataSWSH() => GetBlankBlockArray(DefaultChunkSizesSWSH); - private static SCBlock[] GetBlankBlockArray(IReadOnlyList arr, int totalBlocks) + private static SCBlock[] GetBlankBlockArray(IReadOnlyList arr) { - var blocks = new SCBlock[totalBlocks]; + var blocks = new SCBlock[arr.Count / 2]; for (int i = 0; i < blocks.Length; i++) - blocks[i] = new SCBlock {Data = Array.Empty()}; - - for (int i = 0; i < arr.Count; i += 2) { - int index = arr[i]; - int length = arr[i + 1]; - blocks[index].Data = new byte[length]; + int index = i * 2; + blocks[i] = new SCBlock { Key = arr[index], Data = new byte[(int)arr[index + 1]] }; } return blocks; } - private static readonly int[] DefaultChunkSizesSWSH = + private static readonly uint[] DefaultChunkSizesSWSH = { - 0007, 0x00004, 0011, 0x00001, 0013, 0x00009, 0023, 0x00004, 0024, 0x00004, - 0025, 0x00004, 0048, 0x056F8, 0057, 0x00004, 0058, 0x00004, 0074, 0x00004, - 0075, 0x00004, 0076, 0x00004, 0097, 0x00004, 0104, 0x00004, 0105, 0x00004, - 0106, 0x00004, 0107, 0x00004, 0108, 0x00004, 0109, 0x00004, 0110, 0x00004, - 0111, 0x00004, 0112, 0x00004, 0113, 0x00004, 0114, 0x00004, 0115, 0x00004, - 0116, 0x00004, 0117, 0x00004, 0129, 0x00004, 0130, 0x00004, 0134, 0x00004, - 0136, 0x00004, 0141, 0x00004, 0142, 0x00004, 0143, 0x50A00, 0145, 0x00004, - 0147, 0x00004, 0148, 0x00001, 0150, 0x00004, 0151, 0x00004, 0168, 0x00004, - 0177, 0x00004, 0186, 0x017C8, 0190, 0x00004, 0191, 0x012F8, 0199, 0x00004, - 0201, 0x00004, 0210, 0x00004, 0217, 0x00004, 0229, 0x00880, 0231, 0x00648, - 0235, 0x00004, 0236, 0x00648, 0237, 0x00004, 0238, 0x00004, 0239, 0x00004, - 0240, 0x00004, 0241, 0x00004, 0242, 0x00004, 0243, 0x00004, 0244, 0x00004, - 0249, 0x00004, 0252, 0x00880, 0253, 0x06010, 0262, 0x00004, 0266, 0x00004, - 0268, 0x00880, 0269, 0x00004, 0272, 0x00880, 0273, 0x00084, 0275, 0x00440, - 0276, 0x00880, 0286, 0x00001, 0288, 0x0021C, 0308, 0x00004, 0352, 0x00132, - 0363, 0x00008, 0370, 0x00004, 0378, 0x00004, 0380, 0x00004, 0381, 0x00004, - 0382, 0x00004, 0386, 0x00004, 0387, 0x00004, 0398, 0x00004, 0399, 0x00004, - 0402, 0x00004, 0403, 0x00004, 0404, 0x00004, 0405, 0x00004, 0406, 0x00004, - 0407, 0x00004, 0408, 0x00004, 0409, 0x00004, 0414, 0x00004, 0418, 0x21FC0, - 0419, 0x00004, 0420, 0x00004, 0428, 0x00814, 0431, 0x00001, 0440, 0x00004, - 0465, 0x00570, 0470, 0x00004, 0476, 0x00020, 0481, 0x00004, 0484, 0x00008, - 0500, 0x00004, 0502, 0x00004, 0509, 0x00048, 0518, 0x00004, 0519, 0x00004, - 0526, 0x00004, 0532, 0x00004, 0536, 0x00004, 0539, 0x00004, 0544, 0x000C8, - 0546, 0x00004, 0549, 0x00D50, 0557, 0x00004, 0558, 0x00004, 0561, 0x00004, - 0570, 0x00004, 0582, 0x033D0, 0614, 0x00004, 0615, 0x00004, 0616, 0x00004, - 0617, 0x00004, 0619, 0x00002, 0626, 0x00004, 0627, 0x00004, 0629, 0x00001, - 0630, 0x00004, 0635, 0x00002, 0639, 0x00001, 0644, 0x00004, 0658, 0x00004, - 0659, 0x00004, 0661, 0x00001, 0668, 0x00038, 0678, 0x00004, 0692, 0x00028, - 0693, 0x00004, 0699, 0x04B00, 0705, 0x00004, 0718, 0x00004, 0727, 0x00004, - 0728, 0x00004, 0729, 0x00004, 0732, 0x00001, 0735, 0x00004, 0738, 0x00004, - 0741, 0x00004, 0743, 0x00004, 0748, 0x00004, 0777, 0x02964, 0811, 0x00004, - 0822, 0x02304, 0829, 0x02304, 0841, 0x02304, 0843, 0x00004, 0850, 0x02304, - 0865, 0x02304, 0871, 0x02304, 0877, 0x02304, 0879, 0x00004, 0889, 0x02304, - 0891, 0x00004, 0900, 0x00004, 0902, 0x00004, 0908, 0x00002, 0912, 0x00004, - 0916, 0x00001, 0926, 0x00810, 0928, 0x02304, 0929, 0x00004, 0933, 0x00004, - 0936, 0x00002, 0938, 0x00004, 0941, 0x00002, 0953, 0x02304, 0955, 0x00004, - 0971, 0x00004, 0980, 0x00004, 0987, 0x00004, 0988, 0x00004, 0992, 0x00004, - 0995, 0x00004, 0996, 0x0426C, 1002, 0x00004, 1003, 0x00004, 1012, 0x00004, - 1013, 0x00004, 1015, 0x00004, 1016, 0x00132, 1018, 0x00004, 1020, 0x00004, - 1024, 0x00004, 1027, 0x00002, 1039, 0x067D0, 1042, 0x00004, 1048, 0x00004, - 1058, 0x00004, 1059, 0x00004, 1060, 0x00001, 1061, 0x00132, 1065, 0x00004, - 1082, 0x00004, 1106, 0x00004, 1110, 0x00001, 1115, 0x04610, 1119, 0x00004, - 1123, 0x00004, 1128, 0x00004, 1129, 0x00004, 1134, 0x01F50, 1139, 0x00004, - 1146, 0x00004, 1151, 0x00004, 1158, 0x00004, 1169, 0x00020, 1173, 0x00008, - 1178, 0x00004, 1187, 0x00004, 1195, 0x00004, 1238, 0x00004, 1239, 0x00132, - 1251, 0x00004, 1256, 0x00004, 1259, 0x001D0, 1261, 0x00004, 1270, 0x033D0, - 1272, 0x033D0, 1278, 0x00004, 1288, 0x00004, 1298, 0x00004, 1300, 0x00004, - 1301, 0x00038, 1302, 0x00008, 1304, 0x00004, 1305, 0x000D0, 1308, 0x00004, - 1315, 0x00004, 1318, 0x00004, 1321, 0x00004, 1322, 0x00004, 1326, 0x00A68, - 1328, 0x00004, 1332, 0x00004, 1336, 0x00004, 1342, 0x00004, 1344, 0x00004, - 1346, 0x00055, 1347, 0x00004, 1355, 0x00132, 1356, 0x00004, 1373, 0x00019, - 1377, 0x00002, 1382, 0x00400, 1390, 0x00004, 1400, 0x00004, 1406, 0x00004, - 1407, 0x00004, 1411, 0x00004, 1412, 0x00004, 1413, 0x00004, 1433, 0x00004, - 1436, 0x00132, 1469, 0x00002, 1489, 0x00004, 1498, 0x00004, 1509, 0x00019, - 1517, 0x00004, 1518, 0x00004, 1526, 0x00004, 1536, 0x00004, 1544, 0x00004, - 1549, 0x00004, 1551, 0x00268, 1554, 0x00004, 1573, 0x00004, 1590, 0x00280, - 1591, 0x1241C, 1592, 0x00004, 1594, 0x00004, 1597, 0x023D4, 1603, 0x00004, - 1604, 0x00004, 1605, 0x00004, 1606, 0x00004, 1616, 0x00004, 1635, 0x000F8, - 1637, 0x00004, 1638, 0x00028, 1643, 0x00004, 1670, 0x50C20, 1690, 0x0001E, - 1730, 0x00004, 1744, 0x00004, 1765, 0x00004, 1784, 0x00004, 1789, 0x00408, - 1790, 0x00004, 1793, 0x00004, 1796, 0x00004, 1808, 0x000A0, 1814, 0x00004, - 1830, 0x00004, 1836, 0x00132, 1841, 0x00004, 1842, 0x00002, 1843, 0x00004, - 1848, 0x00004, 1849, 0x00004, 1851, 0x00004, 1855, 0x00004, 1868, 0x00004, - 1873, 0x00004, 1890, 0x0001C, 1891, 0x00001, 1892, 0x00004, 1912, 0x00004, - 1915, 0x00132, 1989, 0x00F1C, 2073, 0x00008, 2104, 0x00004, 2109, 0x00008, - 2111, 0x02304, 2116, 0x02304, 2128, 0x00004, 2130, 0x00001, 2131, 0x00001, - 2135, 0x00320, 2136, 0x00008, 2141, 0x00004, 2149, 0x02304, 2160, 0x02304, - 2165, 0x02304, 2169, 0x02304, 2197, 0x02304, 2207, 0x02304, 2209, 0x000F0, - 2213, 0x00014, 2216, 0x02304, 2222, 0x02304, 2232, 0x02304, 2234, 0x02304, - 2236, 0x00001, 2237, 0x00538, 2242, 0x033D0, 2243, 0x02304, 2246, 0x116C4, - 2248, 0x02304, 2252, 0x00002, 2253, 0x00004, 2262, 0x02304, 2269, 0x02304, - 2274, 0x02955, 2275, 0x00110, 2278, 0x02304, 2285, 0x02304, 2301, 0x00004, - 2312, 0x00004, 2313, 0x00004, 2319, 0x00004, 2321, 0x00004, 2343, 0x00004, - 2344, 0x00004, 2355, 0x00004, 2363, 0x00004, 2364, 0x02304, 2368, 0x03208, - 2373, 0x02304, 2391, 0x00004, 2396, 0x00002 + 0x0123EA7A, 0x00004, 0x017C3CBB, 0x00001, 0x0192A204, 0x00009, 0x02B647B4, 0x00004, + 0x02C163FD, 0x00004, 0x02DD636A, 0x00004, 0x0490A3C3, 0x056F8, 0x051A8415, 0x00004, + 0x053EF7F5, 0x00004, 0x066F38F5, 0x00004, 0x07165742, 0x00004, 0x071A3599, 0x00004, + 0x097D2359, 0x00004, 0x0A01FC6C, 0x00004, 0x0A01FE1F, 0x00004, 0x0A0204EB, 0x00004, + 0x0A02069E, 0x00004, 0x0A020851, 0x00004, 0x0A0515F5, 0x00004, 0x0A0517A8, 0x00004, + 0x0A05195B, 0x00004, 0x0A051B0E, 0x00004, 0x0A051CC1, 0x00004, 0x0A051E74, 0x00004, + 0x0A052027, 0x00004, 0x0A0521DA, 0x00004, 0x0A05238D, 0x00004, 0x0B90EFF8, 0x00004, + 0x0BFDEBA1, 0x00004, 0x0C7C3E38, 0x00004, 0x0CBEB855, 0x00004, 0x0CF6D916, 0x00004, + 0x0D477836, 0x00004, 0x0D591902, 0x00004, 0x0D66012C, 0x50A00, 0x0D987D50, 0x00004, + 0x0E11ED8C, 0x00004, 0x0E411743, 0x00001, 0x0E591A95, 0x00004, 0x0E85795E, 0x00004, + 0x0F591C28, 0x00004, 0x10591DBB, 0x00004, 0x112D5141, 0x017C8, 0x11591F4E, 0x00004, + 0x1177C2C4, 0x012F8, 0x125920E1, 0x00004, 0x127D6F1B, 0x00004, 0x13592274, 0x00004, + 0x14592407, 0x00004, 0x149A1DD0, 0x00880, 0x14D0124C, 0x00648, 0x1559259A, 0x00004, + 0x15D013DF, 0x00648, 0x15E9A450, 0x00004, 0x15E9A603, 0x00004, 0x15E9A7B6, 0x00004, + 0x15E9AB1C, 0x00004, 0x15E9ACCF, 0x00004, 0x15E9AE82, 0x00004, 0x15E9B035, 0x00004, + 0x15E9B701, 0x00004, 0x160CDE80, 0x00004, 0x1659272D, 0x00004, 0x169A20F6, 0x00880, + 0x16AAA7FA, 0x06010, 0x175573FB, 0x00004, 0x177786BA, 0x00004, 0x179A2289, 0x00880, + 0x17C4CBAC, 0x00004, 0x189A241C, 0x00880, 0x1920C1E4, 0x00084, 0x19722C89, 0x00440, + 0x199A25AF, 0x00880, 0x1B4C150C, 0x00001, 0x1B882B09, 0x0021C, 0x1D482A63, 0x00004, + 0x20FA6183, 0x00132, 0x224A1BD2, 0x00008, 0x24280E24, 0x00004, 0x24ADE637, 0x00004, + 0x24F1F93C, 0x00004, 0x24F1FAEF, 0x00004, 0x24F1FCA2, 0x00004, 0x2575BD5B, 0x00004, + 0x25A7CED1, 0x00004, 0x26A1BEDE, 0x00004, 0x26B99C02, 0x00004, 0x26FE3299, 0x00004, + 0x26FE3B18, 0x00004, 0x26FE3CCB, 0x00004, 0x26FE3E7E, 0x00004, 0x26FE41E4, 0x00004, + 0x26FE4397, 0x00004, 0x26FE454A, 0x00004, 0x26FE46FD, 0x00004, 0x2846B7DB, 0x00004, + 0x28E707F5, 0x21FC0, 0x28F03D03, 0x00004, 0x29036436, 0x00004, 0x2985FE5D, 0x00814, + 0x29E026C7, 0x00001, 0x2B103B06, 0x00004, 0x2D6FBA6A, 0x00570, 0x2DFA8C4E, 0x00004, + 0x2EB1B190, 0x00020, 0x30080BB6, 0x00004, 0x30671AD9, 0x00008, 0x32C4F443, 0x00004, + 0x33068788, 0x00004, 0x33F39467, 0x00048, 0x34E60D88, 0x00004, 0x355C8314, 0x00004, + 0x363D064C, 0x00004, 0x3677602D, 0x00004, 0x36E2F1C8, 0x00004, 0x375A5D09, 0x00004, + 0x37A13A2A, 0x00004, 0x37DA95A3, 0x000C8, 0x38548020, 0x00004, 0x39227A79, 0x00D50, + 0x3A68EA36, 0x00004, 0x3A6B2A3F, 0x00004, 0x3B23B1E2, 0x00004, 0x3DBE736D, 0x00004, + 0x3E8CFA15, 0x033D0, 0x3F64E8A0, 0x00004, 0x3F680229, 0x00004, 0x3F6A4232, 0x00004, + 0x3F6D5BBB, 0x00004, 0x3F8120BA, 0x00002, 0x3FE99FE1, 0x00004, 0x3FF17E2F, 0x00004, + 0x4033C7DB, 0x00001, 0x4034BE27, 0x00004, 0x40CC5A21, 0x00002, 0x41309084, 0x00001, + 0x41DAB84F, 0x00004, 0x436CAF2B, 0x00004, 0x437E8C7C, 0x00004, 0x439116A4, 0x00001, + 0x443FB19E, 0x00038, 0x4584784A, 0x00004, 0x46ACC334, 0x00028, 0x46BC63C5, 0x00004, + 0x4716C404, 0x04B00, 0x48043955, 0x00004, 0x495E3674, 0x00004, 0x4A0F21AD, 0x00004, + 0x4A69631D, 0x00004, 0x4A741A7A, 0x00004, 0x4ADD5E5C, 0x00001, 0x4AEA5A7E, 0x00004, + 0x4B8B80F6, 0x00004, 0x4BC891F4, 0x00004, 0x4C54B0CF, 0x00004, 0x4C67BA2E, 0x00004, + 0x4CDFE1B5, 0x00004, 0x50925E91, 0x02964, 0x539DD549, 0x00004, 0x54AC4B39, 0x00004, + 0x5586B8F0, 0x02304, 0x5686BA83, 0x02304, 0x5786BC16, 0x02304, 0x57F29628, 0x00004, + 0x582E4A5C, 0x00004, 0x5886BDA9, 0x02304, 0x5986BF3C, 0x02304, 0x5A86C0CF, 0x02304, + 0x5B86C262, 0x02304, 0x5BA54B4B, 0x00004, 0x5C86C3F5, 0x02304, 0x5D77D781, 0x00004, + 0x5ECE9F76, 0x00004, 0x5F135643, 0x00004, 0x5F74FCEE, 0x00002, 0x5FCEA109, 0x00004, + 0x605EBC30, 0x00001, 0x6148F6AC, 0x00810, 0x6186CBD4, 0x02304, 0x61952B51, 0x00004, + 0x61BC9BB4, 0x00004, 0x6226F5AD, 0x00002, 0x624C7B30, 0x00004, 0x62743428, 0x00002, + 0x6286CD67, 0x02304, 0x62F05895, 0x00004, 0x64CEA8E8, 0x00004, 0x65CEAA7B, 0x00004, + 0x66CEAC0E, 0x00004, 0x6701AF09, 0x00004, 0x67A659C4, 0x00004, 0x67CEADA1, 0x00004, + 0x680EEB85, 0x0426C, 0x68CEAF34, 0x00004, 0x68DE4CD2, 0x00004, 0x697141AC, 0x00004, + 0x697D1E29, 0x00004, 0x69CEB0C7, 0x00004, 0x6A09346C, 0x00132, 0x6ACEB25A, 0x00004, + 0x6BCEB3ED, 0x00004, 0x6C3B5E62, 0x00004, 0x6C99F9A0, 0x00002, 0x6EB72940, 0x067D0, + 0x6F411E56, 0x00004, 0x6F884079, 0x00004, 0x71599CC8, 0x00004, 0x7169F53F, 0x00004, + 0x71825204, 0x00001, 0x718621A5, 0x00132, 0x721AE36F, 0x00004, 0x737D1964, 0x00004, + 0x765468C3, 0x00004, 0x76921EEB, 0x00001, 0x7701D95E, 0x04610, 0x77275404, 0x00004, + 0x77BD26F2, 0x00004, 0x783D2039, 0x00004, 0x783EEFDC, 0x00004, 0x7875451A, 0x01F50, + 0x79151C13, 0x00004, 0x7964A5A9, 0x00004, 0x79C56A5C, 0x00004, 0x7AADA3E3, 0x00004, + 0x7BE8A4C6, 0x00020, 0x7C86783F, 0x00008, 0x7D249649, 0x00004, 0x7E7E36B9, 0x00004, + 0x7EF9C424, 0x00004, 0x81961C6F, 0x00004, 0x83978C43, 0x00004, 0x84B301C2, 0x00004, + 0x84FD4F59, 0x00132, 0x85FDF16A, 0x00004, 0x865605E6, 0x00004, 0x86F9272C, 0x00004, + 0x874DA6FA, 0x001D0, 0x87560779, 0x00004, 0x88F6D6AE, 0x033D0, 0x8902E727, 0x00004, + 0x89048303, 0x033D0, 0x89A3A2B6, 0x00004, 0x8A4C1426, 0x00004, 0x8A4C178C, 0x00004, + 0x8A4C193F, 0x00004, 0x8A4C1CA5, 0x00004, 0x8AD859BF, 0x00004, 0x8C560F58, 0x00004, + 0x8C804D7B, 0x00004, 0x8CA88020, 0x00038, 0x8CBBFD90, 0x00008, 0x8CD9973A, 0x00004, + 0x8D321AB8, 0x000D0, 0x8D5610EB, 0x00004, 0x8E1D74E8, 0x00004, 0x8E56127E, 0x00004, + 0x8F3C763E, 0x00004, 0x8F561411, 0x00004, 0x9033EB7B, 0x00A68, 0x905615A4, 0x00004, + 0x91561737, 0x00004, 0x91AC63B3, 0x00004, 0x925618CA, 0x00004, 0x92EB0306, 0x00004, + 0x92F4F7F0, 0x00055, 0x93561A5D, 0x00004, 0x944481DD, 0x00132, 0x9497A849, 0x00004, + 0x95F4FCA9, 0x00019, 0x96D3F39F, 0x00002, 0x9751BABE, 0x00400, 0x97D712D3, 0x00004, + 0x982972C2, 0x00004, 0x996BEEAA, 0x00004, 0x99B9F60B, 0x00004, 0x99F197E9, 0x00004, + 0x9ACC0AEC, 0x00004, 0x9ACC0E52, 0x00004, 0x9ACC1005, 0x00004, 0x9C781AE2, 0x00004, + 0x9CE5CDB5, 0x00132, 0x9EC079DA, 0x00002, 0x9EED59DE, 0x00004, 0xA0F49CFB, 0x00004, + 0xA202729F, 0x00004, 0xA3419FC7, 0x00019, 0xA4D5B8C0, 0x00004, 0xA4E3B2CF, 0x00004, + 0xA5D0453A, 0x00004, 0xA7301FBD, 0x00004, 0xA7B8C97B, 0x00004, 0xA8067616, 0x00004, + 0xA83021C1, 0x00268, 0xA8EB523D, 0x00004, 0xA9B04C50, 0x00004, 0xAA86248B, 0x00004, + 0xAD2750BE, 0x00280, 0xAD3920F5, 0x1241C, 0xAD4E4275, 0x00004, 0xAD6F9196, 0x00004, + 0xAD9DFA6A, 0x023D4, 0xAF0E8346, 0x00004, 0xAF37666F, 0x00004, 0xAF376822, 0x00004, + 0xAF3769D5, 0x00004, 0xB027F396, 0x00004, 0xB125CDDC, 0x00004, 0xB1C26FB0, 0x000F8, + 0xB1C7C436, 0x00004, 0xB1DDDCA8, 0x00028, 0xB2137AFE, 0x00004, 0xB25C772B, 0x50C20, + 0xB47E1776, 0x0001E, 0xB9E1DE0C, 0x00004, 0xBB7B57FB, 0x00004, 0xBE3BD183, 0x00004, + 0xC0362EDD, 0x00004, 0xC0DE5C5F, 0x00408, 0xC10889B1, 0x00004, 0xC1BA2375, 0x00004, + 0xC23AF741, 0x00004, 0xC3FB9E77, 0x000A0, 0xC4F35C2E, 0x00004, 0xC6102A59, 0x00004, + 0xC7161487, 0x00004, 0xC7652F1C, 0x00004, 0xC87219F6, 0x00132, 0xC94D1C48, 0x00004, + 0xC9541EB3, 0x00002, 0xC96FEA27, 0x00004, 0xC9A133BC, 0x00004, 0xC9A138D5, 0x00004, + 0xC9E6E098, 0x00004, 0xCA5FA1A3, 0x00004, 0xCA8A8CEE, 0x00004, 0xCC45DA54, 0x00004, + 0xCCC153CD, 0x00004, 0xCE07D358, 0x0001C, 0xCE4AC6FA, 0x00001, 0xCE76E539, 0x00004, + 0xD08391B9, 0x00004, 0xD105027A, 0x00132, 0xD14C95F9, 0x00004, 0xD224F9AC, 0x00F1C, + 0xD81C8A46, 0x00004, 0xDC82C7C9, 0x00004, 0xDD12C9A5, 0x00008, 0xDFAAEECD, 0x00004, + 0xE048C668, 0x00008, 0xE07F44FC, 0x02304, 0xE17F468F, 0x02304, 0xE250A142, 0x00004, + 0xE2798DDE, 0x00001, 0xE2950DA8, 0x00001, 0xE2ED6B1D, 0x00320, 0xE2F6E456, 0x00008, + 0xE3ABBA00, 0x00004, 0xE40A0EF4, 0x00004, 0xE47F4B48, 0x02304, 0xE57F4CDB, 0x02304, + 0xE67F4E6E, 0x02304, 0xE77F5001, 0x02304, 0xE87F5194, 0x02304, 0xE97F5327, 0x02304, + 0xE9BE28BF, 0x000F0, 0xEA40157B, 0x00014, 0xEA7F54BA, 0x02304, 0xEB7F564D, 0x02304, + 0xECF1AE60, 0x02304, 0xEDF1AFF3, 0x02304, 0xEE7B2ABD, 0x00001, 0xEE7D64D5, 0x00538, + 0xEEE5A3F8, 0x033D0, 0xEEF1B186, 0x02304, 0xEFCAE04E, 0x116C4, 0xEFF1B319, 0x02304, + 0xF0159FB2, 0x00004, 0xF0576532, 0x00002, 0xF06213E4, 0x00004, 0xF0F1B4AC, 0x02304, + 0xF1F1B63F, 0x02304, 0xF239E881, 0x02955, 0xF25C070E, 0x00110, 0xF2F1B7D2, 0x02304, + 0xF3F1B965, 0x02304, 0xF64719D9, 0x00004, 0xF75FC566, 0x00004, 0xF75FC719, 0x00004, + 0xF7DFDD95, 0x00004, 0xF8154AC9, 0x00004, 0xF8A1B32F, 0x00004, 0xF8E07F9B, 0x00004, + 0xFA43BB59, 0x00004, 0xFAA7378A, 0x00004, 0xFAF1C46A, 0x02304, 0xFB2AE32B, 0x03208, + 0xFBF1C5FD, 0x02304, 0xFBFF61F2, 0x00004, 0xFE2E9869, 0x00004, 0xFEB13D33, 0x00002, }; } }