github.com/gagliardetto/solana-go@v1.11.0/programs/address-lookup-table/address-lookup_test.go (about) 1 package addresslookuptable 2 3 import ( 4 "bytes" 5 "encoding/base64" 6 "math" 7 "testing" 8 9 bin "github.com/gagliardetto/binary" 10 "github.com/gagliardetto/solana-go" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestDecodeTable(t *testing.T) { 15 tableAccountBase64 := "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" 16 17 tableAccountBytes, err := base64.StdEncoding.DecodeString(tableAccountBase64) 18 require.NoError(t, err) 19 20 table, err := DecodeAddressLookupTableState(tableAccountBytes) 21 require.NoError(t, err) 22 23 require.Equal(t, uint64(math.MaxUint64), table.DeactivationSlot) 24 require.Equal(t, uint64(154742572), table.LastExtendedSlot) 25 require.Equal(t, uint8(232), table.LastExtendedSlotStartIndex) 26 require.Equal(t, solana.MPK("9FRhPDoDk9JrpCqc4r51qTWgdBTxM892TdjexeErQUNs"), *table.Authority) 27 require.Equal(t, uint8(232), table.LastExtendedSlotStartIndex) 28 29 expectedKeys := solana.PublicKeySlice{ 30 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 31 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 32 solana.MPK("GW1Xt9HHtvcnky8X7aBA3BoTgiirJKP5XwC5REFcZSsc"), 33 solana.MPK("GXueH9K1MzRncoTYbpLiXXC3WrKkmHUFxV5JEu8oADbw"), 34 solana.MPK("F7XioZaGe99nosYJQCahx25TKgdUGufYf6sudm1JSgu"), 35 solana.MPK("BT14DfFyNS7qcBGc8TY4HAzDev4vvqsoFBJgjtQpdM2Z"), 36 solana.MPK("C2YzN6MymD5HM2kPaH7bzcbqciyjfmpqyVaR3KA5V6z1"), 37 solana.MPK("BhHd49JYH3Hk6TV5kCjmUgf7fQSQKDjaWTokMmBhTx9o"), 38 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 39 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 40 solana.MPK("8JPid6GtND2tU3A7x7GDfPPEWwS36rMtzF7YoHU44UoA"), 41 solana.MPK("749y4fXb9SzqmrLEetQdui5iDucnNiMgCJ2uzc3y7cou"), 42 solana.MPK("ErcxwkPgLdyoVL6j2SsekZ5iysPZEDRGfAggh282kQb8"), 43 solana.MPK("EFYW6YEiCGpavuMPS1zoXhgfNkPisWkQ3bQz1b4UfKek"), 44 solana.MPK("BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo"), 45 solana.MPK("E6aTzkZKdCECgpDtBZtVpqiGjxRDSAFh1SC9CdSoVK7a"), 46 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 47 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 48 solana.MPK("ABrn4ED4AvkQ79VAXqf7ooqicJPHhZDAbC9rqcQ8ePzz"), 49 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 50 solana.MPK("D7CHbxSFSiEW3sPc486AGDwuwsmyZqhP7stG4Yo9ZHTC"), 51 solana.MPK("5o8dopjEKEy491bVHShtG6KSSHKm2JUugVqKEK7Jw7YF"), 52 solana.MPK("FN3wMZUuWkM65ZtcnAoYpsq773YxrnMfM5iAroSGttBo"), 53 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 54 solana.MPK("6uGUx583UHvFKKCnoMfnGNEFxhSWy5iXXyea4o5E9dx7"), 55 solana.MPK("Gp7wpKu9mXpxdykMD9JKW5SK2Jw1h2fttxukvcL2dnW6"), 56 solana.MPK("4mkSxT9MaUsUd5uSkZxohf1pbPByk7b5ptWpu4ZABvto"), 57 solana.MPK("4dDEjb4JZejtweFEJjjqqC5wwZi3jqtzoS7cPNRyPoT6"), 58 solana.MPK("Geoh8p8j48Efupens8TqJKj491aqk5VhPXABFAqGtAjr"), 59 solana.MPK("EVv4jPvUxbugw8EHTDwkNBboE26DiN4Zy1CQrd5j3Sd4"), 60 solana.MPK("3ceGkbGkqQwjJsZEYzjykDcWM1FjzHGMNTyKHD1c7kqW"), 61 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 62 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 63 solana.MPK("3Ukqqshh3kZ8UPbcYYFSRaeJcsgttcmShtNNn12F1rj2"), 64 solana.MPK("7NP8DTzPdpbQofhNyhLW3j2khutmfy1kuFp2AjaD8rrp"), 65 solana.MPK("F6nCAMYEFxsyRDVonQXLNufXgAHsgAa1Br8DhBoX3KAV"), 66 solana.MPK("HWCTHmQppFSsKQEk1bHUqPC2WLaidgnfTG9MQGD4XKEt"), 67 solana.MPK("GHuoeq9UnFBsBhMwH43eL3RWX5XVXbSRYJymmyMYpT7n"), 68 solana.MPK("CCuSVbnnq8SUj7cpPe7BbHLuKanyxfvfrwypzCBnaDdf"), 69 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 70 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 71 solana.MPK("2Y1Jmpkf5wt1X5zcFHNBDoHxqjTXbMJfj1UFtrYQwUbG"), 72 solana.MPK("8K4eRHeyPhBGB9zCjKtyBHoPPZ75zLN64oxBF6GyF4Qg"), 73 solana.MPK("DRYADMQevoJHDFCYbDQeS4p551MpsDN2d7CJU3LxfNHa"), 74 solana.MPK("HzsECCX6RZ2ccbR3FarRSEfc5rkuETfywXJnRZut5JzU"), 75 solana.MPK("ELfBngAgvLEHVBuJQhhE7AW6eqLX7id2sfrBngVNVAUW"), 76 solana.MPK("Bx3ZhEBFedDqCBzuzKVS4eMKTtW1MmHkcMGU45FcyxRT"), 77 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 78 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 79 solana.MPK("6MxUhBLXHCqpdYaFPTmw1D9fQ7zYnm9grZyJvpGiqr15"), 80 solana.MPK("SvWmpVVUkv8cwoRnBQ5Gqt2FFYjdpWLS665gE2ZLNQp"), 81 solana.MPK("686KiYDMMkbredNoWx8yqvAdKSiHuWSG3dnbL6yWYmZp"), 82 solana.MPK("9i14ZKzaDmzKCAQb8hCv4h5GCo2Xiq83JcL7bofk4Ddj"), 83 solana.MPK("EorFh8siFyLF1QTZ7cCXQaPGqyo7eb4SAgKtRH8Jcxjd"), 84 solana.MPK("6vWYnRDEHu7kRLbA2dnBgEfbdba72iDMDD9k3munyPaP"), 85 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 86 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 87 solana.MPK("vVXfY15WdPsCmLvbiP4hWWECPFeAvPTuPNq3Q4BXfhy"), 88 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 89 solana.MPK("A7RFkvmDFN4Qev8XgGAqSr5W75sNhhtCY3ZcGHZiDDo1"), 90 solana.MPK("BKqBnj1TLpW4UEBbZn6aVoPLLBHDB6NTEL5nFNRqX7e7"), 91 solana.MPK("AN7XxHrrcFL7629WySWVA2Tq9inczxkbE6YqgZ31rDnG"), 92 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 93 solana.MPK("72aW3Sgp1hMTXUiCq8aJ39DX2Jr7sZgumAvdLrLuCMLe"), 94 solana.MPK("F3PQsAGiFf8fSySjUGgP3NQdAGSnioAThncyfd26GKZ3"), 95 solana.MPK("6KyB4XprAw7Mgp1YMMsxRGx8T59Y5Lcu6s1FcwFrXy3i"), 96 solana.MPK("Due4ZmGX2u7an9DPMvk3uX3sXYgngRatP1XmwzEgk1tT"), 97 solana.MPK("8FMjC6yopBVYTXcYSGdFgoh6AFpwTdkJAGXxBeoV8xSq"), 98 solana.MPK("5vgxuCqMn7DUt6Le6EGhdMzZjPQrtD1x4TD9zGw3mPte"), 99 solana.MPK("FCZkJzztVTx6qKVec25jA3m4XjeGBH1iukGdDqDBHPvG"), 100 solana.MPK("72aW3Sgp1hMTXUiCq8aJ39DX2Jr7sZgumAvdLrLuCMLe"), 101 solana.MPK("7vtb8cULCnAdsfUKpex5v4CiFS2GwcsTzcK22m9BiDD5"), 102 solana.MPK("Due4ZmGX2u7an9DPMvk3uX3sXYgngRatP1XmwzEgk1tT"), 103 solana.MPK("F3PQsAGiFf8fSySjUGgP3NQdAGSnioAThncyfd26GKZ3"), 104 solana.MPK("6KyB4XprAw7Mgp1YMMsxRGx8T59Y5Lcu6s1FcwFrXy3i"), 105 solana.MPK("8FMjC6yopBVYTXcYSGdFgoh6AFpwTdkJAGXxBeoV8xSq"), 106 solana.MPK("5vgxuCqMn7DUt6Le6EGhdMzZjPQrtD1x4TD9zGw3mPte"), 107 solana.MPK("FCZkJzztVTx6qKVec25jA3m4XjeGBH1iukGdDqDBHPvG"), 108 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 109 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 110 solana.MPK("SysvarRent111111111111111111111111111111111"), 111 solana.MPK("BHzPYvC5J38kUeqkcUXwfraLWJ68cmGWm43ksF3i8bmk"), 112 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 113 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 114 solana.MPK("rxwsjytcEBvXpXrXBL1rpsjhoh78imBn8WbxjKmLRge"), 115 solana.MPK("AcaxutE6Rh9vRxipTLdqinEdRK6R4ayUAAv2bZPh6UU9"), 116 solana.MPK("6FRxhbY7bvSiDojPiqoidjTyDjxaUyCoPQk3ifEdfFbm"), 117 solana.MPK("8aTapFecZRZmC2bTeKr2voHFW2twNvbrh8nWYdXYQWkZ"), 118 solana.MPK("GMzPbaCuQmeMUm1opH3oSCgKUjVgJUW14myq99RVPGX5"), 119 solana.MPK("7pPJGwd8Vq7aYmHaocQpQSfTn3UWYGKUgFkFhpMmRdDF"), 120 solana.MPK("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), 121 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 122 solana.MPK("F7qyox3dAegTNfd8oBQD97LuCHWzQ9hSjbsF7Kv8kTNc"), 123 solana.MPK("3NpsRa7H93FeGyT53KgeFNF4vX5m1YT5hxpUZJSpeUy1"), 124 solana.MPK("4tS4d1j8vBeBU8zeHHo8sP7DUoNzVG24SZkHKGRNKXiT"), 125 solana.MPK("DhU9gMt4gpnqseda43nXJjCssz266ivmTiJSRVu6P8Re"), 126 solana.MPK("4VwhkiNBu2YpgvJjY6tANLXdtFtNY6jp5WPq4gY2PeUi"), 127 solana.MPK("4rgdoZhrEbYrf9ZMXZmugMoYZ2XWiNPEAiKKujnEcjSv"), 128 solana.MPK("faihchv9g9RwjcficyZVRPrQkzKA2NHUDL2PhgmxXPS"), 129 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 130 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 131 solana.MPK("GQJjrG6f8HbxkE3ZVSRpzoyWhQ2RiivT68BybVK9DxME"), 132 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 133 solana.MPK("AwHZdJrEDWAFhxsdsErvVPjWyE5JEY5Xq6cq4JjZX73L"), 134 solana.MPK("3zrQ9od43vB9sV1MNbM68VnkLCfq9dVUvM1hmp8tcJNz"), 135 solana.MPK("5odFuHq8jhqtNBKtCu4F2GvUiH5hB1zVfpS9XXbLf35d"), 136 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 137 solana.MPK("FrR9FBmiBjm2GjLZbfnCcgkbueUJ78NbBx1qcQKPUQe8"), 138 solana.MPK("4W6ZoBB2QNBe6AYM6ofpWjerAsnJad93hVfdC5WMjRsX"), 139 solana.MPK("64yfFmc7ivEknLRT2nvUmWkASGwz8MPxtcPdaiWUffro"), 140 solana.MPK("GgJ8bQSZ6Lt2mEurrhzLMWFMzTgVFq8ax91QzmZzYiS6"), 141 solana.MPK("9yg6VjgPUbojGn9d2n3UpX7B6gz7todGfTcV8apV5wkL"), 142 solana.MPK("BDdh4ane6wXkRdbqUuMGYYR4ggf3GufUbjT2TxpHiAzU"), 143 solana.MPK("A3LkbNQUjz1q3Ux5kQKCzNMFJw3yxk9qx1RtuQBXbZZe"), 144 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 145 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 146 solana.MPK("HdeYs4bpJKN2oTb7PHxbqq4kzKiLr772A5N2gWjY57ZT"), 147 solana.MPK("2KRcBDQJWEPygxcMMFMvR6dMTVtMkJV6kbxr5e9Kdj5Q"), 148 solana.MPK("DBckbD9CoRBFE8WdbbnFLDz6WdDDSZ7ReEeqdjL62fpG"), 149 solana.MPK("B252w7ZkUX4WyLUJKLEymEpRkYMqJhgv2PSj2Z2LWH34"), 150 solana.MPK("DRknxb4ZFxXUTG6UJ5HupNHG1SmvBSCPzsZ1o9gAhyBi"), 151 solana.MPK("5XuLrZqpX9gW3pJw7274EYwAft1ciTXndU4on96ERi9J"), 152 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 153 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 154 solana.MPK("5zUBVuXM3pwcrfi2Nj1mkT4RLKJjmBTjd4AsGs3biZBY"), 155 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 156 solana.MPK("C5JCYfp6YE6JrpNkRoAGhARSUSMLMP7paPBHsiK1E5tb"), 157 solana.MPK("DBMA8CUKosdnNvXT7phVDk8u9QCyNWnG4Z2twDS7ET17"), 158 solana.MPK("EjBkXsDPGmyMQavnAQQsuMAMncDYTUAL35MhvyzEX4Kx"), 159 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 160 solana.MPK("9oXkdAWFyjDH8BbYrDVJ77r6GWPmUWo9ZYYpE25SZ2td"), 161 solana.MPK("BdAZ2q9Ct9atgYnENKTsNKyLFhPXWiKuy3god4zEKMQW"), 162 solana.MPK("6GBaKj1LncmZGS2B4uWjCM7pRZ9gUZWNTK7K8VCBvxaG"), 163 solana.MPK("8aVP9P8cPzCSK4hdsVVk1E2nEf53f7iWkTKmsbidp4Fm"), 164 solana.MPK("8N9HsqECLfZ7wHg7DW5WqYzN9UnWEgRhChG8ByNJ828Q"), 165 solana.MPK("kvNtTHZU6vofnfdzYjN8G9gFqfjjf6yGYQJzwHb4m7h"), 166 solana.MPK("5XKsQrPiQh1YznQFs9x8zMcqMSeJZBiGe7FmGfyQgC9N"), 167 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 168 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 169 solana.MPK("B76e3wtCDTKBgKQjvx87EBkDLPGcCY9w1SGiwjD5kaK7"), 170 solana.MPK("FRUmMZDiZrDrwioiUYi3tdqF7SEBeT219bBu54PGxoCo"), 171 solana.MPK("8voSogytL9jLgE73GS3WuujBinKFRQJjvUFsVGYexWZd"), 172 solana.MPK("HEP7mACuN13cT95eDAYTNjgwriqJnMQVhnyRctqnBRe4"), 173 solana.MPK("Df6XNHMF3uRVZnz7LCEGiZVax6rXgz76owtVkBHEjSb6"), 174 solana.MPK("BCuRKfsM99LJFCchKUBLBZ26UuziDewJDRkkKMwx2qnd"), 175 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 176 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 177 solana.MPK("2Tv6eMih3iqxHrLAWn372Nba4A8FT8AxFSbowBmmTuAd"), 178 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 179 solana.MPK("GNHftHYD7WRG5HYdyWjd9KsxjUgUALrLcSG2AZvv5ahU"), 180 solana.MPK("9ZQNgn9zAc9oLKST5yW9PNjCCqSfJVwnFpfgZnd88Xn1"), 181 solana.MPK("HLtqBqwgdbGdFfd5UZtKkvrdxLLcpaMnAJ5aZAzDjFdT"), 182 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 183 solana.MPK("9cuBrXXSH9Uw51JB9odLqEyeF5RQSeRpcfXbEW2L8X6X"), 184 solana.MPK("EmqbfgZFSQxAeJRWKrrBVST4oLsq8aMt4WtcufPARcd7"), 185 solana.MPK("GZqx3xX1PjNpmw2qDGhiUSa6PsM5tWYY7cMmKzYFCCLD"), 186 solana.MPK("8w8JzuqcRUm9QAC3YWJm2mBCVjWDLXh8b7ktSouJKMUd"), 187 solana.MPK("8DGcP5Z8M878mguFLohaK9jFrrShDCREF3qa7JhMfgib"), 188 solana.MPK("CLS4WFje2PbV3MmV4v7CGxu3bNFqx2sYewq95rzGR8t8"), 189 solana.MPK("FBLtcfAXmm5PpJLLr95L5cjfgbpJiGHsWdBXDpC2TBQ2"), 190 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 191 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 192 solana.MPK("5DnwMqYAGEKekYXJdN8Bue6vN1p5zrEnBpmd53jEK61S"), 193 solana.MPK("4NfadURWeSDPJBGcKQRt39mPhbG9M7EJx6FZDwwcFB9f"), 194 solana.MPK("6d19CQA1FP2MLLAzA7XoZEc9Agc32FaKUS175UVWLGtv"), 195 solana.MPK("HpPnUHyo19VjmXbP6FbbKXu7WQCUEn6h7be76fZdHVmf"), 196 solana.MPK("qJxKN9BhxbYvRNbjfK2uAVWboto6sonj8XC1ZEW5XTB"), 197 solana.MPK("57L2bEFecsAv4jnaM2PBaeAVyPZEYtTmXBi7eaG2xWXw"), 198 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 199 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 200 solana.MPK("FEFzBbbEK8yDigqyJPgJKMR5X1xZARC25QTCskvudjuK"), 201 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 202 solana.MPK("8PAAfUWoVsSotWUGrL6CJCT2sApMpE2hn8DGWXq4y9Gs"), 203 solana.MPK("AZPsv6tY1HQjmeps2sMje5ysNtPKsfbtxj5Qw3jcya1a"), 204 solana.MPK("9D6JfNjyi6dXBYGErxmXmezkauPJdHW4KjMr2RGyD86Y"), 205 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 206 solana.MPK("BHqcTEDhCoZgvXcsSbwnTuzPdxv1HPs6Kz4AnPpNrGuq"), 207 solana.MPK("F61FtHm4R4F1gszB3FuwDPvXeSPQwNmHTofoYCnrV4FY"), 208 solana.MPK("5tYcHCW3ZZK4TMUSYiTi4dEE7iefyQ9dE17XDDAmDf92"), 209 solana.MPK("C5gcq3kmmXJ6ADWvH3Pc8bpiBQCL5cx4ypRwPg5xxFFx"), 210 solana.MPK("6sF1TAJjfrNucAqaQFRrMD78z2RinTGeyo4KsXPbwiqh"), 211 solana.MPK("5iXoDYXGnMxEwL65XTJHWdr6Z2UD5qq47ZijW24VSSSQ"), 212 solana.MPK("BuRLkxJffwznEsxXEqmXZJdLh4vQ1BRXc41sT6BtPV4X"), 213 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 214 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 215 solana.MPK("ErWwp9HKjk5ZPLDt8SrHKH5PvSKTwFDdFo5E3zDuE5Be"), 216 solana.MPK("GYY1t5d4pZnJC4rMXGY9yKMyCzLqxRqbtSguD2KkxghH"), 217 solana.MPK("GEtZSc8188t2cCAv21UGCyjvxCeyU5Co99GtRtyTkpdh"), 218 solana.MPK("Bi95f8H7o7zHWuYysxDHEubPv4c3NhsHWhaesXJu91NC"), 219 solana.MPK("GBijunwxa4Ni3JmYC6q6zgaVhSUJU6hVX5qTyJDRpNTc"), 220 solana.MPK("6NhybmW42rdWj5TcobNKQT6JaZispgngcfTDrCsgVq4Q"), 221 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 222 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 223 solana.MPK("v51xWrRwmFVH6EKe8eZTjgK5E4uC2tzY5sVt5cHbrkG"), 224 solana.MPK("3Kk8rpjxpc9qv2pJPr1CbmyQqrTDPntpryXActLogQeD"), 225 solana.MPK("5c4tzhRVaCxpmu8o3HrEZ8PWBDKSR6QNkBdQrUo9oe3e"), 226 solana.MPK("AFNaWHH7ZGFjB7y7jmPM7jVs7QBAciffu7Z5tZidRHPR"), 227 solana.MPK("5a6Y1ephcbKSoyLMQyD1JWbtqawCy8p2FtRL9v3zhaG5"), 228 solana.MPK("ACKiRmbiMaPEc73pz4dVMuJGPaa74Vx9sfYADjnHuzvo"), 229 solana.MPK("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"), 230 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 231 solana.MPK("CeGZNd2ap2ke8JreVqDXikSrxhnSERh9G8WAt4yqMcBs"), 232 solana.MPK("GhZVE3cbEtbAJMb4QbYEEK4BQXcDeyPCWmr8yzZL9NH7"), 233 solana.MPK("BJW4t9VsS7W5W7UxXhjGj3C3r4sB9ZzTXMcUD3WVq511"), 234 solana.MPK("AjYCGnsaCsoif9LU4Dr3PRN2EJucjsn1DduycybVwzvL"), 235 solana.MPK("GC83zEFAxq6mR6HZgPMwTf4oThc7RPsjQFfopEn2R1Rf"), 236 solana.MPK("3v3QYAnnGjeGo8K2rsqeKYegCB1YWb7QC58JXKdaGGoD"), 237 solana.MPK("4BKxA3d67Sfa3xhjg6waEo58ACB2XkFESXDL5RYFHsP4"), 238 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 239 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 240 solana.MPK("7c2CLgatf2TU36PgpS65WLmvWk94rmaHVf1Z1peZ7mcA"), 241 solana.MPK("Mq46N9EknnxHL9fRkJhS4Eg9YXRifHiWzFJTD11ePWC"), 242 solana.MPK("5rU6M2jAXQMSmgrsn14BPoVVhoBdCU6y5cP7XMjN4ZYy"), 243 solana.MPK("D28rzq246bcXBrYiCeALY86y8NwvCUmuJGNggvKsh4WR"), 244 solana.MPK("Hmfrtmo93DpSDmVNLQKcBS5D1ia5JatiRSok9ososubz"), 245 solana.MPK("7JH76Kw4dHyC5szRXkx6MFkJ3BEViodfNy15uFJst1cX"), 246 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 247 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 248 solana.MPK("C3b5AWQJiyar5g8EWu75zgDE26F55ZJWpqtFVCCVDQQQ"), 249 solana.MPK("3SphkwoHx3d13Eu9RehVVg4gGMZv7FEaDXvPqWbQF9bm"), 250 solana.MPK("5AhPVbtyiTV3SiNRJuq5z9xeaqqwoHQWqohR9HvjJkKS"), 251 solana.MPK("6mtcbtTAadVEdnWJZmsq8woqLea7ef7k5WumVXSHr5KQ"), 252 solana.MPK("7vnps4VE5RTGAr5fmPZu7fSrk2VnM4Up838grZfqmxqE"), 253 solana.MPK("CT95CSNqi4nttNW84dDuA8Um7FLAC52PVUvuVRKeCHVK"), 254 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 255 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 256 solana.MPK("GumfURfQvPaJ2E5ueCEKYJmymNQbV34gU9TmiKZYRkiv"), 257 solana.MPK("EjoLNSDggfWWE7BxwoL4tJHBEg1cFpdiyKeYTYCec2o2"), 258 solana.MPK("AGNHgSQuPd4EqjLTLJrXEVb3KCkjRxGVDTaag4drV1XX"), 259 solana.MPK("FESKk2kj9oqdYR4dcaP4LyqDyWZt3NttgypRVFoyUQNs"), 260 solana.MPK("55r9txzQtmjTykmTXmBYZCVMg5z9squB8b5cSw2AhxA4"), 261 solana.MPK("F6xCTe256cA6HTX5CYBkDtXoruHvjfbxeHNeqR9kR7oJ"), 262 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 263 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 264 solana.MPK("9tK2LaapwjxaUmfcAzY9zgC39M3wnaFX558y2Bb4oxWG"), 265 solana.MPK("EGuBsx6HAgAtf1ogzF1uXTUQgwRex61hnhvuZcMwQKUJ"), 266 solana.MPK("GgfTGZ5DnAotnXKFM86vqffKQZ9nGgHaX1PDS7RTcKjQ"), 267 solana.MPK("A3rzsPGtqowjKXfscYrPo1jvv2EVYpJwXQPGKxgvvStf"), 268 solana.MPK("DSiHyHDn96bUQSZtizyCRLcQzrwohZeMpVu8rYJN1HzG"), 269 solana.MPK("Acom6ebnmbFKQk3XeX5VHPiz8bd7kzfpUMsqHKJDJnry"), 270 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 271 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 272 solana.MPK("9xUWbM7zXsccied2jNXama1Z1Wh9mwn9APX1drRTPtvh"), 273 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 274 solana.MPK("JD51bY2uLtwgzYQNYjF7m1UvWX5HdHE7orMrxogPQk1G"), 275 solana.MPK("7TeWuw6WxwqLkadHGRsLFVWoe4zb9snMRZHH5nQPpUPV"), 276 solana.MPK("A59Pg8yemxDqUqfvfmh6e9Wmkr74v7uGeygcUkQCSoLJ"), 277 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 278 solana.MPK("9fe1MWiKqUdwift3dEpxuRHWftG72rysCRHbxDy6i9xB"), 279 solana.MPK("4ZwKetX2m7fS3gigLa215xjveVNwLWAVJeh1zaQUbpuF"), 280 solana.MPK("vL2N5k5PS67MctE1Tj5u3sivBNMj6EvejskPiqtDP6n"), 281 solana.MPK("ApWLqV2xjdn2FEjYvVgf7Ltp5by9TDVEnpg5dXrZzY8k"), 282 solana.MPK("26h5i4vYPinyUZ6kUp8tzhzvQtP3cNzhzaBMqySybNMF"), 283 solana.MPK("7E5CzVnTFsTnwPqoJ8uUA8RNqCgsYy6ZEnRVmz7LURaA"), 284 solana.MPK("FPC75yXyJwF3NFEmgHrJRDNmXnukpVQgXayZVsmpEDKo"), 285 } 286 287 require.Equal(t, len(expectedKeys), len(table.Addresses), "decoded addresses length mismatch") 288 289 for i := range expectedKeys { 290 require.Equal(t, expectedKeys[i], table.Addresses[i], "key %d; extected %s, got %s", i, expectedKeys[i], table.Addresses[i]) 291 } 292 { 293 buf := new(bytes.Buffer) 294 enc := bin.NewBinEncoder(buf) 295 err := table.MarshalWithEncoder(enc) 296 require.NoError(t, err) 297 require.Equal(t, buf.Bytes(), tableAccountBytes) 298 } 299 { 300 // https://explorer.solana.com/tx/24jRjMP3medE9iMqVSPRbkwfe9GdPmLfeftKPuwRHZdYTZJ6UyzNMGGKo4BHrTu2zVj4CgFF3CEuzS79QXUo2CMC 301 txBase64 := "ATU8IfVPwTFbXJvq0sO8w7Xc6/nc/4RFux7ehibunps+JjNSczZbue4bPn6uR9s6aWSZQCP8brf8RyYUwZQ0DQeAAQACBVTKAWVY3LzWDZTdfErhZpxix74Qyp+LjLmlvAPS/l4z4Rt91U7dxP1bjyHkoY3vBWo/XAqjvIzK8DTSvetevZWcVdOLU3j3+e/xY8bnWyZ3eMohRZiHw3bH7GrsEzYzowR51S3tv2vF7NCdhFNKNK6ll1BDs2/QKyRlC7WEQ1lcAwZGb+UhFzL/7K26csOb57yM5bvF9xJrLEObOkAAAACgpxPJ+57U2CTjvooWuPN91CltQch0oj/O5i3Fa45CgQMDIBMAARQTBRUGBwgWCQoLDA0OFwECABgTGRoAAg8QARESJOUXy5d6460qAAIAAAACBwIDgJaYAAAAAACAlpgAAAAAAAAAAAQABQLAJwkABAAJA0CcAAAAAAAAAaC/OwMGMFZGentK87meSfdqah4dRR/iw+wKg/yvZNw5DhIUFRYYGRobHB0MDQ4PCAEQExceAAoL" 302 tx := &solana.Transaction{} 303 err := tx.UnmarshalBase64(txBase64) 304 require.NoError(t, err) 305 err = tx.Message.SetAddressTables(map[solana.PublicKey]solana.PublicKeySlice{ 306 solana.MPK("BpVMhYJB14QX5pXfbHRxB8vmpW4AFodWjBTDvfCJwsfv"): table.Addresses, 307 }) 308 require.NoError(t, err) 309 require.True(t, tx.Message.IsSigner(solana.MPK("6hyuGqKQyhAEipjtaquiNHfd1dVjrNT3FzzanXurbK4W"))) 310 311 require.Equal(t, solana.PublicKeySlice{ 312 solana.MPK("BpVMhYJB14QX5pXfbHRxB8vmpW4AFodWjBTDvfCJwsfv"), 313 }, tx.Message.GetAddressTableLookups().GetTableIDs()) 314 315 metas, err := tx.Message.AccountMetaList() 316 require.NoError(t, err) 317 318 { 319 writable := solana.PublicKeySlice{ 320 // 321 solana.MPK("G9j3eZtj5pprqxvYz6v5WoyqhEMbnV6m9KTtoZuNrvCk"), 322 solana.MPK("BXGWMYBEsuXsqt4R19ihHsjhL81KvVXbDvw5TxTfD7sx"), 323 // from lookups: 324 solana.MPK("ABrn4ED4AvkQ79VAXqf7ooqicJPHhZDAbC9rqcQ8ePzz"), 325 solana.MPK("D7CHbxSFSiEW3sPc486AGDwuwsmyZqhP7stG4Yo9ZHTC"), 326 solana.MPK("5o8dopjEKEy491bVHShtG6KSSHKm2JUugVqKEK7Jw7YF"), 327 solana.MPK("FN3wMZUuWkM65ZtcnAoYpsq773YxrnMfM5iAroSGttBo"), 328 solana.MPK("6uGUx583UHvFKKCnoMfnGNEFxhSWy5iXXyea4o5E9dx7"), 329 solana.MPK("Gp7wpKu9mXpxdykMD9JKW5SK2Jw1h2fttxukvcL2dnW6"), 330 solana.MPK("4mkSxT9MaUsUd5uSkZxohf1pbPByk7b5ptWpu4ZABvto"), 331 solana.MPK("4dDEjb4JZejtweFEJjjqqC5wwZi3jqtzoS7cPNRyPoT6"), 332 solana.MPK("Geoh8p8j48Efupens8TqJKj491aqk5VhPXABFAqGtAjr"), 333 solana.MPK("EVv4jPvUxbugw8EHTDwkNBboE26DiN4Zy1CQrd5j3Sd4"), 334 solana.MPK("ErcxwkPgLdyoVL6j2SsekZ5iysPZEDRGfAggh282kQb8"), 335 solana.MPK("EFYW6YEiCGpavuMPS1zoXhgfNkPisWkQ3bQz1b4UfKek"), 336 solana.MPK("BVWwyiHVHZQMPHsiW7dZH7bnBVKmbxdeEjWqVRciHCyo"), 337 solana.MPK("E6aTzkZKdCECgpDtBZtVpqiGjxRDSAFh1SC9CdSoVK7a"), 338 } 339 for _, acc := range writable { 340 is, err := tx.Message.IsWritable(acc) 341 require.NoError(t, err, "account %s", acc) 342 require.True(t, is, "account %s must be writable", acc) 343 } 344 for _, acc := range writable { 345 has, err := tx.Message.HasAccount(acc) 346 require.NoError(t, err) 347 require.True(t, has) 348 } 349 } 350 { 351 readonly := solana.PublicKeySlice{ 352 solana.MPK("JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB"), 353 solana.MPK("ComputeBudget111111111111111111111111111111"), 354 // from lookups: 355 solana.MPK("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), 356 solana.MPK("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"), 357 solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), 358 solana.MPK("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"), 359 solana.MPK("3ceGkbGkqQwjJsZEYzjykDcWM1FjzHGMNTyKHD1c7kqW"), 360 solana.MPK("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"), 361 solana.MPK("8JPid6GtND2tU3A7x7GDfPPEWwS36rMtzF7YoHU44UoA"), 362 solana.MPK("749y4fXb9SzqmrLEetQdui5iDucnNiMgCJ2uzc3y7cou"), 363 } 364 for _, acc := range readonly { 365 is, err := tx.Message.IsWritable(acc) 366 require.NoError(t, err, "account %s", acc) 367 require.False(t, is, "account %s must be readonly", acc) 368 } 369 for _, acc := range readonly { 370 has, err := tx.Message.HasAccount(acc) 371 require.NoError(t, err) 372 require.True(t, has) 373 } 374 } 375 { 376 ix := tx.Message.Instructions[0] 377 got, err := tx.Message.ResolveProgramIDIndex(ix.ProgramIDIndex) 378 require.NoError(t, err) 379 require.Equal(t, solana.MPK("JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB"), got) 380 } 381 { 382 ix := tx.Message.Instructions[1] 383 got, err := tx.Message.ResolveProgramIDIndex(ix.ProgramIDIndex) 384 require.NoError(t, err) 385 require.Equal(t, solana.MPK("ComputeBudget111111111111111111111111111111"), got) 386 } 387 { 388 ix := tx.Message.Instructions[2] 389 got, err := tx.Message.Program(ix.ProgramIDIndex) 390 require.NoError(t, err) 391 require.Equal(t, solana.MPK("ComputeBudget111111111111111111111111111111"), got) 392 } 393 { 394 has, err := tx.Message.HasAccount(solana.SysVarClockPubkey) 395 require.NoError(t, err) 396 require.False(t, has) 397 } 398 { 399 acc, err := tx.Message.Account(0) 400 require.NoError(t, err) 401 require.Equal(t, solana.MPK("6hyuGqKQyhAEipjtaquiNHfd1dVjrNT3FzzanXurbK4W"), acc) 402 require.Equal(t, solana.MPK("6hyuGqKQyhAEipjtaquiNHfd1dVjrNT3FzzanXurbK4W"), metas[0].PublicKey) 403 } 404 { 405 acc, err := tx.Message.Account(1) 406 require.NoError(t, err) 407 require.Equal(t, solana.MPK("G9j3eZtj5pprqxvYz6v5WoyqhEMbnV6m9KTtoZuNrvCk"), acc) 408 require.Equal(t, solana.MPK("G9j3eZtj5pprqxvYz6v5WoyqhEMbnV6m9KTtoZuNrvCk"), metas[1].PublicKey) 409 } 410 { 411 acc, err := tx.Message.Account(15) 412 require.NoError(t, err) 413 require.Equal(t, solana.MPK("ErcxwkPgLdyoVL6j2SsekZ5iysPZEDRGfAggh282kQb8"), acc) 414 require.Equal(t, solana.MPK("ErcxwkPgLdyoVL6j2SsekZ5iysPZEDRGfAggh282kQb8"), metas[15].PublicKey) 415 } 416 { 417 acc, err := tx.Message.Account(18) 418 require.NoError(t, err) 419 require.Equal(t, solana.MPK("E6aTzkZKdCECgpDtBZtVpqiGjxRDSAFh1SC9CdSoVK7a"), acc) 420 require.Equal(t, solana.MPK("E6aTzkZKdCECgpDtBZtVpqiGjxRDSAFh1SC9CdSoVK7a"), metas[18].PublicKey) 421 } 422 { 423 acc, err := tx.Message.Account(21) 424 require.NoError(t, err) 425 require.Equal(t, solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), acc) 426 require.Equal(t, solana.MPK("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"), metas[21].PublicKey) 427 } 428 { 429 acc, err := tx.Message.Account(26) 430 require.NoError(t, err) 431 require.Equal(t, solana.MPK("749y4fXb9SzqmrLEetQdui5iDucnNiMgCJ2uzc3y7cou"), acc) 432 require.Equal(t, solana.MPK("749y4fXb9SzqmrLEetQdui5iDucnNiMgCJ2uzc3y7cou"), metas[26].PublicKey) 433 } 434 { 435 acc, err := tx.Message.Account(9999) 436 require.Error(t, err) 437 require.Equal(t, solana.PublicKey{}, acc) 438 } 439 require.True(t, tx.Message.IsVersioned()) 440 { 441 { 442 lookups := tx.Message.GetAddressTableLookups() 443 require.Equal(t, 1, len(lookups)) 444 first := lookups[0] 445 require.Equal(t, 446 solana.MessageAddressTableLookup{ 447 AccountKey: solana.MPK("BpVMhYJB14QX5pXfbHRxB8vmpW4AFodWjBTDvfCJwsfv"), 448 WritableIndexes: []uint8{18, 20, 21, 22, 24, 25, 26, 27, 28, 29, 12, 13, 14, 15}, 449 ReadonlyIndexes: []uint8{1, 16, 19, 23, 30, 0, 10, 11}, 450 }, first) 451 } 452 } 453 { 454 got, err := tx.Message.GetAllKeys() 455 require.NoError(t, err) 456 require.Equal(t, metas.GetKeys(), got) 457 { 458 // before resolution: 459 static := solana.PublicKeySlice{ 460 solana.MPK("6hyuGqKQyhAEipjtaquiNHfd1dVjrNT3FzzanXurbK4W"), 461 solana.MPK("G9j3eZtj5pprqxvYz6v5WoyqhEMbnV6m9KTtoZuNrvCk"), 462 solana.MPK("BXGWMYBEsuXsqt4R19ihHsjhL81KvVXbDvw5TxTfD7sx"), 463 solana.MPK("JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB"), 464 solana.MPK("ComputeBudget111111111111111111111111111111"), 465 } 466 require.Equal(t, 5, len(tx.Message.AccountKeys)) 467 for i, acc := range static { 468 require.Equal(t, acc, tx.Message.AccountKeys[i], "static key %d", i) 469 } 470 { // serialization before resolution: 471 { 472 got, err := tx.ToBase64() 473 require.NoError(t, err) 474 require.Equal(t, txBase64, got) 475 } 476 { 477 buf := new(bytes.Buffer) 478 err := table.MarshalWithEncoder(bin.NewBinEncoder(buf)) 479 require.NoError(t, err) 480 require.Equal(t, tableAccountBytes, buf.Bytes()) 481 } 482 { 483 require.Equal(t, 14, tx.Message.GetAddressTableLookups().NumWritableLookups()) 484 require.Equal(t, 22, tx.Message.GetAddressTableLookups().NumLookups()) 485 require.Equal(t, 22, tx.Message.NumLookups()) 486 } 487 } 488 // after resolution: 489 err = tx.Message.ResolveLookups() 490 require.NoError(t, err) 491 require.Equal(t, 27, len(tx.Message.AccountKeys)) 492 { 493 // serialization after resolution: 494 { 495 got, err := tx.ToBase64() 496 require.NoError(t, err) 497 require.Equal(t, txBase64, got) 498 } 499 { 500 buf := new(bytes.Buffer) 501 err := table.MarshalWithEncoder(bin.NewBinEncoder(buf)) 502 require.NoError(t, err) 503 require.Equal(t, tableAccountBytes, buf.Bytes()) 504 } 505 { 506 require.Equal(t, 14, tx.Message.GetAddressTableLookups().NumWritableLookups()) 507 require.Equal(t, 22, tx.Message.GetAddressTableLookups().NumLookups()) 508 require.Equal(t, 22, tx.Message.NumLookups()) 509 } 510 } 511 // after resolution: 512 err = tx.Message.ResolveLookups() 513 require.NoError(t, err) 514 require.Equal(t, 27, len(tx.Message.AccountKeys)) 515 { 516 // same as before first resolution call: 517 { 518 got, err := tx.ToBase64() 519 require.NoError(t, err) 520 require.Equal(t, txBase64, got) 521 } 522 { 523 buf := new(bytes.Buffer) 524 err := table.MarshalWithEncoder(bin.NewBinEncoder(buf)) 525 require.NoError(t, err) 526 require.Equal(t, tableAccountBytes, buf.Bytes()) 527 } 528 { 529 require.Equal(t, 14, tx.Message.GetAddressTableLookups().NumWritableLookups()) 530 require.Equal(t, 22, tx.Message.GetAddressTableLookups().NumLookups()) 531 require.Equal(t, 22, tx.Message.NumLookups()) 532 } 533 } 534 } 535 } 536 } 537 }