{ "contractName": "Wormhole", "abi": [ { "inputs": [ { "components": [ { "internalType": "address[]", "name": "keys", "type": "address[]" }, { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "internalType": "struct Wormhole.GuardianSet", "name": "initial_guardian_set", "type": "tuple" }, { "internalType": "address", "name": "wrapped_asset_master", "type": "address" }, { "internalType": "uint32", "name": "_guardian_set_expirity", "type": "uint32" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint32", "name": "oldGuardianIndex", "type": "uint32" }, { "indexed": false, "internalType": "uint32", "name": "newGuardianIndex", "type": "uint32" } ], "name": "LogGuardianSetChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "token_chain", "type": "uint8" }, { "indexed": false, "internalType": "uint8", "name": "token_decimals", "type": "uint8" }, { "indexed": true, "internalType": "bytes32", "name": "token", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "sender", "type": "bytes32" }, { "indexed": false, "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "LogTokensLocked", "type": "event" }, { "stateMutability": "payable", "type": "fallback" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "consumedVAAs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "guardian_set_expirity", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "guardian_set_index", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "guardian_sets", "outputs": [ { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "isWrappedAsset", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "wrappedAssetMaster", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "name": "wrappedAssets", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [ { "internalType": "uint32", "name": "idx", "type": "uint32" } ], "name": "getGuardianSet", "outputs": [ { "components": [ { "internalType": "address[]", "name": "keys", "type": "address[]" }, { "internalType": "uint32", "name": "expiration_time", "type": "uint32" } ], "internalType": "struct Wormhole.GuardianSet", "name": "gs", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "vaa", "type": "bytes" } ], "name": "submitVAA", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "asset", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" }, { "internalType": "bool", "name": "refund_dust", "type": "bool" } ], "name": "lockAssets", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "recipient", "type": "bytes32" }, { "internalType": "uint8", "name": "target_chain", "type": "uint8" }, { "internalType": "uint32", "name": "nonce", "type": "uint32" } ], "name": "lockETH", "outputs": [], "stateMutability": "payable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"initial_guardian_set\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"wrapped_asset_master\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_guardian_set_expirity\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"oldGuardianIndex\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"newGuardianIndex\",\"type\":\"uint32\"}],\"name\":\"LogGuardianSetChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_chain\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"token_decimals\",\"type\":\"uint8\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"token\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"sender\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"consumedVAAs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"idx\",\"type\":\"uint32\"}],\"name\":\"getGuardianSet\",\"outputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"keys\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"gs\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_expirity\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"guardian_set_index\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"name\":\"guardian_sets\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWrappedAsset\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"refund_dust\",\"type\":\"bool\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"nonce\",\"type\":\"uint32\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"wrappedAssetMaster\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"wrappedAssets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":\"Wormhole\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol\":{\"keccak256\":\"0x4a28e69afc4c1c1aee48c7b497f9b8452b295ddcf4bbf453d594a1467016d5f2\",\"license\":\"Unlicense\",\"urls\":[\"bzz-raw://279e22c43f79567e9f7842cfca8ad2329bbbad2eac30413b620796d51f308719\",\"dweb:/ipfs/QmbdRLJYoKJxDbDLeverNMHsNFEcxnohAA713UFLjLm3Jy\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0x843bd25fef0d2a9e47bc76387e86f0ca927625e6557fa1b262ea4a420bb59ac6\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://023ad00a5f095e8172b3cbf337262a35c4a3341299f1989c30c662a0d357236b\",\"dweb:/ipfs/QmPP1gTKNvz6hdfDQgL95xSw35vCK5MFvr4yKRcPexXuwK\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0xf7ce817c18d74da0e2b15fed25b3e7dcb79cc41f422f641bb863f9a40d62ffcf\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://6c931162370f9d24a56743a3f769734e2d7d00c9fc7fcceec81c8765b17ab4b6\",\"dweb:/ipfs/QmQfs7Td14iy6fGF56PrGYq7VKUQtYqjhjebQ2Um1E6fUT\"]},\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0xdb26cbf4d028490f49831a7865c2fe1b28db44b535ca8d343785a3b768aae183\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://840b14ce0315c47d49ba328f1f9fa7654ded1c9e1559e6c5e777a7b2dc28bf0a\",\"dweb:/ipfs/QmTLLabn4wcfGro9LEmUXUN2nwKqZSotXMvjDCLXEnLtZP\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x9a9cf02622cd7a64261b10534fc3260449da25c98c9e96d1b4ae8110a20e5806\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2df142592d1dc267d9549049ee3317fa190d2f87eaa565f86ab05ec83f7ab8f5\",\"dweb:/ipfs/QmSkJtcfWo7c42KnL5hho6GFxK6HRNV91XABx1P7xDtfLV\"]},\"@openzeppelin/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xf204d98eef08edacf5a02a2af1516ea4febdb6aba7a1ae5ac8deb6e568fd3dbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4dea62bffbd180772a6cfe7cb90e3a045c52d6b502bdb2fdff83193da42d8d0\",\"dweb:/ipfs/QmW8qGZ5nngajmv5Aamdrpkeuq7S5YCVaR7rtcqNekKHtK\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x5c26b39d26f7ed489e555d955dcd3e01872972e71fdd1528e93ec164e4f23385\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://efdc632af6960cf865dbc113665ea1f5b90eab75cc40ec062b2f6ae6da582017\",\"dweb:/ipfs/QmfAZFDuG62vxmAN9DnXApv7e7PMzPqi4RkqqZHLMSQiY5\"]},\"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\":{\"keccak256\":\"0xf3b30f8a49631420635a8c35daacfcaa338012755f18a76fdd118730256f9a27\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0d7de652204c2ee291a61aa984103dfc7ae4392d651fbbc44a0079caee7c69a3\",\"dweb:/ipfs/Qmcw1cQnq9eWDnrCBwU3TNyqLfTMUFg5YKpYUkELoMPuUE\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0xdfb4f812600ba4ce6738c35584ceb8c9433472583051b48ba5b1f66cb758a498\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df02dffe1c1de089d9b4f6192f0dcf464526f2230f420b3deec4645e0cdd2bff\",\"dweb:/ipfs/QmcqXGAU3KJqwrgUVoGJ2W8osomhSJ4R5kdsRpbuW3fELS\"]},\"@openzeppelin/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0x7ff0067f2d7df4187eaa1cb4800949b929602c9d9cb20fcaee6922a7613ef2fb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://78aa63fd7fbb8df2942b6c6e7bd89349507e306edbd5909ee8d9575c31be57e5\",\"dweb:/ipfs/Qmf6z9KWKCJCfEVokgTBhBVq5yHtE6is31N8AV5BHdMkqQ\"]}},\"version\":1}", "bytecode": "0x60806040526002600160146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b5060405162003b6738038062003b6783398181016040528101906200005391906200033e565b600160008190555082600260008063ffffffff1681526020019081526020016000206000820151816000019080519060200190620000939291906200014b565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055509050506000600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200047c565b828054828255906000526020600020908101928215620001c7579160200282015b82811115620001c65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200016c565b5b509050620001d69190620001da565b5090565b5b808211156200021357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620001db565b5090565b600081519050620002288162000448565b92915050565b600082601f8301126200024057600080fd5b8151620002576200025182620003db565b620003ad565b915081818352602084019350602081019050838560208402820111156200027d57600080fd5b60005b83811015620002b1578162000296888262000217565b84526020840193506020830192505060018101905062000280565b5050505092915050565b600060408284031215620002ce57600080fd5b620002da6040620003ad565b9050600082015167ffffffffffffffff811115620002f757600080fd5b62000305848285016200022e565b60008301525060206200031b8482850162000327565b60208301525092915050565b600081519050620003388162000462565b92915050565b6000806000606084860312156200035457600080fd5b600084015167ffffffffffffffff8111156200036f57600080fd5b6200037d86828701620002bb565b9350506020620003908682870162000217565b9250506040620003a38682870162000327565b9150509250925092565b6000604051905081810181811067ffffffffffffffff82111715620003d157600080fd5b8060405250919050565b600067ffffffffffffffff821115620003f357600080fd5b602082029050602081019050919050565b6000620004118262000418565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b620004538162000404565b81146200045f57600080fd5b50565b6200046d8162000438565b81146200047957600080fd5b50565b6136db806200048c6000396000f3fe6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033", "deployedBytecode": "0x6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033", "immutableReferences": {}, "sourceMap": "502:9541:1:-:0;;;832:1;815:18;;;;;;;;;;;;;;;;;;;;1964:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1628:1:9;1743:7;:22;;;;2114:20:1;2095:13;:16;2109:1;2095:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:1;2187:18;;:22;;;;;;;;;;;;;;;;;;2243;2219:21;;:46;;;;;;;;;;;;;;;;;;2297:20;2276:18;;:41;;;;;;;;;;;;;;;;;;1964:360;;;502:9541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:134:-1:-;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;164:722::-;;292:3;285:4;277:6;273:17;269:27;259:2;;310:1;307;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;353:89;;459:5;484:6;477:5;470:21;514:4;506:6;502:17;492:27;;536:4;531:3;527:14;520:21;;589:6;636:3;628:4;620:6;616:17;611:3;607:27;604:36;601:2;;;653:1;650;643:12;601:2;678:1;663:217;688:6;685:1;682:13;663:217;;;746:3;768:48;812:3;800:10;768:48;:::i;:::-;763:3;756:61;840:4;835:3;831:14;824:21;;868:4;863:3;859:14;852:21;;720:160;710:1;707;703:9;698:14;;663:217;;;667:14;252:634;;;;;;;:::o;928:617::-;;1056:4;1044:9;1039:3;1035:19;1031:30;1028:2;;;1074:1;1071;1064:12;1028:2;1092:20;1107:4;1092:20;:::i;:::-;1083:29;;1183:1;1172:9;1168:17;1162:24;1206:18;1198:6;1195:30;1192:2;;;1238:1;1235;1228:12;1192:2;1273:85;1354:3;1345:6;1334:9;1330:22;1273:85;:::i;:::-;1266:4;1259:5;1255:16;1248:111;1122:248;1431:2;1464:59;1519:3;1510:6;1499:9;1495:22;1464:59;:::i;:::-;1457:4;1450:5;1446:16;1439:85;1380:155;1022:523;;;;:::o;1552:132::-;;1635:6;1629:13;1620:22;;1647:32;1673:5;1647:32;:::i;:::-;1614:70;;;;:::o;1691:668::-;;;;1867:2;1855:9;1846:7;1842:23;1838:32;1835:2;;;1883:1;1880;1873:12;1835:2;1939:1;1928:9;1924:17;1918:24;1962:18;1954:6;1951:30;1948:2;;;1994:1;1991;1984:12;1948:2;2014:92;2098:7;2089:6;2078:9;2074:22;2014:92;:::i;:::-;2004:102;;1897:215;2143:2;2161:64;2217:7;2208:6;2197:9;2193:22;2161:64;:::i;:::-;2151:74;;2122:109;2262:2;2280:63;2335:7;2326:6;2315:9;2311:22;2280:63;:::i;:::-;2270:73;;2241:108;1829:530;;;;;:::o;2366:256::-;;2428:2;2422:9;2412:19;;2466:4;2458:6;2454:17;2565:6;2553:10;2550:22;2529:18;2517:10;2514:34;2511:62;2508:2;;;2586:1;2583;2576:12;2508:2;2606:10;2602:2;2595:22;2406:216;;;;:::o;2629:304::-;;2788:18;2780:6;2777:30;2774:2;;;2820:1;2817;2810:12;2774:2;2855:4;2847:6;2843:17;2835:25;;2918:4;2912;2908:15;2900:23;;2711:222;;;:::o;2940:91::-;;3002:24;3020:5;3002:24;:::i;:::-;2991:35;;2985:46;;;:::o;3038:121::-;;3111:42;3104:5;3100:54;3089:65;;3083:76;;;:::o;3166:88::-;;3238:10;3231:5;3227:22;3216:33;;3210:44;;;:::o;3261:117::-;3330:24;3348:5;3330:24;:::i;:::-;3323:5;3320:35;3310:2;;3369:1;3366;3359:12;3310:2;3304:74;:::o;3385:115::-;3453:23;3470:5;3453:23;:::i;:::-;3446:5;3443:34;3433:2;;3491:1;3488;3481:12;3433:2;3427:73;:::o;502:9541:1:-;;;;;;;", "deployedSourceMap": "502:9541:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9985:54;;;;;;;;;;:::i;:::-;;;;;;;;502:9541;9895:54;;;;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2458:1874;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1467:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1677:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9398:462;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7554:1838;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1559:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;747:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1758:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2330:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;:::o;2458:1874::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;2541:13:1::1;2557:14;2569:1;2557:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2541:30;;2600:1;2589:7;:12;;;2581:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2687:29;2719:15;2732:1;2719:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;2687:47;;2745:19;2767:14;2779:1;2767:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2745:36;;;;2791:11;2814;2809:2;:16;2805:1;:20;2791:34;;2947:12;2972:38;2982:6;3003;2990:3;;:10;;:19;2972:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;:::i;:::-;2962:49;;;;;;2947:64;;3030:12;:18;3043:4;3030:18;;;;;;;;;;;;;;;;;;;;;3029:19;3021:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3088:31;;:::i;:::-;3122:13;:37;3136:22;3122:37;;;;;;;;;;;;;;;3088:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3209:1;3177:12;:28;;;:33;;;:83;;;;3245:15;3214:12;:28;;;:46;;;3177:83;3169:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;3351:11;3346:1;3341;3336;3309:12;:17;;;:24;:28;;;;;;3308:34;3307:40;:55;;3299:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;3392:6;3387:373;3408:11;3404:1;:15;3387:373;;;3440:11;3454:23;3474:2;3470:1;:6;3466:1;:10;3454:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3440:37;;3491:9;3503:25;3525:2;3521:1;:6;3517:1;:10;3503:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;3491:37;;3542:9;3554:26;3577:2;3573:1;:6;3568:2;:11;3554:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;3542:38;;3594:7;3604:24;3625:2;3621:1;:6;3616:2;:11;3604:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;3594:34;;3647:2;3642:7;;;;3699:12;:17;;;3717:5;3699:24;;;;;;;;;;;;;;;;3671:52;;:24;3681:4;3687:1;3690;3693;3671:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;:52;;;3663:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;3387:373;;;;3421:3;;;;;;;3387:373;;;;3770:12;3785:23;3806:1;3797:6;:10;3785:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3770:38;;3818:20;3841:48;3860:1;3851:6;:10;3886:1;3877:6;:10;3863:3;;:10;;:25;3841:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;:::i;:::-;3818:71;;3937:4;3927:6;:14;;;3923:332;;;3991:18;;;;;;;;;;;3965:44;;:22;:44;;;3957:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;4085:29;4106:7;4085:20;:29::i;:::-;3923:332;;;4145:4;4135:6;:14;;;4131:124;;;4165:20;4177:7;4165:11;:20::i;:::-;4131:124;;;4216:28;;;;;;;;;;:::i;:::-;;;;;;;;4131:124;3923:332;4321:4;4300:12;:18;4313:4;4300:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;2419:1:9;;;;;;;;1628::::0;2563:7;:22;;;;2458:1874:1;;:::o;1467:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1677:35::-;;;;;;;;;;;;;:::o;9398:462::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;9557:1:1::1;9544:9;:14;;9536:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;916:42;9627:25;;;9661:9;9627:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;9811:10;9803:19;;9795:28;;916:42;9772:20;;9764:29;;9720:133;9736:12;9750:8;;;;;;;;;;;9760:2;9825:9;9836;9847:5;9720:133;;;;;;;;;;;:::i;:::-;;;;;;;;1628:1:9::0;2563:7;:22;;;;9398:462:1;;;:::o;7554:1838::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;7778:1:1::1;7768:6;:11;;7760:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7815:17;7835:8;;;;;;;;;;;7815:28;;7853:21;7884:14:::0;7907:5:::1;7901:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7884:40;;7939:14;:21;7954:5;7939:21;;;;;;;;;;;;;;;;;;;;;;;;;7935:1312;;;7989:5;7976:24;;;8001:10;8013:6;7976:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8061:5;8048:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8034:46;;8123:5;8110:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8094:50;;7935:1312;;;8175:21;8206:5;8199:23;;;8231:4;8199:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8175:62;;8251:65;8282:10;8302:4;8309:6;8258:5;8251:30;;;;:65;;;;;;:::i;:::-;8330:20;8360:5;8353:23;;;8385:4;8353:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8330:61;;8605:31;8622:13;8605:12;:16;;:31;;;;:::i;:::-;8596:40;;8722:1;8711:8;:12;;;8707:339;;;8743:23;8769:6;8743:32;;8802:39;8838:1;8827:8;:12;8819:21;;8813:2;:27;8802:6;:10;;:39;;;;:::i;:::-;8793:48;;8864:11;8860:141;;;8905:5;8899:21;;;8921:10;8933:48;8978:1;8967:8;:12;8959:21;;8953:2;:27;8933:15;:19;;:48;;;;:::i;:::-;8899:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8860:141;9030:1;9019:12;;8707:339;;669:26;9068:74:::0;::::1;:60;9125:1;9105:5;9099:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;9091:36;;9085:2;:42;9068:12;:16;;:60;;;;:::i;:::-;:74;;9060:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:5;9221:14;;9213:23;;9197:39;;7935:1312;;;9346:10;9338:19;;9330:28;;9315:13;9262:123;9278:12;9292:11;9305:8;9360:9;9371:6;9379:5;9262:123;;;;;;;;;;;:::i;:::-;;;;;;;;2419:1:9;;;1628::::0;2563:7;:22;;;;7554:1838:1;;;;;;:::o;1559:32::-;;;;;;;;;;;;;:::o;747:33::-;;;;;;;;;;;;;:::o;1758:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1857:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2330:122::-;2387:21;;:::i;:::-;2427:13;:18;2441:3;2427:18;;;;;;;;;;;;;;;2420:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:122;;;:::o;11710:302:0:-;11787:5;11839:1;11830:6;:10;11812:6;:13;:29;;11804:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;11874:14;11962:6;11956:3;11948:6;11944:16;11940:29;11934:36;11922:48;;11997:8;11990:15;;;11710:302;;;;:::o;12329:305::-;12407:6;12460:1;12451:6;:10;12433:6;:13;:29;;12425:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;12495:15;12584:6;12578:3;12570:6;12566:16;12562:29;12556:36;12544:48;;12619:8;12612:15;;;12329:305;;;;:::o;8865:2480::-;8999:12;9062:7;9053:6;:16;9035:6;:13;:35;;9027:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9104:22;9174:7;9167:15;9200:1;9195:1895;;;;11231:4;11225:11;11212:24;;11282:4;11271:9;11267:20;11261:4;11254:34;9160:2142;;9195:1895;9369:4;9363:11;9350:24;;9996:2;9987:7;9983:16;10362:9;10355:17;10349:4;10345:28;10333:9;10322;10318:25;10314:60;10410:7;10406:2;10402:16;10654:6;10640:9;10633:17;10627:4;10623:28;10611:9;10603:6;10599:22;10595:57;10591:70;10436:417;10687:3;10683:2;10680:11;10436:417;;;10831:2;10825:9;10821:2;10814:21;10728:4;10724:2;10720:13;10714:19;;10768:4;10764:2;10760:13;10754:19;;10436:417;;;10440:239;10889:7;10878:9;10871:26;11071:2;11067:7;11062:2;11058;11054:11;11050:25;11044:4;11037:39;9202:1888;;;9160:2142;;11329:9;11322:16;;;8865:2480;;;;;:::o;13895:319::-;13974:7;14028:2;14019:6;:11;14001:6;:13;:30;;13993:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;14064:19;14161:6;14154:4;14146:6;14142:17;14138:30;14132:37;14117:52;;14196:11;14189:18;;;13895:319;;;;:::o;4338:812:1:-;4405:29;4437:16;4451:1;4437:4;:13;;:16;;;;:::i;:::-;4405:48;;4463:9;4475:15;4488:1;4475:4;:12;;:15;;;;:::i;:::-;4463:27;;4501:30;4548:3;4534:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:51;;4567:6;4562:134;4583:3;4579:7;;:1;:7;4562:134;;;4607:12;4622:26;4645:2;4641:1;:6;4637:1;:10;4622:4;:14;;:26;;;;:::i;:::-;4607:41;;4681:4;4662:13;4676:1;4662:16;;;;;;;;;;;;;:23;;;;;;;;;;;4562:134;4588:3;;;;;;;4562:134;;;;4706:29;4738:18;;;;;;;;;;;4706:50;;4787:22;4766:18;;:43;;;;;;;;;;;;;;;;;;4820:35;;:::i;:::-;4858:29;;;;;;;;4870:13;4858:29;;;;4885:1;4858:29;;;;;4820:67;;4933:16;4897:13;:33;4911:18;;;;;;;;;;;4897:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5041:21;;;;;;;;;;;5022:15;5015:47;4959:13;:37;4973:22;4959:37;;;;;;;;;;;;;;;:53;;;:103;;;;;;;;;;;;;;;;;;5078:65;5100:22;5124:18;;;;;;;;;;;5078:65;;;;;;;:::i;:::-;;;;;;;;4338:812;;;;;;:::o;5156:1447::-;5257:18;5278:15;5291:1;5278:4;:12;;:15;;;;:::i;:::-;5257:36;;5304:18;5325:15;5338:1;5325:4;:12;;:15;;;;:::i;:::-;5304:36;;5459:22;5484:23;5499:7;5484:4;:14;;:23;;;;:::i;:::-;5459:48;;5518:17;5538:16;5551:2;5538:4;:12;;:16;;;;:::i;:::-;5518:36;;5618:14;5635:19;5650:3;5635:4;:14;;:19;;;;:::i;:::-;5618:36;;5689:12;5673:28;;:12;:28;;;;5665:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5778:8;;;;;;;;;;;5762:24;;:12;:24;;;5754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5846:8;;;;;;;;;;;5831:23;;:11;:23;;;5827:770;;5870:21;5894:18;5909:2;5894:4;:14;;:18;;;;:::i;:::-;5870:42;;5926:16;5972:11;5985:13;5955:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5945:55;;;;;;5926:74;;6092:21;6116:13;:23;6130:8;6116:23;;;;;;;;;;;;;;;;;;;;;6092:47;;6182:1;6157:27;;:13;:27;;;6153:212;;;6204:20;6227:17;6240:3;6227:4;:12;;:17;;;;:::i;:::-;6204:40;;6278:72;6297:8;6307:11;6320:13;6335:14;6278:18;:72::i;:::-;6262:88;;6153:212;;6392:13;6379:32;;;6412:14;6428:6;6379:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5827:770;;;;;;6466:21;6490:23;6505:7;6490:4;:14;;:23;;;;:::i;:::-;6466:47;;6528:58;6563:14;6579:6;6535:13;6528:34;;;;:58;;;;;:::i;:::-;5827:770;;5156:1447;;;;;;:::o;877:203:7:-;977:96;997:5;1027:27;;;1056:4;1062:2;1066:5;1004:68;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;977:19;:96::i;:::-;877:203;;;;:::o;1321:134:4:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;4436:128::-;4494:7;4520:37;4524:1;4527;4520:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;4513:44;;4436:128;;;;:::o;11351:353:0:-;11430:7;11484:2;11475:6;:11;11457:6;:13;:30;;11449:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11520:19;11631:27;11621:6;11614:4;11606:6;11602:17;11598:30;11592:37;11588:71;11573:86;;11686:11;11679:18;;;11351:353;;;;:::o;13579:310::-;13658:7;13712:2;13703:6;:11;13685:6;:13;:30;;13677:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;13748:16;13839:6;13832:4;13824:6;13820:17;13816:30;13810:37;13798:49;;13874:8;13867:15;;;13579:310;;;;:::o;6609:939:1:-;6726:13;6918:19;6948:18;;;;;;;;;;;6940:27;;6918:49;;7019:4;7013:11;7051:66;7044:5;7037:81;7156:11;7149:4;7142:5;7138:16;7131:37;7206:66;7199:4;7192:5;7188:16;7181:92;7319:4;7313;7306:5;7303:1;7295:29;7286:38;;6986:348;7385:5;7372:30;;;7403:11;7416:13;7431:8;7372:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7498:5;7476:13;:19;7490:4;7476:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7537:4;7513:14;:21;7528:5;7513:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6609:939;;;;;;;:::o;696:175:7:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;2959:751::-;3378:23;3404:69;3432:4;3404:69;;;;;;;;;;;;;;;;;3412:5;3404:27;;;;:69;;;;;:::i;:::-;3378:95;;3507:1;3487:10;:17;:21;3483:221;;;3627:10;3616:30;;;;;;;;;;;;:::i;:::-;3608:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;3483:221;2959:751;;;:::o;1746:187:4:-;1832:7;1864:1;1859;:6;;1867:12;1851:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1890:9;1906:1;1902;:5;1890:17;;1925:1;1918:8;;;1746:187;;;;;:::o;3713:272::-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;5035:163::-;5121:7;5153:1;5148;:6;;5156:12;5140:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5190:1;5186;:5;;;;;;5179:12;;5035:163;;;;;:::o;3770:194:8:-;3873:12;3904:53;3927:6;3935:4;3941:1;3944:12;3904:22;:53::i;:::-;3897:60;;3770:194;;;;;:::o;5117:958::-;5247:12;5279:18;5290:6;5279:10;:18::i;:::-;5271:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;5402:12;5416:23;5443:6;:11;;5463:8;5474:4;5443:36;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:78;;;;5493:7;5489:580;;;5523:10;5516:17;;;;;;5489:580;5654:1;5634:10;:17;:21;5630:429;;;5892:10;5886:17;5952:15;5939:10;5935:2;5931:19;5924:44;5841:145;6031:12;6024:20;;;;;;;;;;;:::i;:::-;;;;;;;;5117:958;;;;;;;:::o;718:610::-;778:4;1036:16;1062:19;1084:66;1062:88;;;;1251:7;1239:20;1227:32;;1290:11;1278:8;:23;;:42;;;;;1317:3;1305:15;;:8;:15;;1278:42;1270:51;;;;718:610;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:124::-;;219:6;206:20;197:29;;231:30;255:5;231:30;:::i;:::-;191:75;;;;:::o;273:128::-;;354:6;348:13;339:22;;366:30;390:5;366:30;:::i;:::-;333:68;;;;:::o;408:130::-;;488:6;475:20;466:29;;500:33;527:5;500:33;:::i;:::-;460:78;;;;:::o;545:134::-;;629:6;623:13;614:22;;641:33;668:5;641:33;:::i;:::-;608:71;;;;:::o;700:336::-;;;814:3;807:4;799:6;795:17;791:27;781:2;;832:1;829;822:12;781:2;865:6;852:20;842:30;;892:18;884:6;881:30;878:2;;;924:1;921;914:12;878:2;958:4;950:6;946:17;934:29;;1009:3;1001:4;993:6;989:17;979:8;975:32;972:41;969:2;;;1026:1;1023;1016:12;969:2;774:262;;;;;:::o;1044:130::-;;1124:6;1111:20;1102:29;;1136:33;1163:5;1136:33;:::i;:::-;1096:78;;;;:::o;1181:134::-;;1265:6;1259:13;1250:22;;1277:33;1304:5;1277:33;:::i;:::-;1244:71;;;;:::o;1322:128::-;;1401:6;1388:20;1379:29;;1413:32;1439:5;1413:32;:::i;:::-;1373:77;;;;:::o;1457:126::-;;1535:6;1522:20;1513:29;;1547:31;1572:5;1547:31;:::i;:::-;1507:76;;;;:::o;1590:130::-;;1672:6;1666:13;1657:22;;1684:31;1709:5;1684:31;:::i;:::-;1651:69;;;;:::o;1727:241::-;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1847:1;1844;1837:12;1799:2;1882:1;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1861:97;1793:175;;;;:::o;1975:857::-;;;;;;;2158:3;2146:9;2137:7;2133:23;2129:33;2126:2;;;2175:1;2172;2165:12;2126:2;2210:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2189:97;2317:2;2335:53;2380:7;2371:6;2360:9;2356:22;2335:53;:::i;:::-;2325:63;;2296:98;2425:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2404:98;2533:2;2551:51;2594:7;2585:6;2574:9;2570:22;2551:51;:::i;:::-;2541:61;;2512:96;2639:3;2658:52;2702:7;2693:6;2682:9;2678:22;2658:52;:::i;:::-;2648:62;;2618:98;2747:3;2766:50;2808:7;2799:6;2788:9;2784:22;2766:50;:::i;:::-;2756:60;;2726:96;2120:712;;;;;;;;:::o;2839:257::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2967:1;2964;2957:12;2919:2;3002:1;3019:61;3072:7;3063:6;3052:9;3048:22;3019:61;:::i;:::-;3009:71;;2981:105;2913:183;;;;:::o;3103:241::-;;3207:2;3195:9;3186:7;3182:23;3178:32;3175:2;;;3223:1;3220;3213:12;3175:2;3258:1;3275:53;3320:7;3311:6;3300:9;3296:22;3275:53;:::i;:::-;3265:63;;3237:97;3169:175;;;;:::o;3351:263::-;;3466:2;3454:9;3445:7;3441:23;3437:32;3434:2;;;3482:1;3479;3472:12;3434:2;3517:1;3534:64;3590:7;3581:6;3570:9;3566:22;3534:64;:::i;:::-;3524:74;;3496:108;3428:186;;;;:::o;3621:485::-;;;;3756:2;3744:9;3735:7;3731:23;3727:32;3724:2;;;3772:1;3769;3762:12;3724:2;3807:1;3824:53;3869:7;3860:6;3849:9;3845:22;3824:53;:::i;:::-;3814:63;;3786:97;3914:2;3932:51;3975:7;3966:6;3955:9;3951:22;3932:51;:::i;:::-;3922:61;;3893:96;4020:2;4038:52;4082:7;4073:6;4062:9;4058:22;4038:52;:::i;:::-;4028:62;;3999:97;3718:388;;;;;:::o;4113:365::-;;;4236:2;4224:9;4215:7;4211:23;4207:32;4204:2;;;4252:1;4249;4242:12;4204:2;4315:1;4304:9;4300:17;4287:31;4338:18;4330:6;4327:30;4324:2;;;4370:1;4367;4360:12;4324:2;4398:64;4454:7;4445:6;4434:9;4430:22;4398:64;:::i;:::-;4380:82;;;;4266:202;4198:280;;;;;:::o;4485:263::-;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4616:1;4613;4606:12;4568:2;4651:1;4668:64;4724:7;4715:6;4704:9;4700:22;4668:64;:::i;:::-;4658:74;;4630:108;4562:186;;;;:::o;4755:239::-;;4858:2;4846:9;4837:7;4833:23;4829:32;4826:2;;;4874:1;4871;4864:12;4826:2;4909:1;4926:52;4970:7;4961:6;4950:9;4946:22;4926:52;:::i;:::-;4916:62;;4888:96;4820:174;;;;:::o;5001:259::-;;5114:2;5102:9;5093:7;5089:23;5085:32;5082:2;;;5130:1;5127;5120:12;5082:2;5165:1;5182:62;5236:7;5227:6;5216:9;5212:22;5182:62;:::i;:::-;5172:72;;5144:106;5076:184;;;;:::o;5268:173::-;;5355:46;5397:3;5389:6;5355:46;:::i;:::-;5430:4;5425:3;5421:14;5407:28;;5348:93;;;;:::o;5449:142::-;5540:45;5579:5;5540:45;:::i;:::-;5535:3;5528:58;5522:69;;:::o;5598:103::-;5671:24;5689:5;5671:24;:::i;:::-;5666:3;5659:37;5653:48;;:::o;5708:113::-;5791:24;5809:5;5791:24;:::i;:::-;5786:3;5779:37;5773:48;;:::o;5859:670::-;;5994:54;6042:5;5994:54;:::i;:::-;6061:76;6130:6;6125:3;6061:76;:::i;:::-;6054:83;;6158:56;6208:5;6158:56;:::i;:::-;6234:7;6262:1;6247:260;6272:6;6269:1;6266:13;6247:260;;;6339:6;6333:13;6360:63;6419:3;6404:13;6360:63;:::i;:::-;6353:70;;6440:60;6493:6;6440:60;:::i;:::-;6430:70;;6304:203;6294:1;6291;6287:9;6282:14;;6247:260;;;6251:14;6520:3;6513:10;;5973:556;;;;;;;:::o;6537:104::-;6614:21;6629:5;6614:21;:::i;:::-;6609:3;6602:34;6596:45;;:::o;6648:113::-;6731:24;6749:5;6731:24;:::i;:::-;6726:3;6719:37;6713:48;;:::o;6768:152::-;6869:45;6889:24;6907:5;6889:24;:::i;:::-;6869:45;:::i;:::-;6864:3;6857:58;6851:69;;:::o;6927:356::-;;7055:38;7087:5;7055:38;:::i;:::-;7105:88;7186:6;7181:3;7105:88;:::i;:::-;7098:95;;7198:52;7243:6;7238:3;7231:4;7224:5;7220:16;7198:52;:::i;:::-;7271:6;7266:3;7262:16;7255:23;;7035:248;;;;;:::o;7290:140::-;7380:44;7418:5;7380:44;:::i;:::-;7375:3;7368:57;7362:68;;:::o;7437:347::-;;7549:39;7582:5;7549:39;:::i;:::-;7600:71;7664:6;7659:3;7600:71;:::i;:::-;7593:78;;7676:52;7721:6;7716:3;7709:4;7702:5;7698:16;7676:52;:::i;:::-;7749:29;7771:6;7749:29;:::i;:::-;7744:3;7740:39;7733:46;;7529:255;;;;;:::o;7792:372::-;;7952:67;8016:2;8011:3;7952:67;:::i;:::-;7945:74;;8052:34;8048:1;8043:3;8039:11;8032:55;8121:5;8116:2;8111:3;8107:12;8100:27;8155:2;8150:3;8146:12;8139:19;;7938:226;;;:::o;8173:318::-;;8333:67;8397:2;8392:3;8333:67;:::i;:::-;8326:74;;8433:20;8429:1;8424:3;8420:11;8413:41;8482:2;8477:3;8473:12;8466:19;;8319:172;;;:::o;8500:324::-;;8660:67;8724:2;8719:3;8660:67;:::i;:::-;8653:74;;8760:26;8756:1;8751:3;8747:11;8740:47;8815:2;8810:3;8806:12;8799:19;;8646:178;;;:::o;8833:381::-;;8993:67;9057:2;9052:3;8993:67;:::i;:::-;8986:74;;9093:34;9089:1;9084:3;9080:11;9073:55;9162:14;9157:2;9152:3;9148:12;9141:36;9205:2;9200:3;9196:12;9189:19;;8979:235;;;:::o;9223:394::-;;9383:67;9447:2;9442:3;9383:67;:::i;:::-;9376:74;;9483:34;9479:1;9474:3;9470:11;9463:55;9552:27;9547:2;9542:3;9538:12;9531:49;9608:2;9603:3;9599:12;9592:19;;9369:248;;;:::o;9626:318::-;;9786:67;9850:2;9845:3;9786:67;:::i;:::-;9779:74;;9886:20;9882:1;9877:3;9873:11;9866:41;9935:2;9930:3;9926:12;9919:19;;9772:172;;;:::o;9953:324::-;;10113:67;10177:2;10172:3;10113:67;:::i;:::-;10106:74;;10213:26;10209:1;10204:3;10200:11;10193:47;10268:2;10263:3;10259:12;10252:19;;10099:178;;;:::o;10286:321::-;;10446:67;10510:2;10505:3;10446:67;:::i;:::-;10439:74;;10546:23;10542:1;10537:3;10533:11;10526:44;10598:2;10593:3;10589:12;10582:19;;10432:175;;;:::o;10616:308::-;;10776:66;10840:1;10835:3;10776:66;:::i;:::-;10769:73;;10875:11;10871:1;10866:3;10862:11;10855:32;10915:2;10910:3;10906:12;10899:19;;10762:162;;;:::o;10933:320::-;;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11193:22;11189:1;11184:3;11180:11;11173:43;11244:2;11239:3;11235:12;11228:19;;11079:174;;;:::o;11262:325::-;;11422:67;11486:2;11481:3;11422:67;:::i;:::-;11415:74;;11522:27;11518:1;11513:3;11509:11;11502:48;11578:2;11573:3;11569:12;11562:19;;11408:179;;;:::o;11596:324::-;;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11856:26;11852:1;11847:3;11843:11;11836:47;11911:2;11906:3;11902:12;11895:19;;11742:178;;;:::o;11929:329::-;;12089:67;12153:2;12148:3;12089:67;:::i;:::-;12082:74;;12189:31;12185:1;12180:3;12176:11;12169:52;12249:2;12244:3;12240:12;12233:19;;12075:183;;;:::o;12267:379::-;;12427:67;12491:2;12486:3;12427:67;:::i;:::-;12420:74;;12527:34;12523:1;12518:3;12514:11;12507:55;12596:12;12591:2;12586:3;12582:12;12575:34;12637:2;12632:3;12628:12;12621:19;;12413:233;;;:::o;12655:375::-;;12815:67;12879:2;12874:3;12815:67;:::i;:::-;12808:74;;12915:34;12911:1;12906:3;12902:11;12895:55;12984:8;12979:2;12974:3;12970:12;12963:30;13021:2;13016:3;13012:12;13005:19;;12801:229;;;:::o;13039:331::-;;13199:67;13263:2;13258:3;13199:67;:::i;:::-;13192:74;;13299:33;13295:1;13290:3;13286:11;13279:54;13361:2;13356:3;13352:12;13345:19;;13185:185;;;:::o;13443:616::-;;13600:4;13595:3;13591:14;13683:4;13676:5;13672:16;13666:23;13735:3;13729:4;13725:14;13718:4;13713:3;13709:14;13702:38;13755:103;13853:4;13839:12;13755:103;:::i;:::-;13747:111;;13620:250;13954:4;13947:5;13943:16;13937:23;13966:61;14021:4;14016:3;14012:14;13998:12;13966:61;:::i;:::-;13880:153;14050:4;14043:11;;13573:486;;;;;:::o;14066:113::-;14149:24;14167:5;14149:24;:::i;:::-;14144:3;14137:37;14131:48;;:::o;14186:100::-;14257:23;14274:5;14257:23;:::i;:::-;14252:3;14245:36;14239:47;;:::o;14293:110::-;14374:23;14391:5;14374:23;:::i;:::-;14369:3;14362:36;14356:47;;:::o;14410:107::-;14489:22;14505:5;14489:22;:::i;:::-;14484:3;14477:35;14471:46;;:::o;14524:144::-;14621:41;14639:22;14655:5;14639:22;:::i;:::-;14621:41;:::i;:::-;14616:3;14609:54;14603:65;;:::o;14675:271::-;;14828:93;14917:3;14908:6;14828:93;:::i;:::-;14821:100;;14938:3;14931:10;;14809:137;;;;:::o;14953:383::-;;15105:71;15172:3;15163:6;15105:71;:::i;:::-;15198:1;15193:3;15189:11;15182:18;;15211:75;15282:3;15273:6;15211:75;:::i;:::-;15308:2;15303:3;15299:12;15292:19;;15328:3;15321:10;;15093:243;;;;;:::o;15343:222::-;;15470:2;15459:9;15455:18;15447:26;;15484:71;15552:1;15541:9;15537:17;15528:6;15484:71;:::i;:::-;15441:124;;;;:::o;15572:238::-;;15707:2;15696:9;15692:18;15684:26;;15721:79;15797:1;15786:9;15782:17;15773:6;15721:79;:::i;:::-;15678:132;;;;:::o;15817:349::-;;15980:2;15969:9;15965:18;15957:26;;15994:79;16070:1;16059:9;16055:17;16046:6;15994:79;:::i;:::-;16084:72;16152:2;16141:9;16137:18;16128:6;16084:72;:::i;:::-;15951:215;;;;;:::o;16173:444::-;;16356:2;16345:9;16341:18;16333:26;;16370:71;16438:1;16427:9;16423:17;16414:6;16370:71;:::i;:::-;16452:72;16520:2;16509:9;16505:18;16496:6;16452:72;:::i;:::-;16535;16603:2;16592:9;16588:18;16579:6;16535:72;:::i;:::-;16327:290;;;;;;:::o;16624:333::-;;16779:2;16768:9;16764:18;16756:26;;16793:71;16861:1;16850:9;16846:17;16837:6;16793:71;:::i;:::-;16875:72;16943:2;16932:9;16928:18;16919:6;16875:72;:::i;:::-;16750:207;;;;;:::o;16964:210::-;;17085:2;17074:9;17070:18;17062:26;;17099:65;17161:1;17150:9;17146:17;17137:6;17099:65;:::i;:::-;17056:118;;;;:::o;17181:548::-;;17388:3;17377:9;17373:19;17365:27;;17403:71;17471:1;17460:9;17456:17;17447:6;17403:71;:::i;:::-;17485:68;17549:2;17538:9;17534:18;17525:6;17485:68;:::i;:::-;17564:72;17632:2;17621:9;17617:18;17608:6;17564:72;:::i;:::-;17647;17715:2;17704:9;17700:18;17691:6;17647:72;:::i;:::-;17359:370;;;;;;;:::o;17736:310::-;;17883:2;17872:9;17868:18;17860:26;;17933:9;17927:4;17923:20;17919:1;17908:9;17904:17;17897:47;17958:78;18031:4;18022:6;17958:78;:::i;:::-;17950:86;;17854:192;;;;:::o;18053:416::-;;18253:2;18242:9;18238:18;18230:26;;18303:9;18297:4;18293:20;18289:1;18278:9;18274:17;18267:47;18328:131;18454:4;18328:131;:::i;:::-;18320:139;;18224:245;;;:::o;18476:416::-;;18676:2;18665:9;18661:18;18653:26;;18726:9;18720:4;18716:20;18712:1;18701:9;18697:17;18690:47;18751:131;18877:4;18751:131;:::i;:::-;18743:139;;18647:245;;;:::o;18899:416::-;;19099:2;19088:9;19084:18;19076:26;;19149:9;19143:4;19139:20;19135:1;19124:9;19120:17;19113:47;19174:131;19300:4;19174:131;:::i;:::-;19166:139;;19070:245;;;:::o;19322:416::-;;19522:2;19511:9;19507:18;19499:26;;19572:9;19566:4;19562:20;19558:1;19547:9;19543:17;19536:47;19597:131;19723:4;19597:131;:::i;:::-;19589:139;;19493:245;;;:::o;19745:416::-;;19945:2;19934:9;19930:18;19922:26;;19995:9;19989:4;19985:20;19981:1;19970:9;19966:17;19959:47;20020:131;20146:4;20020:131;:::i;:::-;20012:139;;19916:245;;;:::o;20168:416::-;;20368:2;20357:9;20353:18;20345:26;;20418:9;20412:4;20408:20;20404:1;20393:9;20389:17;20382:47;20443:131;20569:4;20443:131;:::i;:::-;20435:139;;20339:245;;;:::o;20591:416::-;;20791:2;20780:9;20776:18;20768:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20866:131;20992:4;20866:131;:::i;:::-;20858:139;;20762:245;;;:::o;21014:416::-;;21214:2;21203:9;21199:18;21191:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21185:245;;;:::o;21437:416::-;;21637:2;21626:9;21622:18;21614:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21712:131;21838:4;21712:131;:::i;:::-;21704:139;;21608:245;;;:::o;21860:416::-;;22060:2;22049:9;22045:18;22037:26;;22110:9;22104:4;22100:20;22096:1;22085:9;22081:17;22074:47;22135:131;22261:4;22135:131;:::i;:::-;22127:139;;22031:245;;;:::o;22283:416::-;;22483:2;22472:9;22468:18;22460:26;;22533:9;22527:4;22523:20;22519:1;22508:9;22504:17;22497:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22454:245;;;:::o;22706:416::-;;22906:2;22895:9;22891:18;22883:26;;22956:9;22950:4;22946:20;22942:1;22931:9;22927:17;22920:47;22981:131;23107:4;22981:131;:::i;:::-;22973:139;;22877:245;;;:::o;23129:416::-;;23329:2;23318:9;23314:18;23306:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23300:245;;;:::o;23552:416::-;;23752:2;23741:9;23737:18;23729:26;;23802:9;23796:4;23792:20;23788:1;23777:9;23773:17;23766:47;23827:131;23953:4;23827:131;:::i;:::-;23819:139;;23723:245;;;:::o;23975:416::-;;24175:2;24164:9;24160:18;24152:26;;24225:9;24219:4;24215:20;24211:1;24200:9;24196:17;24189:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;24146:245;;;:::o;24398:416::-;;24598:2;24587:9;24583:18;24575:26;;24648:9;24642:4;24638:20;24634:1;24623:9;24619:17;24612:47;24673:131;24799:4;24673:131;:::i;:::-;24665:139;;24569:245;;;:::o;24821:382::-;;25004:2;24993:9;24989:18;24981:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25079:114;25188:4;25179:6;25079:114;:::i;:::-;25071:122;;24975:228;;;;:::o;25210:218::-;;25335:2;25324:9;25320:18;25312:26;;25349:69;25415:1;25404:9;25400:17;25391:6;25349:69;:::i;:::-;25306:122;;;;:::o;25435:325::-;;25586:2;25575:9;25571:18;25563:26;;25600:69;25666:1;25655:9;25651:17;25642:6;25600:69;:::i;:::-;25680:70;25746:2;25735:9;25731:18;25722:6;25680:70;:::i;:::-;25557:203;;;;;:::o;25767:428::-;;25942:2;25931:9;25927:18;25919:26;;25956:67;26020:1;26009:9;26005:17;25996:6;25956:67;:::i;:::-;26034:72;26102:2;26091:9;26087:18;26078:6;26034:72;:::i;:::-;26117:68;26181:2;26170:9;26166:18;26157:6;26117:68;:::i;:::-;25913:282;;;;;;:::o;26202:774::-;;26466:3;26455:9;26451:19;26443:27;;26481:67;26545:1;26534:9;26530:17;26521:6;26481:67;:::i;:::-;26559:68;26623:2;26612:9;26608:18;26599:6;26559:68;:::i;:::-;26638:79;26713:2;26702:9;26698:18;26689:6;26638:79;:::i;:::-;26728:72;26796:2;26785:9;26781:18;26772:6;26728:72;:::i;:::-;26811:73;26879:3;26868:9;26864:19;26855:6;26811:73;:::i;:::-;26895:71;26961:3;26950:9;26946:19;26937:6;26895:71;:::i;:::-;26437:539;;;;;;;;;:::o;26983:752::-;;27236:3;27225:9;27221:19;27213:27;;27251:67;27315:1;27304:9;27300:17;27291:6;27251:67;:::i;:::-;27329:68;27393:2;27382:9;27378:18;27369:6;27329:68;:::i;:::-;27408;27472:2;27461:9;27457:18;27448:6;27408:68;:::i;:::-;27487:72;27555:2;27544:9;27540:18;27531:6;27487:72;:::i;:::-;27570:73;27638:3;27627:9;27623:19;27614:6;27570:73;:::i;:::-;27654:71;27720:3;27709:9;27705:19;27696:6;27654:71;:::i;:::-;27207:528;;;;;;;;;:::o;27742:151::-;;27828:3;27820:11;;27866:4;27861:3;27857:14;27849:22;;27814:79;;;:::o;27900:137::-;;28009:5;28003:12;27993:22;;27974:63;;;:::o;28044:121::-;;28137:5;28131:12;28121:22;;28102:63;;;:::o;28172:122::-;;28266:5;28260:12;28250:22;;28231:63;;;:::o;28301:108::-;;28399:4;28394:3;28390:14;28382:22;;28376:33;;;:::o;28417:168::-;;28537:6;28532:3;28525:19;28574:4;28569:3;28565:14;28550:29;;28518:67;;;;:::o;28594:144::-;;28729:3;28714:18;;28707:31;;;;:::o;28747:163::-;;28862:6;28857:3;28850:19;28899:4;28894:3;28890:14;28875:29;;28843:67;;;;:::o;28918:91::-;;28980:24;28998:5;28980:24;:::i;:::-;28969:35;;28963:46;;;:::o;29016:85::-;;29089:5;29082:13;29075:21;29064:32;;29058:43;;;:::o;29108:72::-;;29170:5;29159:16;;29153:27;;;:::o;29187:121::-;;29260:42;29253:5;29249:54;29238:65;;29232:76;;;:::o;29315:72::-;;29377:5;29366:16;;29360:27;;;:::o;29394:88::-;;29466:10;29459:5;29455:22;29444:33;;29438:44;;;:::o;29489:81::-;;29560:4;29553:5;29549:16;29538:27;;29532:38;;;:::o;29577:129::-;;29664:37;29695:5;29664:37;:::i;:::-;29651:50;;29645:61;;;:::o;29713:113::-;;29799:22;29815:5;29799:22;:::i;:::-;29786:35;;29780:46;;;:::o;29833:121::-;;29912:37;29943:5;29912:37;:::i;:::-;29899:50;;29893:61;;;:::o;29961:108::-;;30040:24;30058:5;30040:24;:::i;:::-;30027:37;;30021:48;;;:::o;30077:268::-;30142:1;30149:101;30163:6;30160:1;30157:13;30149:101;;;30239:1;30234:3;30230:11;30224:18;30220:1;30215:3;30211:11;30204:39;30185:2;30182:1;30178:10;30173:15;;30149:101;;;30265:6;30262:1;30259:13;30256:2;;;30330:1;30321:6;30316:3;30312:16;30305:27;30256:2;30126:219;;;;:::o;30353:74::-;;30417:5;30406:16;;30400:27;;;:::o;30434:88::-;;30496:21;30511:5;30496:21;:::i;:::-;30485:32;;30479:43;;;:::o;30529:97::-;;30617:2;30613:7;30608:2;30601:5;30597:14;30593:28;30583:38;;30577:49;;;:::o;30634:96::-;;30714:5;30709:3;30705:15;30683:37;;30677:53;;;:::o;30738:117::-;30807:24;30825:5;30807:24;:::i;:::-;30800:5;30797:35;30787:2;;30846:1;30843;30836:12;30787:2;30781:74;:::o;30862:111::-;30928:21;30943:5;30928:21;:::i;:::-;30921:5;30918:32;30908:2;;30964:1;30961;30954:12;30908:2;30902:71;:::o;30980:117::-;31049:24;31067:5;31049:24;:::i;:::-;31042:5;31039:35;31029:2;;31088:1;31085;31078:12;31029:2;31023:74;:::o;31104:117::-;31173:24;31191:5;31173:24;:::i;:::-;31166:5;31163:35;31153:2;;31212:1;31209;31202:12;31153:2;31147:74;:::o;31228:115::-;31296:23;31313:5;31296:23;:::i;:::-;31289:5;31286:34;31276:2;;31334:1;31331;31324:12;31276:2;31270:73;:::o;31350:113::-;31417:22;31433:5;31417:22;:::i;:::-;31410:5;31407:33;31397:2;;31454:1;31451;31444:12;31397:2;31391:72;:::o", "source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\n// TODO(hendrik): switch-over feature\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/ERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\nimport \"./BytesLib.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole is ReentrancyGuard {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\n\n uint64 constant MAX_UINT64 = 18_446_744_073_709_551_615;\n\n // Address of the Wrapped asset template\n address public wrappedAssetMaster;\n\n // Chain ID of Ethereum\n uint8 CHAIN_ID = 2;\n\n // Address of the official WETH contract\n address constant WETHAddress = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;\n\n struct GuardianSet {\n address[] keys;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n uint32 oldGuardianIndex,\n uint32 newGuardianIndex\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n uint8 token_decimals,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount,\n uint32 nonce\n );\n\n // Mapping of guardian_set_index => guardian set\n mapping(uint32 => GuardianSet) public guardian_sets;\n // Current active guardian set\n uint32 public guardian_set_index;\n\n // Period for which a guardian set stays active after it has been replaced\n uint32 public guardian_set_expirity;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) public consumedVAAs;\n\n // Mapping of wrapped asset ERC20 contracts\n mapping(bytes32 => address) public wrappedAssets;\n mapping(address => bool) public isWrappedAsset;\n\n constructor(GuardianSet memory initial_guardian_set, address wrapped_asset_master, uint32 _guardian_set_expirity) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n guardian_set_expirity = _guardian_set_expirity;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function getGuardianSet(uint32 idx) view public returns (GuardianSet memory gs) {\n return guardian_sets[idx];\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public nonReentrant {\n uint8 version = vaa.toUint8(0);\n require(version == 1, \"VAA version incompatible\");\n\n // Load 4 bytes starting from index 1\n uint32 vaa_guardian_set_index = vaa.toUint32(1);\n\n uint256 len_signers = vaa.toUint8(5);\n uint offset = 6 + 66 * len_signers;\n\n // Load 4 bytes timestamp\n //uint32 timestamp = vaa.toUint32(offset);\n\n // Hash the body\n bytes32 hash = keccak256(vaa.slice(offset, vaa.length - offset));\n require(!consumedVAAs[hash], \"VAA was already executed\");\n\n GuardianSet memory guardian_set = guardian_sets[vaa_guardian_set_index];\n require(guardian_set.expiration_time == 0 || guardian_set.expiration_time > block.timestamp, \"guardian set has expired\");\n require(((guardian_set.keys.length / 4) * 3) + 1 <= len_signers, \"no quorum\");\n\n for (uint i = 0; i < len_signers; i++) {\n uint8 index = vaa.toUint8(6 + i * 66);\n bytes32 r = vaa.toBytes32(7 + i * 66);\n bytes32 s = vaa.toBytes32(39 + i * 66);\n uint8 v = vaa.toUint8(71 + i * 66);\n v += 27;\n require(ecrecover(hash, v, r, s) == guardian_set.keys[index], \"VAA signature invalid\");\n }\n\n uint8 action = vaa.toUint8(offset + 4);\n bytes memory payload = vaa.slice(offset + 5, vaa.length - (offset + 5));\n\n // Process VAA\n if (action == 0x01) {\n require(vaa_guardian_set_index == guardian_set_index, \"only the current guardian set can change the guardian set\");\n vaaUpdateGuardianSet(payload);\n } else if (action == 0x10) {\n vaaTransfer(payload);\n } else {\n revert(\"invalid VAA action\");\n }\n\n // Set the VAA as consumed\n consumedVAAs[hash] = true;\n }\n\n function vaaUpdateGuardianSet(bytes memory data) private {\n uint32 new_guardian_set_index = data.toUint32(0);\n uint8 len = data.toUint8(4);\n\n address[] memory new_guardians = new address[](len);\n for (uint i = 0; i < len; i++) {\n address addr = data.toAddress(5 + i * 20);\n new_guardians[i] = addr;\n }\n\n uint32 old_guardian_set_index = guardian_set_index;\n guardian_set_index = new_guardian_set_index;\n\n GuardianSet memory new_guardian_set = GuardianSet(new_guardians, 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + guardian_set_expirity;\n\n emit LogGuardianSetChanged(old_guardian_set_index, guardian_set_index);\n }\n\n function vaaTransfer(bytes memory data) private {\n //uint32 nonce = data.toUint64(0);\n uint8 source_chain = data.toUint8(4);\n\n uint8 target_chain = data.toUint8(5);\n //bytes32 source_address = data.toBytes32(6);\n //bytes32 target_address = data.toBytes32(38);\n address target_address = data.toAddress(38 + 12);\n\n uint8 token_chain = data.toUint8(70);\n //bytes32 token_address = data.toBytes32(71);\n uint256 amount = data.toUint256(104);\n\n require(source_chain != target_chain, \"same chain transfers are not supported\");\n require(target_chain == CHAIN_ID, \"transfer must be incoming\");\n\n if (token_chain != CHAIN_ID) {\n bytes32 token_address = data.toBytes32(71);\n bytes32 asset_id = keccak256(abi.encodePacked(token_chain, token_address));\n\n // if yes: mint to address\n // if no: create and mint\n address wrapped_asset = wrappedAssets[asset_id];\n if (wrapped_asset == address(0)) {\n uint8 asset_decimals = data.toUint8(103);\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address, asset_decimals);\n }\n\n WrappedAsset(wrapped_asset).mint(target_address, amount);\n } else {\n address token_address = data.toAddress(71 + 12);\n\n IERC20(token_address).safeTransfer(target_address, amount);\n }\n }\n\n function deployWrappedAsset(bytes32 seed, uint8 token_chain, bytes32 token_address, uint8 decimals) private returns (address asset){\n // Taken from https://github.com/OpenZeppelin/openzeppelin-sdk/blob/master/packages/lib/contracts/upgradeability/ProxyFactory.sol\n // Licensed under MIT\n bytes20 targetBytes = bytes20(wrappedAssetMaster);\n assembly {\n let clone := mload(0x40)\n mstore(clone, 0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000)\n mstore(add(clone, 0x14), targetBytes)\n mstore(add(clone, 0x28), 0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000)\n asset := create2(0, clone, 0x37, seed)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address, decimals);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce,\n bool refund_dust\n ) public nonReentrant {\n require(amount != 0, \"amount must not be 0\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n uint8 decimals = ERC20(asset).decimals();\n\n if (isWrappedAsset[asset]) {\n WrappedAsset(asset).burn(msg.sender, amount);\n asset_chain = WrappedAsset(asset).assetChain();\n asset_address = WrappedAsset(asset).assetAddress();\n } else {\n uint256 balanceBefore = IERC20(asset).balanceOf(address(this));\n IERC20(asset).safeTransferFrom(msg.sender, address(this), amount);\n uint256 balanceAfter = IERC20(asset).balanceOf(address(this));\n\n // The amount that was transferred in is the delta between balance before and after the transfer.\n // This is to properly handle tokens that charge a fee on transfer.\n amount = balanceAfter.sub(balanceBefore);\n\n // Decimal adjust amount - we keep the dust\n if (decimals > 9) {\n uint256 original_amount = amount;\n amount = amount.div(10 ** uint256(decimals - 9));\n\n if (refund_dust) {\n ERC20(asset).transfer(msg.sender, original_amount.mod(10 ** uint256(decimals - 9)));\n }\n\n decimals = 9;\n }\n\n require(balanceAfter.div(10 ** uint256(ERC20(asset).decimals() - 9)) <= MAX_UINT64, \"bridge balance would exceed maximum\");\n\n asset_address = bytes32(uint256(asset));\n }\n\n emit LogTokensLocked(target_chain, asset_chain, decimals, asset_address, bytes32(uint256(msg.sender)), recipient, amount, nonce);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce\n ) public payable nonReentrant {\n require(msg.value != 0, \"amount must not be 0\");\n\n // Wrap tx value in WETH\n WETH(WETHAddress).deposit{value : msg.value}();\n\n // Log deposit of WETH\n emit LogTokensLocked(target_chain, CHAIN_ID, 18, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, msg.value, nonce);\n }\n\n fallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n\n receive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\n function deposit() external payable;\n\n function withdraw(uint256 amount) external;\n}\n", "sourcePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "ast": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "exportedSymbols": { "WETH": [1265], "Wormhole": [1254] }, "id": 1266, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 335, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", "src": "103:23:1" }, { "id": 336, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "127:33:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 337, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2538, "src": "162:55:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 338, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2616, "src": "218:56:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "id": 339, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2829, "src": "275:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 340, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2031, "src": "335:51:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 341, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 3073, "src": "387:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", "file": "./BytesLib.sol", "id": 342, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 334, "src": "447:24:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "file": "./WrappedAsset.sol", "id": 343, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 1812, "src": "472:28:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 344, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3072, "src": "523:15:1", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$3072", "typeString": "contract ReentrancyGuard" } }, "id": 345, "nodeType": "InheritanceSpecifier", "src": "523:15:1" } ], "contractDependencies": [3072], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1254, "linearizedBaseContracts": [1254, 3072], "name": "Wormhole", "nodeType": "ContractDefinition", "nodes": [ { "id": 348, "libraryName": { "contractScope": null, "id": 346, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2828, "src": "551:9:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$2828", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "545:27:1", "typeName": { "contractScope": null, "id": 347, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2615, "src": "565:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } } }, { "id": 351, "libraryName": { "contractScope": null, "id": 349, "name": "BytesLib", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 333, "src": "583:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_BytesLib_$333", "typeString": "library BytesLib" } }, "nodeType": "UsingForDirective", "src": "577:25:1", "typeName": { "id": 350, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "596:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, { "id": 354, "libraryName": { "contractScope": null, "id": 352, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2030, "src": "613:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$2030", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "607:27:1", "typeName": { "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": true, "id": 357, "mutability": "constant", "name": "MAX_UINT64", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "640:55:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 355, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "640:6:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": { "argumentTypes": null, "hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135", "id": 356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "669:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18446744073709551615_by_1", "typeString": "int_const 18446744073709551615" }, "value": "18_446_744_073_709_551_615" }, "visibility": "internal" }, { "constant": false, "functionSelector": "99da1d3c", "id": 359, "mutability": "mutable", "name": "wrappedAssetMaster", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "747:33:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 358, "name": "address", "nodeType": "ElementaryTypeName", "src": "747:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 362, "mutability": "mutable", "name": "CHAIN_ID", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "815:18:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 360, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "815:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "32", "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "832:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "visibility": "internal" }, { "constant": true, "id": 365, "mutability": "constant", "name": "WETHAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "885:73:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 363, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", "id": 364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "916:42:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, "visibility": "internal" }, { "canonicalName": "Wormhole.GuardianSet", "id": 371, "members": [ { "constant": false, "id": 368, "mutability": "mutable", "name": "keys", "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, "src": "994:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 366, "name": "address", "nodeType": "ElementaryTypeName", "src": "994:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 367, "length": null, "nodeType": "ArrayTypeName", "src": "994:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 370, "mutability": "mutable", "name": "expiration_time", "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, "src": "1018:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 369, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1018:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "name": "GuardianSet", "nodeType": "StructDefinition", "scope": 1254, "src": "965:82:1", "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 377, "name": "LogGuardianSetChanged", "nodeType": "EventDefinition", "parameters": { "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "oldGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, "src": "1090:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 372, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1090:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "newGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, "src": "1123:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 374, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1123:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1080:72:1" }, "src": "1053:100:1" }, { "anonymous": false, "documentation": null, "id": 395, "name": "LogTokensLocked", "nodeType": "EventDefinition", "parameters": { "id": 394, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 379, "indexed": false, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1190:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 378, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1190:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 381, "indexed": false, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1218:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 380, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1218:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 383, "indexed": false, "mutability": "mutable", "name": "token_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1245:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 382, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1245:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 385, "indexed": true, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1275:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 384, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1275:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 387, "indexed": true, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1306:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 386, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1306:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 389, "indexed": false, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1338:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 388, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1338:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 391, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1365:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1365:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 393, "indexed": false, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1389:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 392, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1389:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1180:227:1" }, "src": "1159:249:1" }, { "constant": false, "functionSelector": "42b0aefa", "id": 399, "mutability": "mutable", "name": "guardian_sets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1467:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "typeName": { "id": 398, "keyType": { "id": 396, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1475:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Mapping", "src": "1467:30:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "valueType": { "contractScope": null, "id": 397, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "1485:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "822d82b3", "id": 401, "mutability": "mutable", "name": "guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1559:32:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 400, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1559:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "4db47840", "id": 403, "mutability": "mutable", "name": "guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1677:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 402, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1677:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "a31fe409", "id": 407, "mutability": "mutable", "name": "consumedVAAs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1758:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 406, "keyType": { "id": 404, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1766:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1758:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 405, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1777:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "b6694c2a", "id": 411, "mutability": "mutable", "name": "wrappedAssets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1857:48:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "typeName": { "id": 410, "keyType": { "id": 408, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1865:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1857:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "valueType": { "id": 409, "name": "address", "nodeType": "ElementaryTypeName", "src": "1876:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1a2be4da", "id": 415, "mutability": "mutable", "name": "isWrappedAsset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1911:46:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 414, "keyType": { "id": 412, "name": "address", "nodeType": "ElementaryTypeName", "src": "1919:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1911:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1930:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 442, "nodeType": "Block", "src": "2085:239:1", "statements": [ { "expression": { "argumentTypes": null, "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 424, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2095:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 426, "indexExpression": { "argumentTypes": null, "hexValue": "30", "id": 425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2109:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2095:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 427, "name": "initial_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 417, "src": "2114:20:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "2095:39:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 429, "nodeType": "ExpressionStatement", "src": "2095:39:1" }, { "expression": { "argumentTypes": null, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 430, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "2187:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2208:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2187:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 433, "nodeType": "ExpressionStatement", "src": "2187:22:1" }, { "expression": { "argumentTypes": null, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 434, "name": "guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 403, "src": "2219:21:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 435, "name": "_guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 421, "src": "2243:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2219:46:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 437, "nodeType": "ExpressionStatement", "src": "2219:46:1" }, { "expression": { "argumentTypes": null, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 438, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2276:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 439, "name": "wrapped_asset_master", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "2297:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2276:41:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 441, "nodeType": "ExpressionStatement", "src": "2276:41:1" } ] }, "documentation": null, "id": 443, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 422, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 417, "mutability": "mutable", "name": "initial_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "1976:39:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 416, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "1976:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 419, "mutability": "mutable", "name": "wrapped_asset_master", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "2017:28:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 418, "name": "address", "nodeType": "ElementaryTypeName", "src": "2017:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 421, "mutability": "mutable", "name": "_guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "2047:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 420, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2047:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1975:102:1" }, "returnParameters": { "id": 423, "nodeType": "ParameterList", "parameters": [], "src": "2085:0:1" }, "scope": 1254, "src": "1964:360:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 454, "nodeType": "Block", "src": "2410:42:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 450, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2427:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 452, "indexExpression": { "argumentTypes": null, "id": 451, "name": "idx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 445, "src": "2441:3:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2427:18:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "functionReturnParameters": 449, "id": 453, "nodeType": "Return", "src": "2420:25:1" } ] }, "documentation": null, "functionSelector": "f951975a", "id": 455, "implemented": true, "kind": "function", "modifiers": [], "name": "getGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 446, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 445, "mutability": "mutable", "name": "idx", "nodeType": "VariableDeclaration", "overrides": null, "scope": 455, "src": "2354:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 444, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2354:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "2353:12:1" }, "returnParameters": { "id": 449, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 448, "mutability": "mutable", "name": "gs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 455, "src": "2387:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 447, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "2387:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "src": "2386:23:1" }, "scope": 1254, "src": "2330:122:1", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 692, "nodeType": "Block", "src": "2531:1801:1", "statements": [ { "assignments": [463], "declarations": [ { "constant": false, "id": 463, "mutability": "mutable", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2541:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 462, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2541:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 468, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2569:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 464, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2557:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2557:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2557:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2541:30:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 470, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 463, "src": "2589:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 471, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2600:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2589:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", "id": 473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2603:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" }, "value": "VAA version incompatible" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" } ], "id": 469, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2581:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 474, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2581:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 475, "nodeType": "ExpressionStatement", "src": "2581:49:1" }, { "assignments": [477], "declarations": [ { "constant": false, "id": 477, "mutability": "mutable", "name": "vaa_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2687:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 476, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2687:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 482, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2732:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "id": 478, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2719:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2719:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2719:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2687:47:1" }, { "assignments": [484], "declarations": [ { "constant": false, "id": 484, "mutability": "mutable", "name": "len_signers", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2745:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 483, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2745:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 489, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2779:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 485, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2767:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2767:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2767:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2745:36:1" }, { "assignments": [491], "declarations": [ { "constant": false, "id": 491, "mutability": "mutable", "name": "offset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2791:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 490, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2791:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 497, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2805:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3636", "id": 493, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2809:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 494, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "2814:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2809:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2805:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2791:34:1" }, { "assignments": [499], "declarations": [ { "constant": false, "id": 499, "mutability": "mutable", "name": "hash", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2947:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 498, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2947:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 510, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 503, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "2982:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 504, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2990:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2990:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 506, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3003:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2990:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 501, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2972:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "2972:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2972:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 500, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2962:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2962:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "2947:64:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3029:19:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 512, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "3030:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 514, "indexExpression": { "argumentTypes": null, "id": 513, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "3043:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3030:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412077617320616c7265616479206578656375746564", "id": 516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3050:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" }, "value": "VAA was already executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" } ], "id": 511, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3021:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3021:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 518, "nodeType": "ExpressionStatement", "src": "3021:56:1" }, { "assignments": [520], "declarations": [ { "constant": false, "id": 520, "mutability": "mutable", "name": "guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3088:31:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 519, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "3088:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 524, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 521, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "3122:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 523, "indexExpression": { "argumentTypes": null, "id": 522, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "3136:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3122:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3088:71:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 526, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3177:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "3177:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 528, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3209:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3177:33:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 530, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3214:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 531, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "3214:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 532, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3245:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3245:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3214:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3177:83:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "677561726469616e20736574206861732065787069726564", "id": 536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3262:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" }, "value": "guardian set has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" } ], "id": 525, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3169:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3169:120:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 538, "nodeType": "ExpressionStatement", "src": "3169:120:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 552, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 540, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3309:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 368, "src": "3309:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3309:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3336:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3309:28:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 545, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3308:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "33", "id": 546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3341:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "src": "3308:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 548, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3307:36:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3346:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3307:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 551, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3351:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3307:55:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6e6f2071756f72756d", "id": 553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3364:11:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" }, "value": "no quorum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" } ], "id": 539, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3299:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3299:77:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 555, "nodeType": "ExpressionStatement", "src": "3299:77:1" }, { "body": { "id": 629, "nodeType": "Block", "src": "3426:334:1", "statements": [ { "assignments": [567], "declarations": [ { "constant": false, "id": 567, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3440:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 566, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3440:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 576, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3466:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 571, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3470:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3474:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3470:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3466:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 568, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3454:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3454:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3454:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3440:37:1" }, { "assignments": [578], "declarations": [ { "constant": false, "id": 578, "mutability": "mutable", "name": "r", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3491:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 577, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3491:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 587, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "37", "id": 581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3517:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7" }, "value": "7" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 582, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3521:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3525:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3521:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3517:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 579, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3503:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3503:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3503:25:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3491:37:1" }, { "assignments": [589], "declarations": [ { "constant": false, "id": 589, "mutability": "mutable", "name": "s", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3542:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 588, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3542:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 598, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3339", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3568:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_39_by_1", "typeString": "int_const 39" }, "value": "39" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 593, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3573:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3577:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3573:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3568:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 590, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3554:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3554:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 597, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3554:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3542:38:1" }, { "assignments": [600], "declarations": [ { "constant": false, "id": 600, "mutability": "mutable", "name": "v", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3594:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 599, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3594:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 609, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3616:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 604, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3621:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3625:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3621:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3616:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 601, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3604:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3604:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3604:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3594:34:1" }, { "expression": { "argumentTypes": null, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 610, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "3642:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "hexValue": "3237", "id": 611, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3647:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_27_by_1", "typeString": "int_const 27" }, "value": "27" }, "src": "3642:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 613, "nodeType": "ExpressionStatement", "src": "3642:7:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 616, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "3681:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 617, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "3687:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 618, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 578, "src": "3690:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 619, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 589, "src": "3693:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 615, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -6, "src": "3671:9:1", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3671:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 621, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3699:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 622, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 368, "src": "3699:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 624, "indexExpression": { "argumentTypes": null, "id": 623, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "3717:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3699:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3671:52:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141207369676e617475726520696e76616c6964", "id": 626, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3725:23:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" }, "value": "VAA signature invalid" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" } ], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3663:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3663:86:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 628, "nodeType": "ExpressionStatement", "src": "3663:86:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 560, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3404:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 561, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3408:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3404:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 630, "initializationExpression": { "assignments": [557], "declarations": [ { "constant": false, "id": 557, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 630, "src": "3392:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 556, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3392:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 559, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3401:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "3392:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3421:3:1", "subExpression": { "argumentTypes": null, "id": 563, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3421:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 565, "nodeType": "ExpressionStatement", "src": "3421:3:1" }, "nodeType": "ForStatement", "src": "3387:373:1" }, { "assignments": [632], "declarations": [ { "constant": false, "id": 632, "mutability": "mutable", "name": "action", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3770:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 631, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3770:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 639, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 635, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3797:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3806:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3797:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 633, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3785:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3785:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3785:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3770:38:1" }, { "assignments": [641], "declarations": [ { "constant": false, "id": 641, "mutability": "mutable", "name": "payload", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3818:20:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 640, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3818:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 655, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 644, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3851:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3860:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3851:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 647, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3863:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3863:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 649, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3877:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3886:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3877:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 652, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3876:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3863:25:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 642, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3841:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "3841:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3841:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "3818:71:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 656, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "3927:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783031", "id": 657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3937:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x01" }, "src": "3927:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 671, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "4135:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783130", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4145:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16" }, "value": "0x10" }, "src": "4135:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 683, "nodeType": "Block", "src": "4202:53:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "696e76616c69642056414120616374696f6e", "id": 680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4223:20:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" }, "value": "invalid VAA action" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" } ], "id": 679, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "4216:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4216:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 682, "nodeType": "ExpressionStatement", "src": "4216:28:1" } ] }, "id": 684, "nodeType": "IfStatement", "src": "4131:124:1", "trueBody": { "id": 678, "nodeType": "Block", "src": "4151:45:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 675, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4177:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 674, "name": "vaaTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "4165:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 676, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 677, "nodeType": "ExpressionStatement", "src": "4165:20:1" } ] } }, "id": 685, "nodeType": "IfStatement", "src": "3923:332:1", "trueBody": { "id": 670, "nodeType": "Block", "src": "3943:182:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 660, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "3965:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 661, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "3991:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "3965:44:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", "id": 663, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4011:59:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" }, "value": "only the current guardian set can change the guardian set" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" } ], "id": 659, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3957:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3957:114:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 665, "nodeType": "ExpressionStatement", "src": "3957:114:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 667, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4106:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 666, "name": "vaaUpdateGuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4085:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4085:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 669, "nodeType": "ExpressionStatement", "src": "4085:29:1" } ] } }, { "expression": { "argumentTypes": null, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 686, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "4300:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 688, "indexExpression": { "argumentTypes": null, "id": 687, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "4313:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4300:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4321:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4300:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 691, "nodeType": "ExpressionStatement", "src": "4300:25:1" } ] }, "documentation": null, "functionSelector": "3bc0aee6", "id": 693, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 460, "modifierName": { "argumentTypes": null, "id": 459, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "2518:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2518:12:1" } ], "name": "submitVAA", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 458, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 457, "mutability": "mutable", "name": "vaa", "nodeType": "VariableDeclaration", "overrides": null, "scope": 693, "src": "2486:18:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 456, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2486:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "2476:34:1" }, "returnParameters": { "id": 461, "nodeType": "ParameterList", "parameters": [], "src": "2531:0:1" }, "scope": 1254, "src": "2458:1874:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 791, "nodeType": "Block", "src": "4395:755:1", "statements": [ { "assignments": [699], "declarations": [ { "constant": false, "id": 699, "mutability": "mutable", "name": "new_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4405:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 698, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4405:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 704, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4451:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 700, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4437:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "4437:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4437:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4405:48:1" }, { "assignments": [706], "declarations": [ { "constant": false, "id": 706, "mutability": "mutable", "name": "len", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4463:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 705, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4463:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 711, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4488:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 707, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4475:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "4475:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4475:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "4463:27:1" }, { "assignments": [716], "declarations": [ { "constant": false, "id": 716, "mutability": "mutable", "name": "new_guardians", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4501:30:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 714, "name": "address", "nodeType": "ElementaryTypeName", "src": "4501:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 715, "length": null, "nodeType": "ArrayTypeName", "src": "4501:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 722, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 720, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 706, "src": "4548:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4534:13:1", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 717, "name": "address", "nodeType": "ElementaryTypeName", "src": "4538:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 718, "length": null, "nodeType": "ArrayTypeName", "src": "4538:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4534:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4501:51:1" }, { "body": { "id": 750, "nodeType": "Block", "src": "4593:103:1", "statements": [ { "assignments": [734], "declarations": [ { "constant": false, "id": 734, "mutability": "mutable", "name": "addr", "nodeType": "VariableDeclaration", "overrides": null, "scope": 750, "src": "4607:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 733, "name": "address", "nodeType": "ElementaryTypeName", "src": "4607:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 743, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "35", "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4637:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 738, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4641:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3230", "id": 739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4645:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "src": "4641:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4637:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 735, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4622:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "4622:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4622:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4607:41:1" }, { "expression": { "argumentTypes": null, "id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 744, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 716, "src": "4662:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 746, "indexExpression": { "argumentTypes": null, "id": 745, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4676:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4662:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 747, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 734, "src": "4681:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4662:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 749, "nodeType": "ExpressionStatement", "src": "4662:23:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 727, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4579:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 728, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 706, "src": "4583:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4579:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 751, "initializationExpression": { "assignments": [724], "declarations": [ { "constant": false, "id": 724, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 751, "src": "4567:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 723, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4567:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 726, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4576:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4567:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4588:3:1", "subExpression": { "argumentTypes": null, "id": 730, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4588:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 732, "nodeType": "ExpressionStatement", "src": "4588:3:1" }, "nodeType": "ForStatement", "src": "4562:134:1" }, { "assignments": [753], "declarations": [ { "constant": false, "id": 753, "mutability": "mutable", "name": "old_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4706:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4706:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 755, "initialValue": { "argumentTypes": null, "id": 754, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4738:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4706:50:1" }, { "expression": { "argumentTypes": null, "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 756, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4766:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 757, "name": "new_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "4787:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4766:43:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 759, "nodeType": "ExpressionStatement", "src": "4766:43:1" }, { "assignments": [761], "declarations": [ { "constant": false, "id": 761, "mutability": "mutable", "name": "new_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4820:35:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 760, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "4820:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 766, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 763, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 716, "src": "4870:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "hexValue": "30", "id": 764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4885:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 762, "name": "GuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 371, "src": "4858:11:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", "typeString": "type(struct Wormhole.GuardianSet storage pointer)" } }, "id": 765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4858:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4820:67:1" }, { "expression": { "argumentTypes": null, "id": 771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 767, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "4897:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 769, "indexExpression": { "argumentTypes": null, "id": 768, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4911:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4897:33:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 770, "name": "new_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "4933:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "4897:52:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 772, "nodeType": "ExpressionStatement", "src": "4897:52:1" }, { "expression": { "argumentTypes": null, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 773, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "4959:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 775, "indexExpression": { "argumentTypes": null, "id": 774, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 753, "src": "4973:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4959:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 776, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "4959:53:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 779, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5022:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5022:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 778, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5015:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { "id": 777, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "5015:6:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5015:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 782, "name": "guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 403, "src": "5041:21:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "5015:47:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4959:103:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 785, "nodeType": "ExpressionStatement", "src": "4959:103:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 787, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 753, "src": "5100:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { "argumentTypes": null, "id": 788, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "5124:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 786, "name": "LogGuardianSetChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "5078:21:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", "typeString": "function (uint32,uint32)" } }, "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5078:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 790, "nodeType": "EmitStatement", "src": "5073:70:1" } ] }, "documentation": null, "id": 792, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaUpdateGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 695, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 792, "src": "4368:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 694, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4368:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "4367:19:1" }, "returnParameters": { "id": 697, "nodeType": "ParameterList", "parameters": [], "src": "4395:0:1" }, "scope": 1254, "src": "4338:812:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 926, "nodeType": "Block", "src": "5204:1399:1", "statements": [ { "assignments": [798], "declarations": [ { "constant": false, "id": 798, "mutability": "mutable", "name": "source_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5257:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 797, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5257:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 803, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5291:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 799, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5278:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5278:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5278:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5257:36:1" }, { "assignments": [805], "declarations": [ { "constant": false, "id": 805, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5304:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 804, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5304:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 810, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 808, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5338:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 806, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5325:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5325:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5325:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5304:36:1" }, { "assignments": [812], "declarations": [ { "constant": false, "id": 812, "mutability": "mutable", "name": "target_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5459:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 811, "name": "address", "nodeType": "ElementaryTypeName", "src": "5459:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 819, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" }, "id": 817, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3338", "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5499:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_38_by_1", "typeString": "int_const 38" }, "value": "38" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 816, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5504:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "5499:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } ], "expression": { "argumentTypes": null, "id": 813, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5484:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "5484:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5484:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5459:48:1" }, { "assignments": [821], "declarations": [ { "constant": false, "id": 821, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5518:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 820, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5518:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 826, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3730", "id": 824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5551:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" }, "value": "70" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" } ], "expression": { "argumentTypes": null, "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5538:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5538:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5538:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5518:36:1" }, { "assignments": [828], "declarations": [ { "constant": false, "id": 828, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5618:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 827, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5618:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 833, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313034", "id": 831, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5650:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_104_by_1", "typeString": "int_const 104" }, "value": "104" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_104_by_1", "typeString": "int_const 104" } ], "expression": { "argumentTypes": null, "id": 829, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5635:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint256", "nodeType": "MemberAccess", "referencedDeclaration": 271, "src": "5635:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint256)" } }, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5635:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5618:36:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 835, "name": "source_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "5673:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 836, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5689:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5673:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", "id": 838, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5703:40:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" }, "value": "same chain transfers are not supported" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" } ], "id": 834, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5665:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5665:79:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 840, "nodeType": "ExpressionStatement", "src": "5665:79:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 842, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5762:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 843, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "5778:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5762:24:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", "id": 845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5788:27:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" }, "value": "transfer must be incoming" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" } ], "id": 841, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5754:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5754:62:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 847, "nodeType": "ExpressionStatement", "src": "5754:62:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 848, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "5831:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 849, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "5846:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5831:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 924, "nodeType": "Block", "src": "6452:145:1", "statements": [ { "assignments": [908], "declarations": [ { "constant": false, "id": 908, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 924, "src": "6466:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 907, "name": "address", "nodeType": "ElementaryTypeName", "src": "6466:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 915, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" }, "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6505:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6510:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "6505:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } ], "expression": { "argumentTypes": null, "id": 909, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "6490:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "6490:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6490:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6466:47:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 920, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 812, "src": "6563:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 921, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "6579:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 917, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 908, "src": "6535:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 916, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "6528:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 918, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6528:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 2649, "src": "6528:34:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6528:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 923, "nodeType": "ExpressionStatement", "src": "6528:58:1" } ] }, "id": 925, "nodeType": "IfStatement", "src": "5827:770:1", "trueBody": { "id": 906, "nodeType": "Block", "src": "5856:590:1", "statements": [ { "assignments": [852], "declarations": [ { "constant": false, "id": 852, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "5870:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 851, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5870:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 857, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3731", "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5909:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" } ], "expression": { "argumentTypes": null, "id": 853, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5894:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "5894:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5894:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5870:42:1" }, { "assignments": [859], "declarations": [ { "constant": false, "id": 859, "mutability": "mutable", "name": "asset_id", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "5926:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 858, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5926:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 867, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 863, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "5972:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 864, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 852, "src": "5985:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 861, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5955:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 862, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5955:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5955:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 860, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5945:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5945:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5926:74:1" }, { "assignments": [869], "declarations": [ { "constant": false, "id": 869, "mutability": "mutable", "name": "wrapped_asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "6092:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 868, "name": "address", "nodeType": "ElementaryTypeName", "src": "6092:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 873, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 870, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "6116:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 872, "indexExpression": { "argumentTypes": null, "id": 871, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 859, "src": "6130:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6116:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6092:47:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 874, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6157:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6182:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6174:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 875, "name": "address", "nodeType": "ElementaryTypeName", "src": "6174:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 878, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6174:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6157:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 897, "nodeType": "IfStatement", "src": "6153:212:1", "trueBody": { "id": 896, "nodeType": "Block", "src": "6186:179:1", "statements": [ { "assignments": [881], "declarations": [ { "constant": false, "id": 881, "mutability": "mutable", "name": "asset_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 896, "src": "6204:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 880, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6204:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 886, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313033", "id": 884, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6240:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" }, "value": "103" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" } ], "expression": { "argumentTypes": null, "id": 882, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "6227:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "6227:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6227:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "6204:40:1" }, { "expression": { "argumentTypes": null, "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 887, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6262:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 889, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 859, "src": "6297:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 890, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6307:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 891, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 852, "src": "6320:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 892, "name": "asset_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 881, "src": "6335:14:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 888, "name": "deployWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "6278:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" } }, "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6278:72:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6262:88:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 895, "nodeType": "ExpressionStatement", "src": "6262:88:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 902, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 812, "src": "6412:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 903, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "6428:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 899, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6392:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 898, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "6379:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 900, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6379:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1349, "src": "6379:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 904, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6379:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 905, "nodeType": "ExpressionStatement", "src": "6379:56:1" } ] } } ] }, "documentation": null, "id": 927, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaTransfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 795, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 794, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5177:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 793, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5177:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "5176:19:1" }, "returnParameters": { "id": 796, "nodeType": "ParameterList", "parameters": [], "src": "5204:0:1" }, "scope": 1254, "src": "5156:1447:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 969, "nodeType": "Block", "src": "6740:808:1", "statements": [ { "assignments": [941], "declarations": [ { "constant": false, "id": 941, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 969, "src": "6918:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 940, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6918:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 946, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 944, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "6948:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 943, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6940:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 942, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6940:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 945, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6940:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "6918:49:1" }, { "AST": { "nodeType": "YulBlock", "src": "6986:348:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "7000:24:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7019:4:1", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "7013:5:1" }, "nodeType": "YulFunctionCall", "src": "7013:11:1" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "7004:5:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7044:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7051:66:1", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7037:6:1" }, "nodeType": "YulFunctionCall", "src": "7037:81:1" }, "nodeType": "YulExpressionStatement", "src": "7037:81:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7142:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7149:4:1", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7138:3:1" }, "nodeType": "YulFunctionCall", "src": "7138:16:1" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "7156:11:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7131:6:1" }, "nodeType": "YulFunctionCall", "src": "7131:37:1" }, "nodeType": "YulExpressionStatement", "src": "7131:37:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7192:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7199:4:1", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7188:3:1" }, "nodeType": "YulFunctionCall", "src": "7188:16:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7206:66:1", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7181:6:1" }, "nodeType": "YulFunctionCall", "src": "7181:92:1" }, "nodeType": "YulExpressionStatement", "src": "7181:92:1" }, { "nodeType": "YulAssignment", "src": "7286:38:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7303:1:1", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "7306:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7313:4:1", "type": "", "value": "0x37" }, { "name": "seed", "nodeType": "YulIdentifier", "src": "7319:4:1" } ], "functionName": { "name": "create2", "nodeType": "YulIdentifier", "src": "7295:7:1" }, "nodeType": "YulFunctionCall", "src": "7295:29:1" }, "variableNames": [ { "name": "asset", "nodeType": "YulIdentifier", "src": "7286:5:1" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 938, "isOffset": false, "isSlot": false, "src": "7286:5:1", "valueSize": 1 }, { "declaration": 929, "isOffset": false, "isSlot": false, "src": "7319:4:1", "valueSize": 1 }, { "declaration": 941, "isOffset": false, "isSlot": false, "src": "7156:11:1", "valueSize": 1 } ], "id": 947, "nodeType": "InlineAssembly", "src": "6977:357:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 952, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "7403:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 953, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "7416:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 954, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "7431:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 949, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7385:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 948, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "7372:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7372:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 1328, "src": "7372:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", "typeString": "function (uint8,bytes32,uint8) external" } }, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7372:68:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 956, "nodeType": "ExpressionStatement", "src": "7372:68:1" }, { "expression": { "argumentTypes": null, "id": 961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 957, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "7476:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 959, "indexExpression": { "argumentTypes": null, "id": 958, "name": "seed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "7490:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7476:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 960, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7498:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7476:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 962, "nodeType": "ExpressionStatement", "src": "7476:27:1" }, { "expression": { "argumentTypes": null, "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 963, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "7513:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 965, "indexExpression": { "argumentTypes": null, "id": 964, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7528:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7513:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7537:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "7513:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 968, "nodeType": "ExpressionStatement", "src": "7513:28:1" } ] }, "documentation": null, "id": 970, "implemented": true, "kind": "function", "modifiers": [], "name": "deployWrappedAsset", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 936, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 929, "mutability": "mutable", "name": "seed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6637:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 928, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6637:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 931, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6651:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 930, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6651:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 933, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6670:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 932, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6670:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 935, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6693:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 934, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6693:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "6636:72:1" }, "returnParameters": { "id": 939, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 938, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6726:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 937, "name": "address", "nodeType": "ElementaryTypeName", "src": "6726:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6725:15:1" }, "scope": 1254, "src": "6609:939:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 1182, "nodeType": "Block", "src": "7750:1642:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "7768:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7768:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7781:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 987, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7760:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7760:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 993, "nodeType": "ExpressionStatement", "src": "7760:44:1" }, { "assignments": [995], "declarations": [ { "constant": false, "id": 995, "mutability": "mutable", "name": "asset_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7815:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 994, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7815:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 997, "initialValue": { "argumentTypes": null, "id": 996, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "7835:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7815:28:1" }, { "assignments": [999], "declarations": [ { "constant": false, "id": 999, "mutability": "mutable", "name": "asset_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7853:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 998, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7853:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 1000, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "7853:21:1" }, { "assignments": [1002], "declarations": [ { "constant": false, "id": 1002, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7884:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1001, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7884:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 1008, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1004, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7907:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1003, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "7901:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7901:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 2113, "src": "7901:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7901:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7884:40:1" }, { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1009, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "7939:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1011, "indexExpression": { "argumentTypes": null, "id": 1010, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7954:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7939:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1162, "nodeType": "Block", "src": "8161:1086:1", "statements": [ { "assignments": [1039], "declarations": [ { "constant": false, "id": 1039, "mutability": "mutable", "name": "balanceBefore", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1162, "src": "8175:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8175:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1049, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1046, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8231:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8223:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1044, "name": "address", "nodeType": "ElementaryTypeName", "src": "8223:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8223:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1041, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8206:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1040, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8199:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8199:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 2554, "src": "8199:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8199:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8175:62:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1054, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8282:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8282:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1058, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8302:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1057, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8294:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "8294:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8294:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1060, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8309:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1051, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8258:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1050, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8251:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8251:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2674, "src": "8251:30:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8251:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1062, "nodeType": "ExpressionStatement", "src": "8251:65:1" }, { "assignments": [1064], "declarations": [ { "constant": false, "id": 1064, "mutability": "mutable", "name": "balanceAfter", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1162, "src": "8330:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8330:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1074, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1071, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8385:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1070, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8377:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1069, "name": "address", "nodeType": "ElementaryTypeName", "src": "8377:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8377:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1066, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8360:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1065, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8353:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8353:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 2554, "src": "8353:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8353:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8330:61:1" }, { "expression": { "argumentTypes": null, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1075, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8596:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1078, "name": "balanceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1039, "src": "8622:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1076, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1064, "src": "8605:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "8605:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8605:31:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8596:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "8596:40:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1082, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8711:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8722:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8711:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1130, "nodeType": "IfStatement", "src": "8707:339:1", "trueBody": { "id": 1129, "nodeType": "Block", "src": "8725:321:1", "statements": [ { "assignments": [1086], "declarations": [ { "constant": false, "id": 1086, "mutability": "mutable", "name": "original_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1129, "src": "8743:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8743:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1088, "initialValue": { "argumentTypes": null, "id": 1087, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8769:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8743:32:1" }, { "expression": { "argumentTypes": null, "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1089, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8793:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1092, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8813:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1095, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8827:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1096, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8838:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8827:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1094, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8819:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1093, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8819:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8819:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8813:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1090, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8802:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", "referencedDeclaration": 1960, "src": "8802:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8802:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8793:48:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1102, "nodeType": "ExpressionStatement", "src": "8793:48:1" }, { "condition": { "argumentTypes": null, "id": 1103, "name": "refund_dust", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 982, "src": "8864:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1124, "nodeType": "IfStatement", "src": "8860:141:1", "trueBody": { "id": 1123, "nodeType": "Block", "src": "8877:124:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1108, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8921:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8921:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1112, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8953:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1115, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8967:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8978:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8967:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1113, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8959:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8953:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1110, "name": "original_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "8933:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mod", "nodeType": "MemberAccess", "referencedDeclaration": 2005, "src": "8933:19:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8933:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1105, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8905:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1104, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "8899:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8899:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2158, "src": "8899:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 1121, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8899:83:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1122, "nodeType": "ExpressionStatement", "src": "8899:83:1" } ] } }, { "expression": { "argumentTypes": null, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1125, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "9019:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "39", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9030:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "9019:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1128, "nodeType": "ExpressionStatement", "src": "9019:12:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9085:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1138, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "9105:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1137, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "9099:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9099:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 2113, "src": "9099:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9099:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1142, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9125:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "9099:27:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9091:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9091:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9091:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9085:42:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1132, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1064, "src": "9068:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", "referencedDeclaration": 1960, "src": "9068:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9068:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1147, "name": "MAX_UINT64", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "9132:10:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "src": "9068:74:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9144:37:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", "typeString": "literal_string \"bridge balance would exceed maximum\"" }, "value": "bridge balance would exceed maximum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", "typeString": "literal_string \"bridge balance would exceed maximum\"" } ], "id": 1131, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9060:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9060:122:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1151, "nodeType": "ExpressionStatement", "src": "9060:122:1" }, { "expression": { "argumentTypes": null, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1152, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "9197:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1157, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "9229:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9221:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1155, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9221:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9221:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9213:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1153, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9213:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9213:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "9197:39:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1161, "nodeType": "ExpressionStatement", "src": "9197:39:1" } ] }, "id": 1163, "nodeType": "IfStatement", "src": "7935:1312:1", "trueBody": { "id": 1037, "nodeType": "Block", "src": "7962:193:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1016, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8001:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1017, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8001:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1018, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8013:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1013, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7989:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1012, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "7976:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", "referencedDeclaration": 1370, "src": "7976:24:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1020, "nodeType": "ExpressionStatement", "src": "7976:44:1" }, { "expression": { "argumentTypes": null, "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1021, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8034:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1023, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8061:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1022, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "8048:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8048:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetChain", "nodeType": "MemberAccess", "referencedDeclaration": 1277, "src": "8048:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8048:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "8034:46:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1028, "nodeType": "ExpressionStatement", "src": "8034:46:1" }, { "expression": { "argumentTypes": null, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1029, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "8094:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1031, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8123:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1030, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "8110:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8110:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetAddress", "nodeType": "MemberAccess", "referencedDeclaration": 1279, "src": "8110:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8110:34:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "8094:50:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1036, "nodeType": "ExpressionStatement", "src": "8094:50:1" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1165, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 978, "src": "9278:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1166, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "9292:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1167, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "9305:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1168, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "9315:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1173, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9346:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9346:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9338:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1171, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9338:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9338:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9330:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1169, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9330:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9330:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1177, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "9360:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1178, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "9371:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1179, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "9379:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1164, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "9262:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9262:123:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1181, "nodeType": "EmitStatement", "src": "9257:128:1" } ] }, "documentation": null, "functionSelector": "70713960", "id": 1183, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 985, "modifierName": { "argumentTypes": null, "id": 984, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "7737:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7737:12:1" } ], "name": "lockAssets", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 983, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 972, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7583:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 971, "name": "address", "nodeType": "ElementaryTypeName", "src": "7583:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 974, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7606:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7606:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7630:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 975, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7630:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 978, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7657:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 977, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7657:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 980, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7685:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 979, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "7685:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 982, "mutability": "mutable", "name": "refund_dust", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7707:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 981, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7707:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7573:156:1" }, "returnParameters": { "id": 986, "nodeType": "ParameterList", "parameters": [], "src": "7750:0:1" }, "scope": 1254, "src": "7554:1838:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1236, "nodeType": "Block", "src": "9526:334:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1195, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9544:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9544:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9557:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "9544:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9560:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 1194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9536:47:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1201, "nodeType": "ExpressionStatement", "src": "9536:47:1" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1203, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, "src": "9632:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1202, "name": "WETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1265, "src": "9627:4:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WETH_$1265_$", "typeString": "type(contract WETH)" } }, "id": 1204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9627:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WETH_$1265", "typeString": "contract WETH" } }, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 1259, "src": "9627:25:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1206, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9661:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9661:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "9627:44:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9627:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1210, "nodeType": "ExpressionStatement", "src": "9627:46:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1212, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "9736:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1213, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "9750:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "hexValue": "3138", "id": 1214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9760:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1219, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, "src": "9780:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1218, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9772:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9772:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9772:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9764:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1215, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9764:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9764:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1226, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9811:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9811:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9803:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1224, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9803:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9803:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9795:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1222, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9795:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9795:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1230, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1185, "src": "9825:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1231, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9836:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9836:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1233, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "9847:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1211, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "9720:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9720:133:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1235, "nodeType": "EmitStatement", "src": "9715:138:1" } ] }, "documentation": null, "functionSelector": "58d62e46", "id": 1237, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1192, "modifierName": { "argumentTypes": null, "id": 1191, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "9513:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "9513:12:1" } ], "name": "lockETH", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1190, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1185, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9424:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1184, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9424:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1187, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9451:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1186, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "9451:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1189, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9479:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 1188, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "9479:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "9414:83:1" }, "returnParameters": { "id": 1193, "nodeType": "ParameterList", "parameters": [], "src": "9526:0:1" }, "scope": 1254, "src": "9398:462:1", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 1244, "nodeType": "Block", "src": "9894:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9902:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1240, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9895:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9895:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1243, "nodeType": "ExpressionStatement", "src": "9895:54:1" } ] }, "documentation": null, "id": 1245, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1238, "nodeType": "ParameterList", "parameters": [], "src": "9874:2:1" }, "returnParameters": { "id": 1239, "nodeType": "ParameterList", "parameters": [], "src": "9894:0:1" }, "scope": 1254, "src": "9866:85:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1252, "nodeType": "Block", "src": "9984:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9992:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1248, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9985:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9985:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1251, "nodeType": "ExpressionStatement", "src": "9985:54:1" } ] }, "documentation": null, "id": 1253, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1246, "nodeType": "ParameterList", "parameters": [], "src": "9964:2:1" }, "returnParameters": { "id": 1247, "nodeType": "ParameterList", "parameters": [], "src": "9984:0:1" }, "scope": 1254, "src": "9957:84:1", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], "scope": 1266, "src": "502:9541:1" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1255, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2615, "src": "10064:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1256, "nodeType": "InheritanceSpecifier", "src": "10064:6:1" } ], "contractDependencies": [2615], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1265, "linearizedBaseContracts": [1265, 2615], "name": "WETH", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "d0e30db0", "id": 1259, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1257, "nodeType": "ParameterList", "parameters": [], "src": "10093:2:1" }, "returnParameters": { "id": 1258, "nodeType": "ParameterList", "parameters": [], "src": "10112:0:1" }, "scope": 1265, "src": "10077:36:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": null, "documentation": null, "functionSelector": "2e1a7d4d", "id": 1264, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1262, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1261, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1264, "src": "10137:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10137:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "10136:16:1" }, "returnParameters": { "id": 1263, "nodeType": "ParameterList", "parameters": [], "src": "10161:0:1" }, "scope": 1265, "src": "10119:43:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 1266, "src": "10046:118:1" } ], "src": "103:10062:1" }, "legacyAST": { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol", "exportedSymbols": { "WETH": [1265], "Wormhole": [1254] }, "id": 1266, "license": "Apache 2", "nodeType": "SourceUnit", "nodes": [ { "id": 335, "literals": ["solidity", "^", "0.6", ".0"], "nodeType": "PragmaDirective", "src": "103:23:1" }, { "id": 336, "literals": ["experimental", "ABIEncoderV2"], "nodeType": "PragmaDirective", "src": "127:33:1" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/ERC20.sol", "id": 337, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2538, "src": "162:55:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 338, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2616, "src": "218:56:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol", "id": 339, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2829, "src": "275:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 340, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 2031, "src": "335:51:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol", "id": 341, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 3073, "src": "387:59:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol", "file": "./BytesLib.sol", "id": 342, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 334, "src": "447:24:1", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol", "file": "./WrappedAsset.sol", "id": 343, "nodeType": "ImportDirective", "scope": 1266, "sourceUnit": 1812, "src": "472:28:1", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 344, "name": "ReentrancyGuard", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 3072, "src": "523:15:1", "typeDescriptions": { "typeIdentifier": "t_contract$_ReentrancyGuard_$3072", "typeString": "contract ReentrancyGuard" } }, "id": 345, "nodeType": "InheritanceSpecifier", "src": "523:15:1" } ], "contractDependencies": [3072], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 1254, "linearizedBaseContracts": [1254, 3072], "name": "Wormhole", "nodeType": "ContractDefinition", "nodes": [ { "id": 348, "libraryName": { "contractScope": null, "id": 346, "name": "SafeERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2828, "src": "551:9:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeERC20_$2828", "typeString": "library SafeERC20" } }, "nodeType": "UsingForDirective", "src": "545:27:1", "typeName": { "contractScope": null, "id": 347, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2615, "src": "565:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } } }, { "id": 351, "libraryName": { "contractScope": null, "id": 349, "name": "BytesLib", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 333, "src": "583:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_BytesLib_$333", "typeString": "library BytesLib" } }, "nodeType": "UsingForDirective", "src": "577:25:1", "typeName": { "id": 350, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "596:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } } }, { "id": 354, "libraryName": { "contractScope": null, "id": 352, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2030, "src": "613:8:1", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$2030", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "607:27:1", "typeName": { "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": true, "id": 357, "mutability": "constant", "name": "MAX_UINT64", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "640:55:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" }, "typeName": { "id": 355, "name": "uint64", "nodeType": "ElementaryTypeName", "src": "640:6:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "value": { "argumentTypes": null, "hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135", "id": 356, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "669:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18446744073709551615_by_1", "typeString": "int_const 18446744073709551615" }, "value": "18_446_744_073_709_551_615" }, "visibility": "internal" }, { "constant": false, "functionSelector": "99da1d3c", "id": 359, "mutability": "mutable", "name": "wrappedAssetMaster", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "747:33:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 358, "name": "address", "nodeType": "ElementaryTypeName", "src": "747:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 362, "mutability": "mutable", "name": "CHAIN_ID", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "815:18:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 360, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "815:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": { "argumentTypes": null, "hexValue": "32", "id": 361, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "832:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", "typeString": "int_const 2" }, "value": "2" }, "visibility": "internal" }, { "constant": true, "id": 365, "mutability": "constant", "name": "WETHAddress", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "885:73:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 363, "name": "address", "nodeType": "ElementaryTypeName", "src": "885:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "argumentTypes": null, "hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332", "id": 364, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "916:42:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2" }, "visibility": "internal" }, { "canonicalName": "Wormhole.GuardianSet", "id": 371, "members": [ { "constant": false, "id": 368, "mutability": "mutable", "name": "keys", "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, "src": "994:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 366, "name": "address", "nodeType": "ElementaryTypeName", "src": "994:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 367, "length": null, "nodeType": "ArrayTypeName", "src": "994:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 370, "mutability": "mutable", "name": "expiration_time", "nodeType": "VariableDeclaration", "overrides": null, "scope": 371, "src": "1018:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 369, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1018:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "name": "GuardianSet", "nodeType": "StructDefinition", "scope": 1254, "src": "965:82:1", "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 377, "name": "LogGuardianSetChanged", "nodeType": "EventDefinition", "parameters": { "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 373, "indexed": false, "mutability": "mutable", "name": "oldGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, "src": "1090:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 372, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1090:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 375, "indexed": false, "mutability": "mutable", "name": "newGuardianIndex", "nodeType": "VariableDeclaration", "overrides": null, "scope": 377, "src": "1123:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 374, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1123:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1080:72:1" }, "src": "1053:100:1" }, { "anonymous": false, "documentation": null, "id": 395, "name": "LogTokensLocked", "nodeType": "EventDefinition", "parameters": { "id": 394, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 379, "indexed": false, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1190:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 378, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1190:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 381, "indexed": false, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1218:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 380, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1218:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 383, "indexed": false, "mutability": "mutable", "name": "token_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1245:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 382, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1245:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 385, "indexed": true, "mutability": "mutable", "name": "token", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1275:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 384, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1275:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 387, "indexed": true, "mutability": "mutable", "name": "sender", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1306:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 386, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1306:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 389, "indexed": false, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1338:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 388, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1338:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 391, "indexed": false, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1365:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 390, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1365:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 393, "indexed": false, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 395, "src": "1389:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 392, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1389:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1180:227:1" }, "src": "1159:249:1" }, { "constant": false, "functionSelector": "42b0aefa", "id": 399, "mutability": "mutable", "name": "guardian_sets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1467:51:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "typeName": { "id": 398, "keyType": { "id": 396, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1475:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Mapping", "src": "1467:30:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet)" }, "valueType": { "contractScope": null, "id": 397, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "1485:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "822d82b3", "id": 401, "mutability": "mutable", "name": "guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1559:32:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 400, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1559:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "4db47840", "id": 403, "mutability": "mutable", "name": "guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1677:35:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 402, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "1677:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "a31fe409", "id": 407, "mutability": "mutable", "name": "consumedVAAs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1758:44:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "typeName": { "id": 406, "keyType": { "id": 404, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1766:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1758:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { "id": 405, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1777:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "b6694c2a", "id": 411, "mutability": "mutable", "name": "wrappedAssets", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1857:48:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "typeName": { "id": 410, "keyType": { "id": 408, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1865:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", "src": "1857:27:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" }, "valueType": { "id": 409, "name": "address", "nodeType": "ElementaryTypeName", "src": "1876:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } }, "value": null, "visibility": "public" }, { "constant": false, "functionSelector": "1a2be4da", "id": 415, "mutability": "mutable", "name": "isWrappedAsset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1254, "src": "1911:46:1", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "typeName": { "id": 414, "keyType": { "id": 412, "name": "address", "nodeType": "ElementaryTypeName", "src": "1919:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "1911:24:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1930:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } }, "value": null, "visibility": "public" }, { "body": { "id": 442, "nodeType": "Block", "src": "2085:239:1", "statements": [ { "expression": { "argumentTypes": null, "id": 428, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 424, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2095:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 426, "indexExpression": { "argumentTypes": null, "hexValue": "30", "id": 425, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2109:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "2095:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 427, "name": "initial_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 417, "src": "2114:20:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "2095:39:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 429, "nodeType": "ExpressionStatement", "src": "2095:39:1" }, { "expression": { "argumentTypes": null, "id": 432, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 430, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "2187:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 431, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2208:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "2187:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 433, "nodeType": "ExpressionStatement", "src": "2187:22:1" }, { "expression": { "argumentTypes": null, "id": 436, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 434, "name": "guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 403, "src": "2219:21:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 435, "name": "_guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 421, "src": "2243:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "2219:46:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 437, "nodeType": "ExpressionStatement", "src": "2219:46:1" }, { "expression": { "argumentTypes": null, "id": 440, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 438, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "2276:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 439, "name": "wrapped_asset_master", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 419, "src": "2297:20:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "2276:41:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 441, "nodeType": "ExpressionStatement", "src": "2276:41:1" } ] }, "documentation": null, "id": 443, "implemented": true, "kind": "constructor", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 422, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 417, "mutability": "mutable", "name": "initial_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "1976:39:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 416, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "1976:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 419, "mutability": "mutable", "name": "wrapped_asset_master", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "2017:28:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 418, "name": "address", "nodeType": "ElementaryTypeName", "src": "2017:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 421, "mutability": "mutable", "name": "_guardian_set_expirity", "nodeType": "VariableDeclaration", "overrides": null, "scope": 443, "src": "2047:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 420, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2047:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "1975:102:1" }, "returnParameters": { "id": 423, "nodeType": "ParameterList", "parameters": [], "src": "2085:0:1" }, "scope": 1254, "src": "1964:360:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 454, "nodeType": "Block", "src": "2410:42:1", "statements": [ { "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 450, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "2427:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 452, "indexExpression": { "argumentTypes": null, "id": 451, "name": "idx", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 445, "src": "2441:3:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "2427:18:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "functionReturnParameters": 449, "id": 453, "nodeType": "Return", "src": "2420:25:1" } ] }, "documentation": null, "functionSelector": "f951975a", "id": 455, "implemented": true, "kind": "function", "modifiers": [], "name": "getGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 446, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 445, "mutability": "mutable", "name": "idx", "nodeType": "VariableDeclaration", "overrides": null, "scope": 455, "src": "2354:10:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 444, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2354:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "2353:12:1" }, "returnParameters": { "id": 449, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 448, "mutability": "mutable", "name": "gs", "nodeType": "VariableDeclaration", "overrides": null, "scope": 455, "src": "2387:21:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 447, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "2387:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "src": "2386:23:1" }, "scope": 1254, "src": "2330:122:1", "stateMutability": "view", "virtual": false, "visibility": "public" }, { "body": { "id": 692, "nodeType": "Block", "src": "2531:1801:1", "statements": [ { "assignments": [463], "declarations": [ { "constant": false, "id": 463, "mutability": "mutable", "name": "version", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2541:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 462, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "2541:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 468, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 466, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2569:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 464, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2557:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 465, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2557:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 467, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2557:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2541:30:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 472, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 470, "name": "version", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 463, "src": "2589:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 471, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2600:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "2589:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412076657273696f6e20696e636f6d70617469626c65", "id": 473, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "2603:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" }, "value": "VAA version incompatible" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_6f94df49f756ee0c4605e9c5793f0e851f28a084ddaba07c34c32ea93810236a", "typeString": "literal_string \"VAA version incompatible\"" } ], "id": 469, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "2581:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 474, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2581:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 475, "nodeType": "ExpressionStatement", "src": "2581:49:1" }, { "assignments": [477], "declarations": [ { "constant": false, "id": 477, "mutability": "mutable", "name": "vaa_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2687:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 476, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "2687:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 482, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "31", "id": 480, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2732:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" } ], "expression": { "argumentTypes": null, "id": 478, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2719:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 479, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "2719:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 481, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2719:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "2687:47:1" }, { "assignments": [484], "declarations": [ { "constant": false, "id": 484, "mutability": "mutable", "name": "len_signers", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2745:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 483, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2745:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 489, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 487, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2779:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 485, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2767:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 486, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "2767:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 488, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2767:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "2745:36:1" }, { "assignments": [491], "declarations": [ { "constant": false, "id": 491, "mutability": "mutable", "name": "offset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2791:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 490, "name": "uint", "nodeType": "ElementaryTypeName", "src": "2791:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 497, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 496, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 492, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2805:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 495, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3636", "id": 493, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "2809:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "id": 494, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "2814:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2809:16:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2805:20:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "2791:34:1" }, { "assignments": [499], "declarations": [ { "constant": false, "id": 499, "mutability": "mutable", "name": "hash", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "2947:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 498, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "2947:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 510, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 503, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "2982:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 507, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 504, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2990:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "2990:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "id": 506, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3003:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "2990:19:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 501, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "2972:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 502, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "2972:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 508, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2972:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 500, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "2962:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 509, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "2962:49:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "2947:64:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 515, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "!", "prefix": true, "src": "3029:19:1", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 512, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "3030:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 514, "indexExpression": { "argumentTypes": null, "id": 513, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "3043:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3030:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "5641412077617320616c7265616479206578656375746564", "id": 516, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3050:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" }, "value": "VAA was already executed" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_2c9f12104d534b328038b37a96c0a685f6c00604447c9f6b300f1a21a9a56028", "typeString": "literal_string \"VAA was already executed\"" } ], "id": 511, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3021:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 517, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3021:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 518, "nodeType": "ExpressionStatement", "src": "3021:56:1" }, { "assignments": [520], "declarations": [ { "constant": false, "id": 520, "mutability": "mutable", "name": "guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3088:31:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 519, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "3088:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 524, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 521, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "3122:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 523, "indexExpression": { "argumentTypes": null, "id": 522, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "3136:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3122:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "VariableDeclarationStatement", "src": "3088:71:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_bool", "typeString": "bool" }, "id": 535, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 526, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3177:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 527, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "3177:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 528, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3209:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "3177:33:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "BinaryOperation", "operator": "||", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 530, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3214:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 531, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "3214:28:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 532, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "3245:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 533, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3245:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3214:46:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "src": "3177:83:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "677561726469616e20736574206861732065787069726564", "id": 536, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3262:26:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" }, "value": "guardian set has expired" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbe80c778d9be5c7f6d0de415ae854de0cf9a58da1d3e65a9d672ad42a10aaf1", "typeString": "literal_string \"guardian set has expired\"" } ], "id": 525, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3169:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 537, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3169:120:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 538, "nodeType": "ExpressionStatement", "src": "3169:120:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 552, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 550, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 544, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 540, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3309:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 541, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 368, "src": "3309:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 542, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3309:24:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "/", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 543, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3336:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3309:28:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 545, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3308:30:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "33", "id": 546, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3341:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_3_by_1", "typeString": "int_const 3" }, "value": "3" }, "src": "3308:34:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 548, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3307:36:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "31", "id": 549, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3346:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "1" }, "src": "3307:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 551, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3351:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3307:55:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6e6f2071756f72756d", "id": 553, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3364:11:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" }, "value": "no quorum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_b18d2210a58b70fe2b7fd0e0f29d90614b1c4f3f5d8dbb518559998f90306fcb", "typeString": "literal_string \"no quorum\"" } ], "id": 539, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3299:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 554, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3299:77:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 555, "nodeType": "ExpressionStatement", "src": "3299:77:1" }, { "body": { "id": 629, "nodeType": "Block", "src": "3426:334:1", "statements": [ { "assignments": [567], "declarations": [ { "constant": false, "id": 567, "mutability": "mutable", "name": "index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3440:11:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 566, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3440:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 576, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 574, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "36", "id": 570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3466:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_6_by_1", "typeString": "int_const 6" }, "value": "6" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 573, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 571, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3470:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 572, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3474:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3470:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3466:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 568, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3454:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 569, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3454:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 575, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3454:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3440:37:1" }, { "assignments": [578], "declarations": [ { "constant": false, "id": 578, "mutability": "mutable", "name": "r", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3491:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 577, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3491:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 587, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 585, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "37", "id": 581, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3517:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_7_by_1", "typeString": "int_const 7" }, "value": "7" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 584, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 582, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3521:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 583, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3525:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3521:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3517:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 579, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3503:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3503:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 586, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3503:25:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3491:37:1" }, { "assignments": [589], "declarations": [ { "constant": false, "id": 589, "mutability": "mutable", "name": "s", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3542:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 588, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "3542:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 598, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 596, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3339", "id": 592, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3568:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_39_by_1", "typeString": "int_const 39" }, "value": "39" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 593, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3573:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 594, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3577:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3573:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3568:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 590, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3554:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 591, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "3554:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 597, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3554:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "3542:38:1" }, { "assignments": [600], "declarations": [ { "constant": false, "id": 600, "mutability": "mutable", "name": "v", "nodeType": "VariableDeclaration", "overrides": null, "scope": 629, "src": "3594:7:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 599, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3594:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 609, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 607, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 603, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3616:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 606, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 604, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3621:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3636", "id": 605, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3625:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_66_by_1", "typeString": "int_const 66" }, "value": "66" }, "src": "3621:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3616:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 601, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3604:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 602, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3604:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 608, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3604:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3594:34:1" }, { "expression": { "argumentTypes": null, "id": 612, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 610, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "3642:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "+=", "rightHandSide": { "argumentTypes": null, "hexValue": "3237", "id": 611, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3647:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_27_by_1", "typeString": "int_const 27" }, "value": "27" }, "src": "3642:7:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 613, "nodeType": "ExpressionStatement", "src": "3642:7:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 625, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 616, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "3681:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 617, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 600, "src": "3687:1:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 618, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 578, "src": "3690:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 619, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 589, "src": "3693:1:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "id": 615, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -6, "src": "3671:9:1", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, "id": 620, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3671:24:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 621, "name": "guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 520, "src": "3699:12:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "id": 622, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "keys", "nodeType": "MemberAccess", "referencedDeclaration": 368, "src": "3699:17:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 624, "indexExpression": { "argumentTypes": null, "id": 623, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 567, "src": "3717:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "3699:24:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "3671:52:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "564141207369676e617475726520696e76616c6964", "id": 626, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "3725:23:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" }, "value": "VAA signature invalid" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_862afa71aa5d7cd3e53f61178438850df5cce8f1009ff0681521493b85052621", "typeString": "literal_string \"VAA signature invalid\"" } ], "id": 614, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3663:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 627, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3663:86:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 628, "nodeType": "ExpressionStatement", "src": "3663:86:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 562, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 560, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3404:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 561, "name": "len_signers", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 484, "src": "3408:11:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3404:15:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 630, "initializationExpression": { "assignments": [557], "declarations": [ { "constant": false, "id": 557, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 630, "src": "3392:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 556, "name": "uint", "nodeType": "ElementaryTypeName", "src": "3392:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 559, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 558, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3401:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "3392:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 564, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "3421:3:1", "subExpression": { "argumentTypes": null, "id": 563, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 557, "src": "3421:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 565, "nodeType": "ExpressionStatement", "src": "3421:3:1" }, "nodeType": "ForStatement", "src": "3387:373:1" }, { "assignments": [632], "declarations": [ { "constant": false, "id": 632, "mutability": "mutable", "name": "action", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3770:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 631, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "3770:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 639, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 635, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3797:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "34", "id": 636, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3806:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" }, "src": "3797:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 633, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3785:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 634, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "3785:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 638, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3785:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "3770:38:1" }, { "assignments": [641], "declarations": [ { "constant": false, "id": 641, "mutability": "mutable", "name": "payload", "nodeType": "VariableDeclaration", "overrides": null, "scope": 692, "src": "3818:20:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 640, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "3818:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "id": 655, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 646, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 644, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3851:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 645, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3860:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3851:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 653, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 647, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3863:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "3863:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "components": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 651, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 649, "name": "offset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 491, "src": "3877:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "35", "id": 650, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3886:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "src": "3877:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "id": 652, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", "src": "3876:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "3863:25:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 642, "name": "vaa", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 457, "src": "3841:3:1", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes calldata" } }, "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "slice", "nodeType": "MemberAccess", "referencedDeclaration": 55, "src": "3841:9:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256,uint256) pure returns (bytes memory)" } }, "id": 654, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3841:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", "src": "3818:71:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 656, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "3927:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783031", "id": 657, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "3937:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", "typeString": "int_const 1" }, "value": "0x01" }, "src": "3927:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 671, "name": "action", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 632, "src": "4135:6:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "hexValue": "30783130", "id": 672, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4145:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_16_by_1", "typeString": "int_const 16" }, "value": "0x10" }, "src": "4135:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 683, "nodeType": "Block", "src": "4202:53:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "696e76616c69642056414120616374696f6e", "id": 680, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4223:20:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" }, "value": "invalid VAA action" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_27b2ea60c72d322d8c69062a768962688555c44551176a8b0389f506128d4a66", "typeString": "literal_string \"invalid VAA action\"" } ], "id": 679, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "4216:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 681, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4216:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 682, "nodeType": "ExpressionStatement", "src": "4216:28:1" } ] }, "id": 684, "nodeType": "IfStatement", "src": "4131:124:1", "trueBody": { "id": 678, "nodeType": "Block", "src": "4151:45:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 675, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4177:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 674, "name": "vaaTransfer", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 927, "src": "4165:11:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 676, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4165:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 677, "nodeType": "ExpressionStatement", "src": "4165:20:1" } ] } }, "id": 685, "nodeType": "IfStatement", "src": "3923:332:1", "trueBody": { "id": 670, "nodeType": "Block", "src": "3943:182:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 662, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 660, "name": "vaa_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 477, "src": "3965:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 661, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "3991:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "3965:44:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574", "id": 663, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "4011:59:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" }, "value": "only the current guardian set can change the guardian set" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_57f82f54015302e10ddc5f5b0f8eebea6891c2be815aa07f38e9301457bc8c6a", "typeString": "literal_string \"only the current guardian set can change the guardian set\"" } ], "id": 659, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "3957:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 664, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "3957:114:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 665, "nodeType": "ExpressionStatement", "src": "3957:114:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 667, "name": "payload", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 641, "src": "4106:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 666, "name": "vaaUpdateGuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 792, "src": "4085:20:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (bytes memory)" } }, "id": 668, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4085:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 669, "nodeType": "ExpressionStatement", "src": "4085:29:1" } ] } }, { "expression": { "argumentTypes": null, "id": 690, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 686, "name": "consumedVAAs", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 407, "src": "4300:12:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, "id": 688, "indexExpression": { "argumentTypes": null, "id": 687, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 499, "src": "4313:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4300:18:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 689, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "4321:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "4300:25:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 691, "nodeType": "ExpressionStatement", "src": "4300:25:1" } ] }, "documentation": null, "functionSelector": "3bc0aee6", "id": 693, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 460, "modifierName": { "argumentTypes": null, "id": 459, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "2518:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "2518:12:1" } ], "name": "submitVAA", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 458, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 457, "mutability": "mutable", "name": "vaa", "nodeType": "VariableDeclaration", "overrides": null, "scope": 693, "src": "2486:18:1", "stateVariable": false, "storageLocation": "calldata", "typeDescriptions": { "typeIdentifier": "t_bytes_calldata_ptr", "typeString": "bytes" }, "typeName": { "id": 456, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "2486:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "2476:34:1" }, "returnParameters": { "id": 461, "nodeType": "ParameterList", "parameters": [], "src": "2531:0:1" }, "scope": 1254, "src": "2458:1874:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 791, "nodeType": "Block", "src": "4395:755:1", "statements": [ { "assignments": [699], "declarations": [ { "constant": false, "id": 699, "mutability": "mutable", "name": "new_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4405:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 698, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4405:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 704, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 702, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4451:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "expression": { "argumentTypes": null, "id": 700, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4437:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 701, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint32", "nodeType": "MemberAccess", "referencedDeclaration": 163, "src": "4437:13:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint32)" } }, "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4437:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4405:48:1" }, { "assignments": [706], "declarations": [ { "constant": false, "id": 706, "mutability": "mutable", "name": "len", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4463:9:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 705, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "4463:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 711, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 709, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4488:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 707, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4475:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 708, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "4475:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 710, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4475:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "4463:27:1" }, { "assignments": [716], "declarations": [ { "constant": false, "id": 716, "mutability": "mutable", "name": "new_guardians", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4501:30:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[]" }, "typeName": { "baseType": { "id": 714, "name": "address", "nodeType": "ElementaryTypeName", "src": "4501:7:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 715, "length": null, "nodeType": "ArrayTypeName", "src": "4501:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } }, "value": null, "visibility": "internal" } ], "id": 722, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 720, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 706, "src": "4548:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 719, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", "src": "4534:13:1", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { "id": 717, "name": "address", "nodeType": "ElementaryTypeName", "src": "4538:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 718, "length": null, "nodeType": "ArrayTypeName", "src": "4538:9:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, "id": 721, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4534:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4501:51:1" }, { "body": { "id": 750, "nodeType": "Block", "src": "4593:103:1", "statements": [ { "assignments": [734], "declarations": [ { "constant": false, "id": 734, "mutability": "mutable", "name": "addr", "nodeType": "VariableDeclaration", "overrides": null, "scope": 750, "src": "4607:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 733, "name": "address", "nodeType": "ElementaryTypeName", "src": "4607:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 743, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 741, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "35", "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4637:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 740, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 738, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4641:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "*", "rightExpression": { "argumentTypes": null, "hexValue": "3230", "id": 739, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4645:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_20_by_1", "typeString": "int_const 20" }, "value": "20" }, "src": "4641:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "4637:10:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 735, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 695, "src": "4622:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 736, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "4622:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 742, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4622:26:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "4607:41:1" }, { "expression": { "argumentTypes": null, "id": 748, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 744, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 716, "src": "4662:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, "id": 746, "indexExpression": { "argumentTypes": null, "id": 745, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4676:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4662:16:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 747, "name": "addr", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 734, "src": "4681:4:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "4662:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 749, "nodeType": "ExpressionStatement", "src": "4662:23:1" } ] }, "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 729, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 727, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4579:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<", "rightExpression": { "argumentTypes": null, "id": 728, "name": "len", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 706, "src": "4583:3:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "4579:7:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 751, "initializationExpression": { "assignments": [724], "declarations": [ { "constant": false, "id": 724, "mutability": "mutable", "name": "i", "nodeType": "VariableDeclaration", "overrides": null, "scope": 751, "src": "4567:6:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 723, "name": "uint", "nodeType": "ElementaryTypeName", "src": "4567:4:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 726, "initialValue": { "argumentTypes": null, "hexValue": "30", "id": 725, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4576:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "nodeType": "VariableDeclarationStatement", "src": "4567:10:1" }, "loopExpression": { "expression": { "argumentTypes": null, "id": 731, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "UnaryOperation", "operator": "++", "prefix": false, "src": "4588:3:1", "subExpression": { "argumentTypes": null, "id": 730, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 724, "src": "4588:1:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 732, "nodeType": "ExpressionStatement", "src": "4588:3:1" }, "nodeType": "ForStatement", "src": "4562:134:1" }, { "assignments": [753], "declarations": [ { "constant": false, "id": 753, "mutability": "mutable", "name": "old_guardian_set_index", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4706:29:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 752, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "4706:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "id": 755, "initialValue": { "argumentTypes": null, "id": 754, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4738:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "VariableDeclarationStatement", "src": "4706:50:1" }, { "expression": { "argumentTypes": null, "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 756, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4766:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 757, "name": "new_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 699, "src": "4787:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4766:43:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 759, "nodeType": "ExpressionStatement", "src": "4766:43:1" }, { "assignments": [761], "declarations": [ { "constant": false, "id": 761, "mutability": "mutable", "name": "new_guardian_set", "nodeType": "VariableDeclaration", "overrides": null, "scope": 791, "src": "4820:35:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet" }, "typeName": { "contractScope": null, "id": 760, "name": "GuardianSet", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 371, "src": "4820:11:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr", "typeString": "struct Wormhole.GuardianSet" } }, "value": null, "visibility": "internal" } ], "id": 766, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 763, "name": "new_guardians", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 716, "src": "4870:13:1", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, { "argumentTypes": null, "hexValue": "30", "id": 764, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "4885:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" }, { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 762, "name": "GuardianSet", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 371, "src": "4858:11:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$", "typeString": "type(struct Wormhole.GuardianSet storage pointer)" } }, "id": 765, "isConstant": false, "isLValue": false, "isPure": false, "kind": "structConstructorCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "4858:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "nodeType": "VariableDeclarationStatement", "src": "4820:67:1" }, { "expression": { "argumentTypes": null, "id": 771, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 767, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "4897:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 769, "indexExpression": { "argumentTypes": null, "id": 768, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "4911:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "4897:33:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 770, "name": "new_guardian_set", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 761, "src": "4933:16:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr", "typeString": "struct Wormhole.GuardianSet memory" } }, "src": "4897:52:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 772, "nodeType": "ExpressionStatement", "src": "4897:52:1" }, { "expression": { "argumentTypes": null, "id": 784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 773, "name": "guardian_sets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 399, "src": "4959:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$", "typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)" } }, "id": 775, "indexExpression": { "argumentTypes": null, "id": 774, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 753, "src": "4973:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "4959:37:1", "typeDescriptions": { "typeIdentifier": "t_struct$_GuardianSet_$371_storage", "typeString": "struct Wormhole.GuardianSet storage ref" } }, "id": 776, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "expiration_time", "nodeType": "MemberAccess", "referencedDeclaration": 370, "src": "4959:53:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "id": 783, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 779, "name": "block", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -4, "src": "5022:5:1", "typeDescriptions": { "typeIdentifier": "t_magic_block", "typeString": "block" } }, "id": 780, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "timestamp", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5022:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 778, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "5015:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint32_$", "typeString": "type(uint32)" }, "typeName": { "id": 777, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "5015:6:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 781, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5015:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "id": 782, "name": "guardian_set_expirity", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 403, "src": "5041:21:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "5015:47:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "src": "4959:103:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "id": 785, "nodeType": "ExpressionStatement", "src": "4959:103:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 787, "name": "old_guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 753, "src": "5100:22:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, { "argumentTypes": null, "id": 788, "name": "guardian_set_index", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 401, "src": "5124:18:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint32", "typeString": "uint32" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 786, "name": "LogGuardianSetChanged", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 377, "src": "5078:21:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$", "typeString": "function (uint32,uint32)" } }, "id": 789, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5078:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 790, "nodeType": "EmitStatement", "src": "5073:70:1" } ] }, "documentation": null, "id": 792, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaUpdateGuardianSet", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 696, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 695, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 792, "src": "4368:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 694, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "4368:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "4367:19:1" }, "returnParameters": { "id": 697, "nodeType": "ParameterList", "parameters": [], "src": "4395:0:1" }, "scope": 1254, "src": "4338:812:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 926, "nodeType": "Block", "src": "5204:1399:1", "statements": [ { "assignments": [798], "declarations": [ { "constant": false, "id": 798, "mutability": "mutable", "name": "source_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5257:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 797, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5257:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 803, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "34", "id": 801, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5291:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" }, "value": "4" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_4_by_1", "typeString": "int_const 4" } ], "expression": { "argumentTypes": null, "id": 799, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5278:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5278:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 802, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5278:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5257:36:1" }, { "assignments": [805], "declarations": [ { "constant": false, "id": 805, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5304:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 804, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5304:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 810, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "35", "id": 808, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5338:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" }, "value": "5" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_5_by_1", "typeString": "int_const 5" } ], "expression": { "argumentTypes": null, "id": 806, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5325:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 807, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5325:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 809, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5325:15:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5304:36:1" }, { "assignments": [812], "declarations": [ { "constant": false, "id": 812, "mutability": "mutable", "name": "target_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5459:22:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 811, "name": "address", "nodeType": "ElementaryTypeName", "src": "5459:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 819, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" }, "id": 817, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3338", "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5499:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_38_by_1", "typeString": "int_const 38" }, "value": "38" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 816, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5504:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "5499:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_50_by_1", "typeString": "int_const 50" } ], "expression": { "argumentTypes": null, "id": 813, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5484:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 814, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "5484:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 818, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5484:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "5459:48:1" }, { "assignments": [821], "declarations": [ { "constant": false, "id": 821, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5518:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 820, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "5518:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 826, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3730", "id": 824, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5551:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" }, "value": "70" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_70_by_1", "typeString": "int_const 70" } ], "expression": { "argumentTypes": null, "id": 822, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5538:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 823, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "5538:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 825, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5538:16:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "5518:36:1" }, { "assignments": [828], "declarations": [ { "constant": false, "id": 828, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 926, "src": "5618:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 827, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "5618:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 833, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313034", "id": 831, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5650:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_104_by_1", "typeString": "int_const 104" }, "value": "104" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_104_by_1", "typeString": "int_const 104" } ], "expression": { "argumentTypes": null, "id": 829, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5635:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint256", "nodeType": "MemberAccess", "referencedDeclaration": 271, "src": "5635:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint256)" } }, "id": 832, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5635:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "5618:36:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 837, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 835, "name": "source_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 798, "src": "5673:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 836, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5689:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5673:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564", "id": 838, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5703:40:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" }, "value": "same chain transfers are not supported" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_e4bc00dc2f1f687d1ecd0a604d39e62ed5081a3cef70cb858e5f565f9bb7da23", "typeString": "literal_string \"same chain transfers are not supported\"" } ], "id": 834, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5665:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 839, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5665:79:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 840, "nodeType": "ExpressionStatement", "src": "5665:79:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 844, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 842, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 805, "src": "5762:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "id": 843, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "5778:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5762:24:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "7472616e73666572206d75737420626520696e636f6d696e67", "id": 845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "5788:27:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" }, "value": "transfer must be incoming" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_cbd36b1271ec4677f9b6b0ce3c590e298ab53454b431f3898527107beeed1a5a", "typeString": "literal_string \"transfer must be incoming\"" } ], "id": 841, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "5754:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 846, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5754:62:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 847, "nodeType": "ExpressionStatement", "src": "5754:62:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 850, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 848, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "5831:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "id": 849, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "5846:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "5831:23:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 924, "nodeType": "Block", "src": "6452:145:1", "statements": [ { "assignments": [908], "declarations": [ { "constant": false, "id": 908, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 924, "src": "6466:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 907, "name": "address", "nodeType": "ElementaryTypeName", "src": "6466:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 915, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" }, "id": 913, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3731", "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6505:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" }, "nodeType": "BinaryOperation", "operator": "+", "rightExpression": { "argumentTypes": null, "hexValue": "3132", "id": 912, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6510:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_12_by_1", "typeString": "int_const 12" }, "value": "12" }, "src": "6505:7:1", "typeDescriptions": { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_83_by_1", "typeString": "int_const 83" } ], "expression": { "argumentTypes": null, "id": 909, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "6490:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 910, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toAddress", "nodeType": "MemberAccess", "referencedDeclaration": 82, "src": "6490:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_address_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (address)" } }, "id": 914, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6490:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6466:47:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 920, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 812, "src": "6563:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 921, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "6579:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 917, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 908, "src": "6535:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 916, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "6528:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 918, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6528:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 919, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransfer", "nodeType": "MemberAccess", "referencedDeclaration": 2649, "src": "6528:34:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", "typeString": "function (contract IERC20,address,uint256)" } }, "id": 922, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6528:58:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 923, "nodeType": "ExpressionStatement", "src": "6528:58:1" } ] }, "id": 925, "nodeType": "IfStatement", "src": "5827:770:1", "trueBody": { "id": 906, "nodeType": "Block", "src": "5856:590:1", "statements": [ { "assignments": [852], "declarations": [ { "constant": false, "id": 852, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "5870:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 851, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5870:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 857, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "3731", "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "5909:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" }, "value": "71" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_71_by_1", "typeString": "int_const 71" } ], "expression": { "argumentTypes": null, "id": 853, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "5894:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 854, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toBytes32", "nodeType": "MemberAccess", "referencedDeclaration": 298, "src": "5894:14:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (bytes32)" } }, "id": 856, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5894:18:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5870:42:1" }, { "assignments": [859], "declarations": [ { "constant": false, "id": 859, "mutability": "mutable", "name": "asset_id", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "5926:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 858, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "5926:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 867, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 863, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "5972:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 864, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 852, "src": "5985:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } ], "expression": { "argumentTypes": null, "id": 861, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -1, "src": "5955:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, "id": 862, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "5955:16:1", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, "id": 865, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5955:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } ], "id": 860, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -8, "src": "5945:9:1", "typeDescriptions": { "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, "id": 866, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "5945:55:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", "src": "5926:74:1" }, { "assignments": [869], "declarations": [ { "constant": false, "id": 869, "mutability": "mutable", "name": "wrapped_asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 906, "src": "6092:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 868, "name": "address", "nodeType": "ElementaryTypeName", "src": "6092:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "id": 873, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 870, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "6116:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 872, "indexExpression": { "argumentTypes": null, "id": 871, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 859, "src": "6130:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "6116:23:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", "src": "6092:47:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_address", "typeString": "address" }, "id": 879, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 874, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6157:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "BinaryOperation", "operator": "==", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", "id": 877, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6182:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" } ], "id": 876, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6174:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 875, "name": "address", "nodeType": "ElementaryTypeName", "src": "6174:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 878, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6174:10:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "src": "6157:27:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 897, "nodeType": "IfStatement", "src": "6153:212:1", "trueBody": { "id": 896, "nodeType": "Block", "src": "6186:179:1", "statements": [ { "assignments": [881], "declarations": [ { "constant": false, "id": 881, "mutability": "mutable", "name": "asset_decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 896, "src": "6204:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 880, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6204:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 886, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "313033", "id": 884, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "6240:3:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" }, "value": "103" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_rational_103_by_1", "typeString": "int_const 103" } ], "expression": { "argumentTypes": null, "id": 882, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 794, "src": "6227:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "id": 883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "toUint8", "nodeType": "MemberAccess", "referencedDeclaration": 109, "src": "6227:12:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$bound_to$_t_bytes_memory_ptr_$", "typeString": "function (bytes memory,uint256) pure returns (uint8)" } }, "id": 885, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6227:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "6204:40:1" }, { "expression": { "argumentTypes": null, "id": 894, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 887, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6262:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 889, "name": "asset_id", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 859, "src": "6297:8:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 890, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 821, "src": "6307:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 891, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 852, "src": "6320:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 892, "name": "asset_decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 881, "src": "6335:14:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 888, "name": "deployWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 970, "src": "6278:18:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)" } }, "id": 893, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6278:72:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "6262:88:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 895, "nodeType": "ExpressionStatement", "src": "6262:88:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 902, "name": "target_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 812, "src": "6412:14:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 903, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 828, "src": "6428:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 899, "name": "wrapped_asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 869, "src": "6392:13:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 898, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "6379:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 900, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6379:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 901, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mint", "nodeType": "MemberAccess", "referencedDeclaration": 1349, "src": "6379:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 904, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6379:56:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 905, "nodeType": "ExpressionStatement", "src": "6379:56:1" } ] } } ] }, "documentation": null, "id": 927, "implemented": true, "kind": "function", "modifiers": [], "name": "vaaTransfer", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 795, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 794, "mutability": "mutable", "name": "data", "nodeType": "VariableDeclaration", "overrides": null, "scope": 927, "src": "5177:17:1", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes" }, "typeName": { "id": 793, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "5177:5:1", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], "src": "5176:19:1" }, "returnParameters": { "id": 796, "nodeType": "ParameterList", "parameters": [], "src": "5204:0:1" }, "scope": 1254, "src": "5156:1447:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 969, "nodeType": "Block", "src": "6740:808:1", "statements": [ { "assignments": [941], "declarations": [ { "constant": false, "id": 941, "mutability": "mutable", "name": "targetBytes", "nodeType": "VariableDeclaration", "overrides": null, "scope": 969, "src": "6918:19:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" }, "typeName": { "id": 940, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6918:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "value": null, "visibility": "internal" } ], "id": 946, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 944, "name": "wrappedAssetMaster", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 359, "src": "6948:18:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 943, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "6940:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes20_$", "typeString": "type(bytes20)" }, "typeName": { "id": 942, "name": "bytes20", "nodeType": "ElementaryTypeName", "src": "6940:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 945, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "6940:27:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes20", "typeString": "bytes20" } }, "nodeType": "VariableDeclarationStatement", "src": "6918:49:1" }, { "AST": { "nodeType": "YulBlock", "src": "6986:348:1", "statements": [ { "nodeType": "YulVariableDeclaration", "src": "7000:24:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7019:4:1", "type": "", "value": "0x40" } ], "functionName": { "name": "mload", "nodeType": "YulIdentifier", "src": "7013:5:1" }, "nodeType": "YulFunctionCall", "src": "7013:11:1" }, "variables": [ { "name": "clone", "nodeType": "YulTypedName", "src": "7004:5:1", "type": "" } ] }, { "expression": { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7044:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7051:66:1", "type": "", "value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7037:6:1" }, "nodeType": "YulFunctionCall", "src": "7037:81:1" }, "nodeType": "YulExpressionStatement", "src": "7037:81:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7142:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7149:4:1", "type": "", "value": "0x14" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7138:3:1" }, "nodeType": "YulFunctionCall", "src": "7138:16:1" }, { "name": "targetBytes", "nodeType": "YulIdentifier", "src": "7156:11:1" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7131:6:1" }, "nodeType": "YulFunctionCall", "src": "7131:37:1" }, "nodeType": "YulExpressionStatement", "src": "7131:37:1" }, { "expression": { "arguments": [ { "arguments": [ { "name": "clone", "nodeType": "YulIdentifier", "src": "7192:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7199:4:1", "type": "", "value": "0x28" } ], "functionName": { "name": "add", "nodeType": "YulIdentifier", "src": "7188:3:1" }, "nodeType": "YulFunctionCall", "src": "7188:16:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7206:66:1", "type": "", "value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000" } ], "functionName": { "name": "mstore", "nodeType": "YulIdentifier", "src": "7181:6:1" }, "nodeType": "YulFunctionCall", "src": "7181:92:1" }, "nodeType": "YulExpressionStatement", "src": "7181:92:1" }, { "nodeType": "YulAssignment", "src": "7286:38:1", "value": { "arguments": [ { "kind": "number", "nodeType": "YulLiteral", "src": "7303:1:1", "type": "", "value": "0" }, { "name": "clone", "nodeType": "YulIdentifier", "src": "7306:5:1" }, { "kind": "number", "nodeType": "YulLiteral", "src": "7313:4:1", "type": "", "value": "0x37" }, { "name": "seed", "nodeType": "YulIdentifier", "src": "7319:4:1" } ], "functionName": { "name": "create2", "nodeType": "YulIdentifier", "src": "7295:7:1" }, "nodeType": "YulFunctionCall", "src": "7295:29:1" }, "variableNames": [ { "name": "asset", "nodeType": "YulIdentifier", "src": "7286:5:1" } ] } ] }, "evmVersion": "istanbul", "externalReferences": [ { "declaration": 938, "isOffset": false, "isSlot": false, "src": "7286:5:1", "valueSize": 1 }, { "declaration": 929, "isOffset": false, "isSlot": false, "src": "7319:4:1", "valueSize": 1 }, { "declaration": 941, "isOffset": false, "isSlot": false, "src": "7156:11:1", "valueSize": 1 } ], "id": 947, "nodeType": "InlineAssembly", "src": "6977:357:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 952, "name": "token_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 931, "src": "7403:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 953, "name": "token_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 933, "src": "7416:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 954, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 935, "src": "7431:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 949, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7385:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 948, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "7372:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 950, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7372:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 951, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "initialize", "nodeType": "MemberAccess", "referencedDeclaration": 1328, "src": "7372:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$", "typeString": "function (uint8,bytes32,uint8) external" } }, "id": 955, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7372:68:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 956, "nodeType": "ExpressionStatement", "src": "7372:68:1" }, { "expression": { "argumentTypes": null, "id": 961, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 957, "name": "wrappedAssets", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 411, "src": "7476:13:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$", "typeString": "mapping(bytes32 => address)" } }, "id": 959, "indexExpression": { "argumentTypes": null, "id": 958, "name": "seed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 929, "src": "7490:4:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7476:19:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "id": 960, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7498:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "src": "7476:27:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "id": 962, "nodeType": "ExpressionStatement", "src": "7476:27:1" }, { "expression": { "argumentTypes": null, "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 963, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "7513:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 965, "indexExpression": { "argumentTypes": null, "id": 964, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 938, "src": "7528:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "7513:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", "id": 966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", "src": "7537:4:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "value": "true" }, "src": "7513:28:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 968, "nodeType": "ExpressionStatement", "src": "7513:28:1" } ] }, "documentation": null, "id": 970, "implemented": true, "kind": "function", "modifiers": [], "name": "deployWrappedAsset", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 936, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 929, "mutability": "mutable", "name": "seed", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6637:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 928, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6637:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 931, "mutability": "mutable", "name": "token_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6651:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 930, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6651:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 933, "mutability": "mutable", "name": "token_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6670:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 932, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "6670:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 935, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6693:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 934, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "6693:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "src": "6636:72:1" }, "returnParameters": { "id": 939, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 938, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 970, "src": "6726:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 937, "name": "address", "nodeType": "ElementaryTypeName", "src": "6726:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" } ], "src": "6725:15:1" }, "scope": 1254, "src": "6609:939:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "private" }, { "body": { "id": 1182, "nodeType": "Block", "src": "7750:1642:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 990, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "7768:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 989, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "7778:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "7768:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 991, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "7781:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 987, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "7760:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 992, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7760:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 993, "nodeType": "ExpressionStatement", "src": "7760:44:1" }, { "assignments": [995], "declarations": [ { "constant": false, "id": 995, "mutability": "mutable", "name": "asset_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7815:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 994, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7815:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 997, "initialValue": { "argumentTypes": null, "id": 996, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "7835:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7815:28:1" }, { "assignments": [999], "declarations": [ { "constant": false, "id": 999, "mutability": "mutable", "name": "asset_address", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7853:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 998, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7853:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" } ], "id": 1000, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "7853:21:1" }, { "assignments": [1002], "declarations": [ { "constant": false, "id": 1002, "mutability": "mutable", "name": "decimals", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1182, "src": "7884:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1001, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7884:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" } ], "id": 1008, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1004, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7907:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1003, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "7901:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1005, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7901:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1006, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 2113, "src": "7901:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1007, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7901:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", "src": "7884:40:1" }, { "condition": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 1009, "name": "isWrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 415, "src": "7939:14:1", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, "id": 1011, "indexExpression": { "argumentTypes": null, "id": 1010, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7954:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "7939:21:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { "id": 1162, "nodeType": "Block", "src": "8161:1086:1", "statements": [ { "assignments": [1039], "declarations": [ { "constant": false, "id": 1039, "mutability": "mutable", "name": "balanceBefore", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1162, "src": "8175:21:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1038, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8175:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1049, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1046, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8231:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1045, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8223:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1044, "name": "address", "nodeType": "ElementaryTypeName", "src": "8223:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1047, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8223:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1041, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8206:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1040, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8199:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1042, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8199:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1043, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 2554, "src": "8199:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1048, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8199:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8175:62:1" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1054, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8282:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1055, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8282:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1058, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8302:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1057, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8294:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1056, "name": "address", "nodeType": "ElementaryTypeName", "src": "8294:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1059, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8294:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1060, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8309:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1051, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8258:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1050, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8251:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8251:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1053, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "safeTransferFrom", "nodeType": "MemberAccess", "referencedDeclaration": 2674, "src": "8251:30:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$", "typeString": "function (contract IERC20,address,address,uint256)" } }, "id": 1061, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8251:65:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1062, "nodeType": "ExpressionStatement", "src": "8251:65:1" }, { "assignments": [1064], "declarations": [ { "constant": false, "id": 1064, "mutability": "mutable", "name": "balanceAfter", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1162, "src": "8330:20:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1063, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8330:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1074, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1071, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -28, "src": "8385:4:1", "typeDescriptions": { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_contract$_Wormhole_$1254", "typeString": "contract Wormhole" } ], "id": 1070, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8377:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": { "id": 1069, "name": "address", "nodeType": "ElementaryTypeName", "src": "8377:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1072, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8377:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1066, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8360:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1065, "name": "IERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2615, "src": "8353:6:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$", "typeString": "type(contract IERC20)" } }, "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8353:13:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "balanceOf", "nodeType": "MemberAccess", "referencedDeclaration": 2554, "src": "8353:23:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$", "typeString": "function (address) view external returns (uint256)" } }, "id": 1073, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8353:38:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8330:61:1" }, { "expression": { "argumentTypes": null, "id": 1080, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1075, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8596:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1078, "name": "balanceBefore", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1039, "src": "8622:13:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1076, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1064, "src": "8605:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1077, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sub", "nodeType": "MemberAccess", "referencedDeclaration": 1880, "src": "8605:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1079, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8605:31:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8596:40:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1081, "nodeType": "ExpressionStatement", "src": "8596:40:1" }, { "condition": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1084, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1082, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8711:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": ">", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1083, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8722:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8711:12:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1130, "nodeType": "IfStatement", "src": "8707:339:1", "trueBody": { "id": 1129, "nodeType": "Block", "src": "8725:321:1", "statements": [ { "assignments": [1086], "declarations": [ { "constant": false, "id": 1086, "mutability": "mutable", "name": "original_amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1129, "src": "8743:23:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1085, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8743:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 1088, "initialValue": { "argumentTypes": null, "id": 1087, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8769:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "8743:32:1" }, { "expression": { "argumentTypes": null, "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1089, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8793:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1099, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1092, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8813:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1097, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1095, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8827:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1096, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8838:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8827:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1094, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8819:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1093, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8819:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1098, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8819:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8813:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1090, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8802:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1091, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", "referencedDeclaration": 1960, "src": "8802:10:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1100, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8802:39:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8793:48:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1102, "nodeType": "ExpressionStatement", "src": "8793:48:1" }, { "condition": { "argumentTypes": null, "id": 1103, "name": "refund_dust", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 982, "src": "8864:11:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, "id": 1124, "nodeType": "IfStatement", "src": "8860:141:1", "trueBody": { "id": 1123, "nodeType": "Block", "src": "8877:124:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1108, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8921:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1109, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8921:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1119, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1112, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8953:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1117, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "id": 1115, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "8967:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1116, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "8978:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "8967:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1114, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1113, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "8959:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1118, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8959:21:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "8953:27:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1110, "name": "original_amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1086, "src": "8933:15:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1111, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "mod", "nodeType": "MemberAccess", "referencedDeclaration": 2005, "src": "8933:19:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1120, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8933:48:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1105, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8905:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1104, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "8899:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1106, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8899:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 2158, "src": "8899:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 1121, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8899:83:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "id": 1122, "nodeType": "ExpressionStatement", "src": "8899:83:1" } ] } }, { "expression": { "argumentTypes": null, "id": 1127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1125, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "9019:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "39", "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9030:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "9019:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1128, "nodeType": "ExpressionStatement", "src": "9019:12:1" } ] } }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1148, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1145, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "hexValue": "3130", "id": 1134, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9085:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_10_by_1", "typeString": "int_const 10" }, "value": "10" }, "nodeType": "BinaryOperation", "operator": "**", "rightExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1138, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "9105:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1137, "name": "ERC20", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2537, "src": "9099:5:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$", "typeString": "type(contract ERC20)" } }, "id": 1139, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9099:12:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_ERC20_$2537", "typeString": "contract ERC20" } }, "id": 1140, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "decimals", "nodeType": "MemberAccess", "referencedDeclaration": 2113, "src": "9099:21:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1141, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9099:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "BinaryOperation", "operator": "-", "rightExpression": { "argumentTypes": null, "hexValue": "39", "id": 1142, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9125:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_9_by_1", "typeString": "int_const 9" }, "value": "9" }, "src": "9099:27:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" } ], "id": 1136, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9091:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1135, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9091:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1144, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9091:36:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "src": "9085:42:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 1132, "name": "balanceAfter", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1064, "src": "9068:12:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 1133, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "div", "nodeType": "MemberAccess", "referencedDeclaration": 1960, "src": "9068:16:1", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, "id": 1146, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9068:60:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "<=", "rightExpression": { "argumentTypes": null, "id": 1147, "name": "MAX_UINT64", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 357, "src": "9132:10:1", "typeDescriptions": { "typeIdentifier": "t_uint64", "typeString": "uint64" } }, "src": "9068:74:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d", "id": 1149, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9144:37:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", "typeString": "literal_string \"bridge balance would exceed maximum\"" }, "value": "bridge balance would exceed maximum" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4", "typeString": "literal_string \"bridge balance would exceed maximum\"" } ], "id": 1131, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9060:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1150, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9060:122:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1151, "nodeType": "ExpressionStatement", "src": "9060:122:1" }, { "expression": { "argumentTypes": null, "id": 1160, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1152, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "9197:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1157, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "9229:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1156, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9221:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1155, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9221:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9221:14:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1154, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9213:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1153, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9213:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1159, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9213:23:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "9197:39:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1161, "nodeType": "ExpressionStatement", "src": "9197:39:1" } ] }, "id": 1163, "nodeType": "IfStatement", "src": "7935:1312:1", "trueBody": { "id": 1037, "nodeType": "Block", "src": "7962:193:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1016, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "8001:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1017, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "8001:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, { "argumentTypes": null, "id": 1018, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "8013:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1013, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "7989:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1012, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "7976:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1014, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1015, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "burn", "nodeType": "MemberAccess", "referencedDeclaration": 1370, "src": "7976:24:1", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256) external" } }, "id": 1019, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "7976:44:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1020, "nodeType": "ExpressionStatement", "src": "7976:44:1" }, { "expression": { "argumentTypes": null, "id": 1027, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1021, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "8034:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1023, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8061:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1022, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "8048:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1024, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8048:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1025, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetChain", "nodeType": "MemberAccess", "referencedDeclaration": 1277, "src": "8048:30:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, "id": 1026, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8048:32:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "src": "8034:46:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "id": 1028, "nodeType": "ExpressionStatement", "src": "8034:46:1" }, { "expression": { "argumentTypes": null, "id": 1035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "id": 1029, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "8094:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1031, "name": "asset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 972, "src": "8123:5:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1030, "name": "WrappedAsset", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1811, "src": "8110:12:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$", "typeString": "type(contract WrappedAsset)" } }, "id": 1032, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8110:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WrappedAsset_$1811", "typeString": "contract WrappedAsset" } }, "id": 1033, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "assetAddress", "nodeType": "MemberAccess", "referencedDeclaration": 1279, "src": "8110:32:1", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$", "typeString": "function () view external returns (bytes32)" } }, "id": 1034, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "8110:34:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "src": "8094:50:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "id": 1036, "nodeType": "ExpressionStatement", "src": "8094:50:1" } ] } }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1165, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 978, "src": "9278:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1166, "name": "asset_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 995, "src": "9292:11:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1167, "name": "decimals", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1002, "src": "9305:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1168, "name": "asset_address", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 999, "src": "9315:13:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1173, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9346:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9346:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9338:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1171, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9338:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1175, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9338:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1170, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9330:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1169, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9330:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9330:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1177, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 976, "src": "9360:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1178, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 974, "src": "9371:6:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1179, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 980, "src": "9379:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1164, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "9262:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1180, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9262:123:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1181, "nodeType": "EmitStatement", "src": "9257:128:1" } ] }, "documentation": null, "functionSelector": "70713960", "id": 1183, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 985, "modifierName": { "argumentTypes": null, "id": 984, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "7737:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "7737:12:1" } ], "name": "lockAssets", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 983, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 972, "mutability": "mutable", "name": "asset", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7583:13:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 971, "name": "address", "nodeType": "ElementaryTypeName", "src": "7583:7:1", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 974, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7606:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 973, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "7606:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 976, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7630:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 975, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "7630:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 978, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7657:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 977, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "7657:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 980, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7685:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 979, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "7685:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 982, "mutability": "mutable", "name": "refund_dust", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1183, "src": "7707:16:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" }, "typeName": { "id": 981, "name": "bool", "nodeType": "ElementaryTypeName", "src": "7707:4:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "value": null, "visibility": "internal" } ], "src": "7573:156:1" }, "returnParameters": { "id": 986, "nodeType": "ParameterList", "parameters": [], "src": "7750:0:1" }, "scope": 1254, "src": "7554:1838:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "public" }, { "body": { "id": 1236, "nodeType": "Block", "src": "9526:334:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "id": 1198, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1195, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9544:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9544:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", "operator": "!=", "rightExpression": { "argumentTypes": null, "hexValue": "30", "id": 1197, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9557:1:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "9544:14:1", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, { "argumentTypes": null, "hexValue": "616d6f756e74206d757374206e6f742062652030", "id": 1199, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9560:22:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" }, "value": "amount must not be 0" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" }, { "typeIdentifier": "t_stringliteral_c3143f59cb0e580c5873dd9b2860385487237680573a0afd40e8c0860e76a5d3", "typeString": "literal_string \"amount must not be 0\"" } ], "id": 1194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [-18, -18], "referencedDeclaration": -18, "src": "9536:7:1", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", "typeString": "function (bool,string memory) pure" } }, "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9536:47:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1201, "nodeType": "ExpressionStatement", "src": "9536:47:1" }, { "expression": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": [], "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1203, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, "src": "9632:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1202, "name": "WETH", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1265, "src": "9627:4:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_WETH_$1265_$", "typeString": "type(contract WETH)" } }, "id": 1204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9627:17:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_contract$_WETH_$1265", "typeString": "contract WETH" } }, "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "deposit", "nodeType": "MemberAccess", "referencedDeclaration": 1259, "src": "9627:25:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$", "typeString": "function () payable external" } }, "id": 1208, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "names": ["value"], "nodeType": "FunctionCallOptions", "options": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1206, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9661:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1207, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9661:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "src": "9627:44:1", "typeDescriptions": { "typeIdentifier": "t_function_external_payable$__$returns$__$value", "typeString": "function () payable external" } }, "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9627:46:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1210, "nodeType": "ExpressionStatement", "src": "9627:46:1" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1212, "name": "target_chain", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1187, "src": "9736:12:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "id": 1213, "name": "CHAIN_ID", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 362, "src": "9750:8:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, { "argumentTypes": null, "hexValue": "3138", "id": 1214, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "9760:2:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, "value": "18" }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "id": 1219, "name": "WETHAddress", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 365, "src": "9780:11:1", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" } ], "id": 1218, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9772:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1217, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9772:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1220, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9772:20:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1216, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9764:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1215, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9764:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1221, "isConstant": false, "isLValue": false, "isPure": true, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9764:29:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1226, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9811:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9811:10:1", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address_payable", "typeString": "address payable" } ], "id": 1225, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9803:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_uint256_$", "typeString": "type(uint256)" }, "typeName": { "id": 1224, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "9803:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9803:19:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", "src": "9795:7:1", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes32_$", "typeString": "type(bytes32)" }, "typeName": { "id": 1222, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9795:7:1", "typeDescriptions": { "typeIdentifier": null, "typeString": null } } }, "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9795:28:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "id": 1230, "name": "recipient", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1185, "src": "9825:9:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 1231, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": -15, "src": "9836:3:1", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "9836:9:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, { "argumentTypes": null, "id": 1233, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 1189, "src": "9847:5:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_uint8", "typeString": "uint8" }, { "typeIdentifier": "t_rational_18_by_1", "typeString": "int_const 18" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" }, { "typeIdentifier": "t_uint32", "typeString": "uint32" } ], "id": 1211, "name": "LogTokensLocked", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 395, "src": "9720:15:1", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$", "typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)" } }, "id": 1234, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9720:133:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1235, "nodeType": "EmitStatement", "src": "9715:138:1" } ] }, "documentation": null, "functionSelector": "58d62e46", "id": 1237, "implemented": true, "kind": "function", "modifiers": [ { "arguments": null, "id": 1192, "modifierName": { "argumentTypes": null, "id": 1191, "name": "nonReentrant", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 3071, "src": "9513:12:1", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", "src": "9513:12:1" } ], "name": "lockETH", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1190, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1185, "mutability": "mutable", "name": "recipient", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9424:17:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" }, "typeName": { "id": 1184, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "9424:7:1", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1187, "mutability": "mutable", "name": "target_chain", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9451:18:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" }, "typeName": { "id": 1186, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "9451:5:1", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 1189, "mutability": "mutable", "name": "nonce", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1237, "src": "9479:12:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" }, "typeName": { "id": 1188, "name": "uint32", "nodeType": "ElementaryTypeName", "src": "9479:6:1", "typeDescriptions": { "typeIdentifier": "t_uint32", "typeString": "uint32" } }, "value": null, "visibility": "internal" } ], "src": "9414:83:1" }, "returnParameters": { "id": 1193, "nodeType": "ParameterList", "parameters": [], "src": "9526:0:1" }, "scope": 1254, "src": "9398:462:1", "stateMutability": "payable", "virtual": false, "visibility": "public" }, { "body": { "id": 1244, "nodeType": "Block", "src": "9894:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1241, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9902:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1240, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9895:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1242, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9895:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1243, "nodeType": "ExpressionStatement", "src": "9895:54:1" } ] }, "documentation": null, "id": 1245, "implemented": true, "kind": "fallback", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1238, "nodeType": "ParameterList", "parameters": [], "src": "9874:2:1" }, "returnParameters": { "id": 1239, "nodeType": "ParameterList", "parameters": [], "src": "9894:0:1" }, "scope": 1254, "src": "9866:85:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": { "id": 1252, "nodeType": "Block", "src": "9984:57:1", "statements": [ { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61", "id": 1249, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", "src": "9992:46:1", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" }, "value": "please use lockETH to transfer ETH to Solana" } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_stringliteral_414957345d33678f377f3c67303c55f683553546e00bb5a8689e656385e6efb2", "typeString": "literal_string \"please use lockETH to transfer ETH to Solana\"" } ], "id": 1248, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [-19, -19], "referencedDeclaration": -19, "src": "9985:6:1", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "9985:54:1", "tryCall": false, "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 1251, "nodeType": "ExpressionStatement", "src": "9985:54:1" } ] }, "documentation": null, "id": 1253, "implemented": true, "kind": "receive", "modifiers": [], "name": "", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1246, "nodeType": "ParameterList", "parameters": [], "src": "9964:2:1" }, "returnParameters": { "id": 1247, "nodeType": "ParameterList", "parameters": [], "src": "9984:0:1" }, "scope": 1254, "src": "9957:84:1", "stateMutability": "payable", "virtual": false, "visibility": "external" } ], "scope": 1266, "src": "502:9541:1" }, { "abstract": false, "baseContracts": [ { "arguments": null, "baseName": { "contractScope": null, "id": 1255, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2615, "src": "10064:6:1", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$2615", "typeString": "contract IERC20" } }, "id": 1256, "nodeType": "InheritanceSpecifier", "src": "10064:6:1" } ], "contractDependencies": [2615], "contractKind": "interface", "documentation": null, "fullyImplemented": false, "id": 1265, "linearizedBaseContracts": [1265, 2615], "name": "WETH", "nodeType": "ContractDefinition", "nodes": [ { "body": null, "documentation": null, "functionSelector": "d0e30db0", "id": 1259, "implemented": false, "kind": "function", "modifiers": [], "name": "deposit", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1257, "nodeType": "ParameterList", "parameters": [], "src": "10093:2:1" }, "returnParameters": { "id": 1258, "nodeType": "ParameterList", "parameters": [], "src": "10112:0:1" }, "scope": 1265, "src": "10077:36:1", "stateMutability": "payable", "virtual": false, "visibility": "external" }, { "body": null, "documentation": null, "functionSelector": "2e1a7d4d", "id": 1264, "implemented": false, "kind": "function", "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "overrides": null, "parameters": { "id": 1262, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 1261, "mutability": "mutable", "name": "amount", "nodeType": "VariableDeclaration", "overrides": null, "scope": 1264, "src": "10137:14:1", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 1260, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "10137:7:1", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "10136:16:1" }, "returnParameters": { "id": 1263, "nodeType": "ParameterList", "parameters": [], "src": "10161:0:1" }, "scope": 1265, "src": "10119:43:1", "stateMutability": "nonpayable", "virtual": false, "visibility": "external" } ], "scope": 1266, "src": "10046:118:1" } ], "src": "103:10062:1" }, "compiler": { "name": "solc", "version": "0.6.12+commit.27d51765.Emscripten.clang" }, "networks": {}, "schemaVersion": "3.2.3", "updatedAt": "2020-08-30T09:23:52.322Z", "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }