wormhole/web/contracts/Wormhole.json

22077 lines
1017 KiB
JSON

{
"contractName": "Wormhole",
"abi": [
{
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "parity",
"type": "uint8"
},
{
"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": "_vaa_expiry",
"type": "uint32"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"components": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "parity",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "expiration_time",
"type": "uint32"
}
],
"indexed": true,
"internalType": "struct Wormhole.GuardianSet",
"name": "oldGuardian",
"type": "tuple"
},
{
"components": [
{
"internalType": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "parity",
"type": "uint8"
},
{
"internalType": "uint32",
"name": "expiration_time",
"type": "uint32"
}
],
"indexed": true,
"internalType": "struct Wormhole.GuardianSet",
"name": "newGuardian",
"type": "tuple"
}
],
"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": 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"
}
],
"name": "LogTokensLocked",
"type": "event"
},
{
"stateMutability": "payable",
"type": "fallback"
},
{
"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": "uint256",
"name": "x",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "parity",
"type": "uint8"
},
{
"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": "vaa_expiry",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"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": "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"
}
],
"name": "lockAssets",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "recipient",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "target_chain",
"type": "uint8"
}
],
"name": "lockETH",
"outputs": [],
"stateMutability": "payable",
"type": "function"
}
],
"metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"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\":\"_vaa_expiry\",\"type\":\"uint32\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"oldGuardian\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"expiration_time\",\"type\":\"uint32\"}],\"indexed\":true,\"internalType\":\"struct Wormhole.GuardianSet\",\"name\":\"newGuardian\",\"type\":\"tuple\"}],\"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\":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\"}],\"name\":\"LogTokensLocked\",\"type\":\"event\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"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\":\"uint256\",\"name\":\"x\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"parity\",\"type\":\"uint8\"},{\"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\"}],\"name\":\"lockAssets\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"recipient\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"target_chain\",\"type\":\"uint8\"}],\"name\":\"lockETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"vaa\",\"type\":\"bytes\"}],\"name\":\"submitVAA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"vaa_expiry\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"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\"}],\"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/SchnorrSECP256K1.sol\":{\"keccak256\":\"0x83c638d63ee08fd708c97d72ab10248031773f6172acabcc4e8ee96725679906\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://82c05b3e8d17a95032d29053737cb982eecdc540f3f5a8f9ab6914a41bf8ac9f\",\"dweb:/ipfs/QmUccQmFUzrwAHvra98jZ7Fv5jAikQQrMCeno8g1Aqqz2Y\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol\":{\"keccak256\":\"0x8204e2255e1f3f3d1ef09b6b6a7209ae6affc05a98d666579c729ab726e5e8c6\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://0584f2cce158c84deb5eb9dee3eadb38b7fcbe6b014119b77d3ce8cd900527a1\",\"dweb:/ipfs/QmSvgDRUEVzZoNitpjdESKtWrPjCaHNWq3SPo9tJFwVWms\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0x029a9b6e1df05a76c4c09570bf403eb91a2df33acdb0b7414e950f35fa240b97\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://a1d5d79ed2fdbe41c9eb88971ab0c7677b66579d6ef322a5eb7b23bf8fc9f891\",\"dweb:/ipfs/QmPRZWXa3hx87fJ9u14rDxZ7mYXL2EjQHcDmC2jYZEDMNW\"]},\"@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/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\"]}},\"version\":1}",
"bytecode": "0x60806040526002600060146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b506040516200334a3803806200334a833981810160405281019062000053919062000213565b82600160008063ffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908360ff16021790555060408201518160010160016101000a81548163ffffffff021916908363ffffffff1602179055509050506000600260006101000a81548163ffffffff021916908363ffffffff16021790555080600260046101000a81548163ffffffff021916908363ffffffff160217905550816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200035a565b6000815190506200015f81620002f2565b92915050565b6000606082840312156200017857600080fd5b62000184606062000269565b905060006200019684828501620001ce565b6000830152506020620001ac84828501620001fc565b6020830152506040620001c284828501620001e5565b60408301525092915050565b600081519050620001df816200030c565b92915050565b600081519050620001f68162000326565b92915050565b6000815190506200020d8162000340565b92915050565b600080600060a084860312156200022957600080fd5b6000620002398682870162000165565b93505060606200024c868287016200014e565b92505060806200025f86828701620001e5565b9150509250925092565b6000604051905081810181811067ffffffffffffffff821117156200028d57600080fd5b8060405250919050565b6000620002a482620002ab565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b620002fd8162000297565b81146200030957600080fd5b50565b6200031781620002cb565b81146200032357600080fd5b50565b6200033181620002d5565b81146200033d57600080fd5b50565b6200034b81620002e5565b81146200035757600080fd5b50565b612fe0806200036a6000396000f3fe60806040526004361061008a5760003560e01c80637f04d9e6116100595780637f04d9e6146101c6578063822d82b3146101f157806399da1d3c1461021c578063b6694c2a14610247578063e66fd37314610284576100ca565b80631a2be4da146101055780633bc0aee61461014257806342b0aefa1461016b578063780e2183146101aa576100ca565b366100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c190612a5a565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc90612a5a565b60405180910390fd5b34801561011157600080fd5b5061012c60048036038101906101279190611f41565b6102ad565b60405161013991906129dd565b60405180910390f35b34801561014e57600080fd5b5061016960048036038101906101649190612084565b6102cd565b005b34801561017757600080fd5b50610192600480360381019061018d91906120f2565b6109e4565b6040516101a193929190612c8d565b60405180910390f35b6101c460048036038101906101bf9190612048565b610a2b565b005b3480156101d257600080fd5b506101db610b7c565b6040516101e89190612cc4565b60405180910390f35b3480156101fd57600080fd5b50610206610b92565b6040516102139190612cc4565b60405180910390f35b34801561022857600080fd5b50610231610ba8565b60405161023e919061291e565b60405180910390f35b34801561025357600080fd5b5061026e60048036038101906102699190611ff6565b610bcc565b60405161027b919061291e565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190611f6a565b610bff565b005b60056020528060005260406000206000915054906101000a900460ff1681565b6000610327600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b905060018160ff161461036f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036690612ada565b60405180910390fd5b60006103c9600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061105590919063ffffffff16565b90506000610425600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506110b390919063ffffffff16565b90506000610481602587878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061111190919063ffffffff16565b905060006104dd603988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061105590919063ffffffff16565b905042600260049054906101000a900463ffffffff16820163ffffffff161161053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290612afa565b60405180910390fd5b600061059c6039808a8a9050038a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061117e9092919063ffffffff16565b8051906020012090506003600082815260200190815260200160002060009054906101000a900460ff1615610606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fd90612a3a565b60405180910390fd5b61060e611e10565b600160008763ffffffff1663ffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff1681526020016001820160019054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816040015163ffffffff1614806106a9575042816040015163ffffffff16115b6106e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106df90612bba565b60405180910390fd5b73__Schnorr_______________________________63ff51dff282600001518360200151888660001c896040518663ffffffff1660e01b8152600401610732959493929190612c3a565b60206040518083038186803b15801561074a57600080fd5b505af415801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190611fcd565b6107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612b1a565b60405180910390fd5b600061081b603d8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b90506000610877603e8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b905060606108d8603f8360ff168e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061117e9092919063ffffffff16565b905060018360ff16141561095457600260009054906101000a900463ffffffff1663ffffffff168963ffffffff1614610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d90612a9a565b60405180910390fd5b61094f81611240565b6109aa565b60108360ff16141561096e5761096981611558565b6109a9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090612a1a565b60405180910390fd5b5b60016003600087815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505050505050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900463ffffffff16905083565b6000341415610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690612b7a565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b83600060149054906101000a900460ff168634604051610b709493929190612d08565b60405180910390a35050565b600260049054906101000a900463ffffffff1681565b600260009054906101000a900463ffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000831415610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90612b7a565b60405180910390fd5b60008060149054906101000a900460ff1690506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e1c578573ffffffffffffffffffffffffffffffffffffffff16639dc29fac33876040518363ffffffff1660e01b8152600401610ce5929190612954565b600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5d57600080fd5b505afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d95919061211b565b91508573ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061201f565b9050610f97565b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e579190612939565b60206040518083038186803b158015610e6f57600080fd5b505afa158015610e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea791906120c9565b9050610ed63330888a73ffffffffffffffffffffffffffffffffffffffff1661180e909392919063ffffffff16565b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f119190612939565b60206040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6191906120c9565b9050610f76828261189790919063ffffffff16565b96508773ffffffffffffffffffffffffffffffffffffffff1660001b925050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b817f84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b8585888a604051610fe79493929190612d08565b60405180910390a3505050505050565b60006001820183511015611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790612aba565b60405180910390fd5b60008260018501015190508091505092915050565b6000600482018351101561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590612aba565b60405180910390fd5b60008260048501015190508091505092915050565b600060208201835110156110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612aba565b60405180910390fd5b60008260208501015190508091505092915050565b6000601482018351101561115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612aba565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612aba565b60405180910390fd5b60608215600081146111e357604051915060208201604052611234565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112215780518352602083019250602081019050611204565b50868552601f19601f8301166040525050505b50809150509392505050565b60006112566000836110b390919063ffffffff16565b9050600061126e602084610ff790919063ffffffff16565b60ff169050600061128960218561105590919063ffffffff16565b9050600260009054906101000a900463ffffffff1663ffffffff168163ffffffff16116112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612b3a565b60405180910390fd5b6001807ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141901c018310611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90612b5a565b60405180910390fd5b6001821115611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90612a7a565b60405180910390fd5b6000600260009054906101000a900463ffffffff16905081600260006101000a81548163ffffffff021916908363ffffffff1602179055506113d7611e10565b60405180606001604052808681526020018560ff168152602001600063ffffffff1681525090508060016000600260009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908360ff16021790555060408201518160010160016101000a81548163ffffffff021916908363ffffffff160217905550905050600260049054906101000a900463ffffffff164201600160008463ffffffff1663ffffffff16815260200190815260200160002060010160016101000a81548163ffffffff021916908363ffffffff160217905550806040516114e891906128bc565b6040518091039020600160008463ffffffff1663ffffffff16815260200190815260200160002060405161151c91906128d7565b60405180910390207f776a7721d091beb15fb219d7be3c92b83fa7c10428af15a7312461bc3bc52e0b60405160405180910390a3505050505050565b600061156e600483610ff790919063ffffffff16565b90506000611586600584610ff790919063ffffffff16565b9050600061159e60328561111190919063ffffffff16565b905060006115b6604686610ff790919063ffffffff16565b905060006115ce6067876110b390919063ffffffff16565b90508360ff168560ff161415611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090612c1a565b60405180910390fd5b600060149054906101000a900460ff1660ff168460ff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612b9a565b60405180910390fd5b600060149054906101000a900460ff1660ff168260ff16146117c15760006116a26047886118e190919063ffffffff16565b9050600083826040516020016116b99291906128f2565b60405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561174c5761174982868561193f565b90505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b81526004016117879291906129b4565b600060405180830381600087803b1580156117a157600080fd5b505af11580156117b5573d6000803e3d6000fd5b50505050505050611806565b60006117d760538861111190919063ffffffff16565b905061180484838373ffffffffffffffffffffffffffffffffffffffff16611ae29092919063ffffffff16565b505b505050505050565b611891846323b872dd60e01b85858560405160240161182f9392919061297d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b68565b50505050565b60006118d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c2f565b905092915050565b6000602082018351101561192a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192190612aba565b60405180910390fd5b60008260208501015190508091505092915050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250508173ffffffffffffffffffffffffffffffffffffffff166302a0958585856040518363ffffffff1660e01b81526004016119fe929190612cdf565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b50505050816004600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550509392505050565b611b638363a9059cbb60e01b8484604051602401611b019291906129b4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b68565b505050565b6060611bca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c8a9092919063ffffffff16565b9050600081511115611c2a5780806020019051810190611bea9190611fcd565b611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090612bfa565b60405180910390fd5b5b505050565b6000838311158290611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e91906129f8565b60405180910390fd5b5060008385039050809150509392505050565b6060611c998484600085611ca2565b90509392505050565b6060611cad85611dc5565b611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce390612bda565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611d1691906128a5565b60006040518083038185875af1925050503d8060008114611d53576040519150601f19603f3d011682016040523d82523d6000602084013e611d58565b606091505b50915091508115611d6d578092505050611dbd565b600081511115611d805780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db491906129f8565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611e0757506000801b8214155b92505050919050565b604051806060016040528060008152602001600060ff168152602001600063ffffffff1681525090565b600081359050611e4981612f20565b92915050565b600081519050611e5e81612f37565b92915050565b600081359050611e7381612f4e565b92915050565b600081519050611e8881612f4e565b92915050565b60008083601f840112611ea057600080fd5b8235905067ffffffffffffffff811115611eb957600080fd5b602083019150836001820283011115611ed157600080fd5b9250929050565b600081359050611ee781612f65565b92915050565b600081519050611efc81612f65565b92915050565b600081359050611f1181612f7c565b92915050565b600081359050611f2681612f93565b92915050565b600081519050611f3b81612f93565b92915050565b600060208284031215611f5357600080fd5b6000611f6184828501611e3a565b91505092915050565b60008060008060808587031215611f8057600080fd5b6000611f8e87828801611e3a565b9450506020611f9f87828801611ed8565b9350506040611fb087828801611e64565b9250506060611fc187828801611f17565b91505092959194509250565b600060208284031215611fdf57600080fd5b6000611fed84828501611e4f565b91505092915050565b60006020828403121561200857600080fd5b600061201684828501611e64565b91505092915050565b60006020828403121561203157600080fd5b600061203f84828501611e79565b91505092915050565b6000806040838503121561205b57600080fd5b600061206985828601611e64565b925050602061207a85828601611f17565b9150509250929050565b6000806020838503121561209757600080fd5b600083013567ffffffffffffffff8111156120b157600080fd5b6120bd85828601611e8e565b92509250509250929050565b6000602082840312156120db57600080fd5b60006120e984828501611eed565b91505092915050565b60006020828403121561210457600080fd5b600061211284828501611f02565b91505092915050565b60006020828403121561212d57600080fd5b600061213b84828501611f2c565b91505092915050565b60006121508383612834565b60208301905092915050565b60006121688383612852565b60208301905092915050565b6000612180838361287f565b60208301905092915050565b61219581612e15565b82525050565b6121a481612da6565b82525050565b6121b381612da6565b82525050565b6121c281612db8565b82525050565b6121d181612dc4565b82525050565b6121e86121e382612dc4565b612ecc565b82525050565b60006121f982612d4d565b6122038185612d63565b9350612213818560208601612e4b565b80840191505092915050565b600061222a82612d58565b6122348185612d6e565b9350612244818560208601612e4b565b61224d81612ee8565b840191505092915050565b6000612265601283612d6e565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b60006122a5601883612d6e565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b60006122e5602c83612d6e565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b600061234b601083612d6e565b91507f696e76616c6964207920706172697479000000000000000000000000000000006000830152602082019050919050565b600061238b603983612d6e565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b60006123f1601283612d6e565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612431601883612d6e565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612471600f83612d6e565b91507f56414120686173206578706972656400000000000000000000000000000000006000830152602082019050919050565b60006124b1601583612d6e565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b60006124f1602b83612d6e565b91507f696e646578206f66206e657720677561726469616e20736574206d757374206260008301527f65203e2063757272656e740000000000000000000000000000000000000000006020830152604082019050919050565b6000612557602983612d6e565b91507f696e76616c6964206b657920666f722066617374205363686e6f72722076657260008301527f696669636174696f6e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006125bd601483612d6e565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b60006125fd601983612d6e565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b600061263d601883612d6e565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b600061267d601d83612d6e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006126bd602a83612d6e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612723602683612d6e565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60008201600082015161278f8482612144565b93505060208201516127a18482612174565b93505060408201516127b3848261215c565b935050505050565b6000820160008083015490506127d081612e7e565b6127da8582612144565b945050600183015490506127ed81612e98565b6127f78582612174565b94505061280381612eb2565b61280d858261215c565b94505050505050565b61281f81612dee565b82525050565b61282e81612dee565b82525050565b61283d81612dee565b82525050565b61284c81612df8565b82525050565b61285b81612df8565b82525050565b61286a81612e08565b82525050565b61287981612e08565b82525050565b61288881612e08565b82525050565b61289f61289a82612e08565b612ed6565b82525050565b60006128b182846121ee565b915081905092915050565b60006128c8828461277c565b60608201915081905092915050565b60006128e382846127bb565b60608201915081905092915050565b60006128fe828561288e565b60018201915061290e82846121d7565b6020820191508190509392505050565b6000602082019050612933600083018461219b565b92915050565b600060208201905061294e600083018461218c565b92915050565b6000604082019050612969600083018561218c565b6129766020830184612816565b9392505050565b6000606082019050612992600083018661219b565b61299f602083018561219b565b6129ac6040830184612816565b949350505050565b60006040820190506129c9600083018561219b565b6129d66020830184612816565b9392505050565b60006020820190506129f260008301846121b9565b92915050565b60006020820190508181036000830152612a12818461221f565b905092915050565b60006020820190508181036000830152612a3381612258565b9050919050565b60006020820190508181036000830152612a5381612298565b9050919050565b60006020820190508181036000830152612a73816122d8565b9050919050565b60006020820190508181036000830152612a938161233e565b9050919050565b60006020820190508181036000830152612ab38161237e565b9050919050565b60006020820190508181036000830152612ad3816123e4565b9050919050565b60006020820190508181036000830152612af381612424565b9050919050565b60006020820190508181036000830152612b1381612464565b9050919050565b60006020820190508181036000830152612b33816124a4565b9050919050565b60006020820190508181036000830152612b53816124e4565b9050919050565b60006020820190508181036000830152612b738161254a565b9050919050565b60006020820190508181036000830152612b93816125b0565b9050919050565b60006020820190508181036000830152612bb3816125f0565b9050919050565b60006020820190508181036000830152612bd381612630565b9050919050565b60006020820190508181036000830152612bf381612670565b9050919050565b60006020820190508181036000830152612c13816126b0565b9050919050565b60006020820190508181036000830152612c3381612716565b9050919050565b600060a082019050612c4f6000830188612825565b612c5c6020830187612870565b612c696040830186612825565b612c766060830185612825565b612c8360808301846121aa565b9695505050505050565b6000606082019050612ca26000830186612816565b612caf6020830185612861565b612cbc6040830184612843565b949350505050565b6000602082019050612cd96000830184612843565b92915050565b6000604082019050612cf46000830185612861565b612d0160208301846121c8565b9392505050565b6000608082019050612d1d6000830187612861565b612d2a6020830186612861565b612d3760408301856121c8565b612d446060830184612816565b95945050505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000612db182612dce565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000612e2082612e27565b9050919050565b6000612e3282612e39565b9050919050565b6000612e4482612dce565b9050919050565b60005b83811015612e69578082015181840152602081019050612e4e565b83811115612e78576000848401525b50505050565b6000612e91612e8c83612f06565b612d7f565b9050919050565b6000612eab612ea683612f06565b612d99565b9050919050565b6000612ec5612ec083612f13565b612d89565b9050919050565b6000819050919050565b6000612ee182612ef9565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160001c9050919050565b60008160081c9050919050565b612f2981612da6565b8114612f3457600080fd5b50565b612f4081612db8565b8114612f4b57600080fd5b50565b612f5781612dc4565b8114612f6257600080fd5b50565b612f6e81612dee565b8114612f7957600080fd5b50565b612f8581612df8565b8114612f9057600080fd5b50565b612f9c81612e08565b8114612fa757600080fd5b5056fea264697066735822122047d9c8466a232ae962552bd67dd62980ed6d384b15b4bbc45385e966dcc4ef8d64736f6c634300060c0033",
"deployedBytecode": "0x60806040526004361061008a5760003560e01c80637f04d9e6116100595780637f04d9e6146101c6578063822d82b3146101f157806399da1d3c1461021c578063b6694c2a14610247578063e66fd37314610284576100ca565b80631a2be4da146101055780633bc0aee61461014257806342b0aefa1461016b578063780e2183146101aa576100ca565b366100ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100c190612a5a565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc90612a5a565b60405180910390fd5b34801561011157600080fd5b5061012c60048036038101906101279190611f41565b6102ad565b60405161013991906129dd565b60405180910390f35b34801561014e57600080fd5b5061016960048036038101906101649190612084565b6102cd565b005b34801561017757600080fd5b50610192600480360381019061018d91906120f2565b6109e4565b6040516101a193929190612c8d565b60405180910390f35b6101c460048036038101906101bf9190612048565b610a2b565b005b3480156101d257600080fd5b506101db610b7c565b6040516101e89190612cc4565b60405180910390f35b3480156101fd57600080fd5b50610206610b92565b6040516102139190612cc4565b60405180910390f35b34801561022857600080fd5b50610231610ba8565b60405161023e919061291e565b60405180910390f35b34801561025357600080fd5b5061026e60048036038101906102699190611ff6565b610bcc565b60405161027b919061291e565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a69190611f6a565b610bff565b005b60056020528060005260406000206000915054906101000a900460ff1681565b6000610327600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b905060018160ff161461036f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161036690612ada565b60405180910390fd5b60006103c9600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061105590919063ffffffff16565b90506000610425600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506110b390919063ffffffff16565b90506000610481602587878080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061111190919063ffffffff16565b905060006104dd603988888080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061105590919063ffffffff16565b905042600260049054906101000a900463ffffffff16820163ffffffff161161053b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161053290612afa565b60405180910390fd5b600061059c6039808a8a9050038a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061117e9092919063ffffffff16565b8051906020012090506003600082815260200190815260200160002060009054906101000a900460ff1615610606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105fd90612a3a565b60405180910390fd5b61060e611e10565b600160008763ffffffff1663ffffffff168152602001908152602001600020604051806060016040529081600082015481526020016001820160009054906101000a900460ff1660ff1660ff1681526020016001820160019054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816040015163ffffffff1614806106a9575042816040015163ffffffff16115b6106e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106df90612bba565b60405180910390fd5b73__Schnorr_______________________________63ff51dff282600001518360200151888660001c896040518663ffffffff1660e01b8152600401610732959493929190612c3a565b60206040518083038186803b15801561074a57600080fd5b505af415801561075e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107829190611fcd565b6107c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b890612b1a565b60405180910390fd5b600061081b603d8b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b90506000610877603e8c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610ff790919063ffffffff16565b905060606108d8603f8360ff168e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061117e9092919063ffffffff16565b905060018360ff16141561095457600260009054906101000a900463ffffffff1663ffffffff168963ffffffff1614610946576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093d90612a9a565b60405180910390fd5b61094f81611240565b6109aa565b60108360ff16141561096e5761096981611558565b6109a9565b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a090612a1a565b60405180910390fd5b5b60016003600087815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505050505050565b60016020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16908060010160019054906101000a900463ffffffff16905083565b6000341415610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6690612b7a565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610acb57600080fd5b505af1158015610adf573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b83600060149054906101000a900460ff168634604051610b709493929190612d08565b60405180910390a35050565b600260049054906101000a900463ffffffff1681565b600260009054906101000a900463ffffffff1681565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000831415610c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3a90612b7a565b60405180910390fd5b60008060149054906101000a900460ff1690506000600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e1c578573ffffffffffffffffffffffffffffffffffffffff16639dc29fac33876040518363ffffffff1660e01b8152600401610ce5929190612954565b600060405180830381600087803b158015610cff57600080fd5b505af1158015610d13573d6000803e3d6000fd5b505050508573ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610d5d57600080fd5b505afa158015610d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d95919061211b565b91508573ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ddd57600080fd5b505afa158015610df1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e15919061201f565b9050610f97565b60008673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610e579190612939565b60206040518083038186803b158015610e6f57600080fd5b505afa158015610e83573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea791906120c9565b9050610ed63330888a73ffffffffffffffffffffffffffffffffffffffff1661180e909392919063ffffffff16565b60008773ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f119190612939565b60206040518083038186803b158015610f2957600080fd5b505afa158015610f3d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6191906120c9565b9050610f76828261189790919063ffffffff16565b96508773ffffffffffffffffffffffffffffffffffffffff1660001b925050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b817f84b445260a99044cc9529b3033663c078031a14e31f3c255ff02c62667bab14b8585888a604051610fe79493929190612d08565b60405180910390a3505050505050565b60006001820183511015611040576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103790612aba565b60405180910390fd5b60008260018501015190508091505092915050565b6000600482018351101561109e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109590612aba565b60405180910390fd5b60008260048501015190508091505092915050565b600060208201835110156110fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f390612aba565b60405180910390fd5b60008260208501015190508091505092915050565b6000601482018351101561115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612aba565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b6060818301845110156111c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111bd90612aba565b60405180910390fd5b60608215600081146111e357604051915060208201604052611234565b6040519150601f8416801560200281840101858101878315602002848b0101015b818310156112215780518352602083019250602081019050611204565b50868552601f19601f8301166040525050505b50809150509392505050565b60006112566000836110b390919063ffffffff16565b9050600061126e602084610ff790919063ffffffff16565b60ff169050600061128960218561105590919063ffffffff16565b9050600260009054906101000a900463ffffffff1663ffffffff168163ffffffff16116112eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e290612b3a565b60405180910390fd5b6001807ffffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141901c018310611353576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134a90612b5a565b60405180910390fd5b6001821115611397576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138e90612a7a565b60405180910390fd5b6000600260009054906101000a900463ffffffff16905081600260006101000a81548163ffffffff021916908363ffffffff1602179055506113d7611e10565b60405180606001604052808681526020018560ff168152602001600063ffffffff1681525090508060016000600260009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff021916908360ff16021790555060408201518160010160016101000a81548163ffffffff021916908363ffffffff160217905550905050600260049054906101000a900463ffffffff164201600160008463ffffffff1663ffffffff16815260200190815260200160002060010160016101000a81548163ffffffff021916908363ffffffff160217905550806040516114e891906128bc565b6040518091039020600160008463ffffffff1663ffffffff16815260200190815260200160002060405161151c91906128d7565b60405180910390207f776a7721d091beb15fb219d7be3c92b83fa7c10428af15a7312461bc3bc52e0b60405160405180910390a3505050505050565b600061156e600483610ff790919063ffffffff16565b90506000611586600584610ff790919063ffffffff16565b9050600061159e60328561111190919063ffffffff16565b905060006115b6604686610ff790919063ffffffff16565b905060006115ce6067876110b390919063ffffffff16565b90508360ff168560ff161415611619576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161090612c1a565b60405180910390fd5b600060149054906101000a900460ff1660ff168460ff1614611670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166790612b9a565b60405180910390fd5b600060149054906101000a900460ff1660ff168260ff16146117c15760006116a26047886118e190919063ffffffff16565b9050600083826040516020016116b99291906128f2565b60405160208183030381529060405280519060200120905060006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561174c5761174982868561193f565b90505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b81526004016117879291906129b4565b600060405180830381600087803b1580156117a157600080fd5b505af11580156117b5573d6000803e3d6000fd5b50505050505050611806565b60006117d760538861111190919063ffffffff16565b905061180484838373ffffffffffffffffffffffffffffffffffffffff16611ae29092919063ffffffff16565b505b505050505050565b611891846323b872dd60e01b85858560405160240161182f9392919061297d565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b68565b50505050565b60006118d983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c2f565b905092915050565b6000602082018351101561192a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192190612aba565b60405180910390fd5b60008260208501015190508091505092915050565b60008060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf3000000000000000000000000000000000060288201526037816000f09250508173ffffffffffffffffffffffffffffffffffffffff166302a0958585856040518363ffffffff1660e01b81526004016119fe929190612cdf565b600060405180830381600087803b158015611a1857600080fd5b505af1158015611a2c573d6000803e3d6000fd5b50505050816004600087815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550509392505050565b611b638363a9059cbb60e01b8484604051602401611b019291906129b4565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050611b68565b505050565b6060611bca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611c8a9092919063ffffffff16565b9050600081511115611c2a5780806020019051810190611bea9190611fcd565b611c29576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c2090612bfa565b60405180910390fd5b5b505050565b6000838311158290611c77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6e91906129f8565b60405180910390fd5b5060008385039050809150509392505050565b6060611c998484600085611ca2565b90509392505050565b6060611cad85611dc5565b611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce390612bda565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611d1691906128a5565b60006040518083038185875af1925050503d8060008114611d53576040519150601f19603f3d011682016040523d82523d6000602084013e611d58565b606091505b50915091508115611d6d578092505050611dbd565b600081511115611d805780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db491906129f8565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f9150808214158015611e0757506000801b8214155b92505050919050565b604051806060016040528060008152602001600060ff168152602001600063ffffffff1681525090565b600081359050611e4981612f20565b92915050565b600081519050611e5e81612f37565b92915050565b600081359050611e7381612f4e565b92915050565b600081519050611e8881612f4e565b92915050565b60008083601f840112611ea057600080fd5b8235905067ffffffffffffffff811115611eb957600080fd5b602083019150836001820283011115611ed157600080fd5b9250929050565b600081359050611ee781612f65565b92915050565b600081519050611efc81612f65565b92915050565b600081359050611f1181612f7c565b92915050565b600081359050611f2681612f93565b92915050565b600081519050611f3b81612f93565b92915050565b600060208284031215611f5357600080fd5b6000611f6184828501611e3a565b91505092915050565b60008060008060808587031215611f8057600080fd5b6000611f8e87828801611e3a565b9450506020611f9f87828801611ed8565b9350506040611fb087828801611e64565b9250506060611fc187828801611f17565b91505092959194509250565b600060208284031215611fdf57600080fd5b6000611fed84828501611e4f565b91505092915050565b60006020828403121561200857600080fd5b600061201684828501611e64565b91505092915050565b60006020828403121561203157600080fd5b600061203f84828501611e79565b91505092915050565b6000806040838503121561205b57600080fd5b600061206985828601611e64565b925050602061207a85828601611f17565b9150509250929050565b6000806020838503121561209757600080fd5b600083013567ffffffffffffffff8111156120b157600080fd5b6120bd85828601611e8e565b92509250509250929050565b6000602082840312156120db57600080fd5b60006120e984828501611eed565b91505092915050565b60006020828403121561210457600080fd5b600061211284828501611f02565b91505092915050565b60006020828403121561212d57600080fd5b600061213b84828501611f2c565b91505092915050565b60006121508383612834565b60208301905092915050565b60006121688383612852565b60208301905092915050565b6000612180838361287f565b60208301905092915050565b61219581612e15565b82525050565b6121a481612da6565b82525050565b6121b381612da6565b82525050565b6121c281612db8565b82525050565b6121d181612dc4565b82525050565b6121e86121e382612dc4565b612ecc565b82525050565b60006121f982612d4d565b6122038185612d63565b9350612213818560208601612e4b565b80840191505092915050565b600061222a82612d58565b6122348185612d6e565b9350612244818560208601612e4b565b61224d81612ee8565b840191505092915050565b6000612265601283612d6e565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b60006122a5601883612d6e565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b60006122e5602c83612d6e565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b600061234b601083612d6e565b91507f696e76616c6964207920706172697479000000000000000000000000000000006000830152602082019050919050565b600061238b603983612d6e565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b60006123f1601283612d6e565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612431601883612d6e565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612471600f83612d6e565b91507f56414120686173206578706972656400000000000000000000000000000000006000830152602082019050919050565b60006124b1601583612d6e565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b60006124f1602b83612d6e565b91507f696e646578206f66206e657720677561726469616e20736574206d757374206260008301527f65203e2063757272656e740000000000000000000000000000000000000000006020830152604082019050919050565b6000612557602983612d6e565b91507f696e76616c6964206b657920666f722066617374205363686e6f72722076657260008301527f696669636174696f6e00000000000000000000000000000000000000000000006020830152604082019050919050565b60006125bd601483612d6e565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b60006125fd601983612d6e565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b600061263d601883612d6e565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b600061267d601d83612d6e565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b60006126bd602a83612d6e565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612723602683612d6e565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b60008201600082015161278f8482612144565b93505060208201516127a18482612174565b93505060408201516127b3848261215c565b935050505050565b6000820160008083015490506127d081612e7e565b6127da8582612144565b945050600183015490506127ed81612e98565b6127f78582612174565b94505061280381612eb2565b61280d858261215c565b94505050505050565b61281f81612dee565b82525050565b61282e81612dee565b82525050565b61283d81612dee565b82525050565b61284c81612df8565b82525050565b61285b81612df8565b82525050565b61286a81612e08565b82525050565b61287981612e08565b82525050565b61288881612e08565b82525050565b61289f61289a82612e08565b612ed6565b82525050565b60006128b182846121ee565b915081905092915050565b60006128c8828461277c565b60608201915081905092915050565b60006128e382846127bb565b60608201915081905092915050565b60006128fe828561288e565b60018201915061290e82846121d7565b6020820191508190509392505050565b6000602082019050612933600083018461219b565b92915050565b600060208201905061294e600083018461218c565b92915050565b6000604082019050612969600083018561218c565b6129766020830184612816565b9392505050565b6000606082019050612992600083018661219b565b61299f602083018561219b565b6129ac6040830184612816565b949350505050565b60006040820190506129c9600083018561219b565b6129d66020830184612816565b9392505050565b60006020820190506129f260008301846121b9565b92915050565b60006020820190508181036000830152612a12818461221f565b905092915050565b60006020820190508181036000830152612a3381612258565b9050919050565b60006020820190508181036000830152612a5381612298565b9050919050565b60006020820190508181036000830152612a73816122d8565b9050919050565b60006020820190508181036000830152612a938161233e565b9050919050565b60006020820190508181036000830152612ab38161237e565b9050919050565b60006020820190508181036000830152612ad3816123e4565b9050919050565b60006020820190508181036000830152612af381612424565b9050919050565b60006020820190508181036000830152612b1381612464565b9050919050565b60006020820190508181036000830152612b33816124a4565b9050919050565b60006020820190508181036000830152612b53816124e4565b9050919050565b60006020820190508181036000830152612b738161254a565b9050919050565b60006020820190508181036000830152612b93816125b0565b9050919050565b60006020820190508181036000830152612bb3816125f0565b9050919050565b60006020820190508181036000830152612bd381612630565b9050919050565b60006020820190508181036000830152612bf381612670565b9050919050565b60006020820190508181036000830152612c13816126b0565b9050919050565b60006020820190508181036000830152612c3381612716565b9050919050565b600060a082019050612c4f6000830188612825565b612c5c6020830187612870565b612c696040830186612825565b612c766060830185612825565b612c8360808301846121aa565b9695505050505050565b6000606082019050612ca26000830186612816565b612caf6020830185612861565b612cbc6040830184612843565b949350505050565b6000602082019050612cd96000830184612843565b92915050565b6000604082019050612cf46000830185612861565b612d0160208301846121c8565b9392505050565b6000608082019050612d1d6000830187612861565b612d2a6020830186612861565b612d3760408301856121c8565b612d446060830184612816565b95945050505050565b600081519050919050565b600081519050919050565b600081905092915050565b600082825260208201905092915050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000612db182612dce565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b6000612e2082612e27565b9050919050565b6000612e3282612e39565b9050919050565b6000612e4482612dce565b9050919050565b60005b83811015612e69578082015181840152602081019050612e4e565b83811115612e78576000848401525b50505050565b6000612e91612e8c83612f06565b612d7f565b9050919050565b6000612eab612ea683612f06565b612d99565b9050919050565b6000612ec5612ec083612f13565b612d89565b9050919050565b6000819050919050565b6000612ee182612ef9565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b60008160001c9050919050565b60008160081c9050919050565b612f2981612da6565b8114612f3457600080fd5b50565b612f4081612db8565b8114612f4b57600080fd5b50565b612f5781612dc4565b8114612f6257600080fd5b50565b612f6e81612dee565b8114612f7957600080fd5b50565b612f8581612df8565b8114612f9057600080fd5b50565b612f9c81612e08565b8114612fa757600080fd5b5056fea264697066735822122047d9c8466a232ae962552bd67dd62980ed6d384b15b4bbc45385e966dcc4ef8d64736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "380:8438:2:-:0;;;629:1;612:18;;;;;;;;;;;;;;;;;;;;1696:327;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1835:20;1816:13;:16;1830:1;1816:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1929:1;1908:18;;:22;;;;;;;;;;;;;;;;;;1953:11;1940:10;;:24;;;;;;;;;;;;;;;;;;1996:20;1975:18;;:41;;;;;;;;;;;;;;;;;;1696:327;;;380:8438;;5:134:-1;;89:6;83:13;74:22;;101:33;128:5;101:33;:::i;:::-;68:71;;;;:::o;180:665::-;;308:4;296:9;291:3;287:19;283:30;280:2;;;326:1;323;316:12;280:2;344:20;359:4;344:20;:::i;:::-;335:29;;411:1;443:60;499:3;490:6;479:9;475:22;443:60;:::i;:::-;436:4;429:5;425:16;418:86;374:141;567:2;600:58;654:3;645:6;634:9;630:22;600:58;:::i;:::-;593:4;586:5;582:16;575:84;525:145;731:2;764:59;819:3;810:6;799:9;795:22;764:59;:::i;:::-;757:4;750:5;746:16;739:85;680:155;274:571;;;;:::o;852:134::-;;936:6;930:13;921:22;;948:33;975:5;948:33;:::i;:::-;915:71;;;;:::o;993:132::-;;1076:6;1070:13;1061:22;;1088:32;1114:5;1088:32;:::i;:::-;1055:70;;;;:::o;1132:130::-;;1214:6;1208:13;1199:22;;1226:31;1251:5;1226:31;:::i;:::-;1193:69;;;;:::o;1269:591::-;;;;1445:3;1433:9;1424:7;1420:23;1416:33;1413:2;;;1462:1;1459;1452:12;1413:2;1497:1;1514:92;1598:7;1589:6;1578:9;1574:22;1514:92;:::i;:::-;1504:102;;1476:136;1643:2;1661:64;1717:7;1708:6;1697:9;1693:22;1661:64;:::i;:::-;1651:74;;1622:109;1762:3;1781:63;1836:7;1827:6;1816:9;1812:22;1781:63;:::i;:::-;1771:73;;1741:109;1407:453;;;;;:::o;1867:256::-;;1929:2;1923:9;1913:19;;1967:4;1959:6;1955:17;2066:6;2054:10;2051:22;2030:18;2018:10;2015:34;2012:62;2009:2;;;2087:1;2084;2077:12;2009:2;2107:10;2103:2;2096:22;1907:216;;;;:::o;2130:91::-;;2192:24;2210:5;2192:24;:::i;:::-;2181:35;;2175:46;;;:::o;2228:121::-;;2301:42;2294:5;2290:54;2279:65;;2273:76;;;:::o;2356:72::-;;2418:5;2407:16;;2401:27;;;:::o;2435:88::-;;2507:10;2500:5;2496:22;2485:33;;2479:44;;;:::o;2530:81::-;;2601:4;2594:5;2590:16;2579:27;;2573:38;;;:::o;2618:117::-;2687:24;2705:5;2687:24;:::i;:::-;2680:5;2677:35;2667:2;;2726:1;2723;2716:12;2667:2;2661:74;:::o;2742:117::-;2811:24;2829:5;2811:24;:::i;:::-;2804:5;2801:35;2791:2;;2850:1;2847;2840:12;2791:2;2785:74;:::o;2866:115::-;2934:23;2951:5;2934:23;:::i;:::-;2927:5;2924:34;2914:2;;2972:1;2969;2962:12;2914:2;2908:73;:::o;2988:113::-;3055:22;3071:5;3055:22;:::i;:::-;3048:5;3045:33;3035:2;;3092:1;3089;3082:12;3035:2;3029:72;:::o;380:8438:2:-;;;;;;;",
"deployedSourceMap": "380:8438:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8760:54;;;;;;;;;;:::i;:::-;;;;;;;;380:8438;8675:54;;;;;;;;;;:::i;:::-;;;;;;;;1643:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2029:1797;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1245:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;8227:416;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1427:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1337:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;544:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1589:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7059:1162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1643:46;;;;;;;;;;;;;;;;;;;;;;:::o;2029:1797::-;2099:13;2115:14;2127:1;2115:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2099:30;;2158:1;2147:7;:12;;;2139:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2245:29;2277:15;2290:1;2277:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;2245:47;;2303:17;2323:16;2337:1;2323:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;;;;:::i;:::-;2303:36;;2349:19;2371:17;2385:2;2371:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:17;;;;:::i;:::-;2349:39;;2446:16;2465;2478:2;2465:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:16;;;;:::i;:::-;2446:35;;2571:15;2558:10;;;;;;;;;;;2546:9;:22;:40;;;2538:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2642:12;2667:30;2677:2;2694;2681:3;;:10;;:15;2667:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;;;:::i;:::-;2657:41;;;;;;2642:56;;2717:12;:18;2730:4;2717:18;;;;;;;;;;;;;;;;;;;;;2716:19;2708:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2775:31;;:::i;:::-;2809:13;:37;2823:22;2809:37;;;;;;;;;;;;;;;2775:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2896:1;2864:12;:28;;;:33;;;:83;;;;2932:15;2901:12;:28;;;:46;;;2864:83;2856:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;3007:7;:23;3048:12;:14;;;3080:12;:19;;;3117:9;3152:4;3144:13;;3175:11;3007:193;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2986:252;;;;;;;;;;;;:::i;:::-;;;;;;;;;3249:12;3264:15;3276:2;3264:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;3249:30;;3289:17;3309:15;3321:2;3309:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;3289:35;;3334:20;3357:26;3367:2;3371:11;3357:26;;:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;;:::i;:::-;3334:49;;3431:4;3421:6;:14;;;3417:332;;;3485:18;;;;;;;;;;;3459:44;;:22;:44;;;3451:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;3579:29;3600:7;3579:20;:29::i;:::-;3417:332;;;3639:4;3629:6;:14;;;3625:124;;;3659:20;3671:7;3659:11;:20::i;:::-;3625:124;;;3710:28;;;;;;;;;;:::i;:::-;;;;;;;;3625:124;3417:332;3815:4;3794:12;:18;3807:4;3794:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;2029:1797;;;;;;;;;;;;:::o;1245:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;8227:416::-;8351:1;8338:9;:14;;8330:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;713:42;8421:25;;;8455:9;8421:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8601:10;8593:19;;8585:28;;713:42;8562:20;;8554:29;;8514:122;8530:12;8544:8;;;;;;;;;;;8615:9;8626;8514:122;;;;;;;;;:::i;:::-;;;;;;;;8227:416;;:::o;1427:24::-;;;;;;;;;;;;;:::o;1337:32::-;;;;;;;;;;;;;:::o;544:33::-;;;;;;;;;;;;:::o;1589:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;7059:1162::-;7222:1;7212:6;:11;;7204:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7259:17;7279:8;;;;;;;;;;;7259:28;;7297:21;7332:14;:21;7347:5;7332:21;;;;;;;;;;;;;;;;;;;;;;;;;7328:765;;;7382:5;7369:24;;;7394:10;7406:6;7369:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7454:5;7441:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7427:46;;7516:5;7503:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7487:50;;7328:765;;;7568:21;7599:5;7592:23;;;7624:4;7592:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7568:62;;7644:65;7675:10;7695:4;7702:6;7651:5;7644:30;;;;:65;;;;;;:::i;:::-;7723:20;7753:5;7746:23;;;7778:4;7746:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7723:61;;7998:31;8015:13;7998:12;:16;;:31;;;;:::i;:::-;7989:40;;8075:5;8067:14;;8059:23;;8043:39;;7328:765;;;8182:10;8174:19;;8166:28;;8151:13;8108:106;8124:12;8138:11;8196:9;8207:6;8108:106;;;;;;;;;:::i;:::-;;;;;;;;7059:1162;;;;;;:::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;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;11351:353::-;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;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;3832:930:2:-;3899:17;3919;3934:1;3919:4;:14;;:17;;;;:::i;:::-;3899:37;;3946:16;3965;3978:2;3965:4;:12;;:16;;;;:::i;:::-;3946:35;;;;3991:29;4023:17;4037:2;4023:4;:13;;:17;;;;:::i;:::-;3991:49;;4084:18;;;;;;;;;;;4059:43;;:22;:43;;;4051:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;493:1:1;488;311:66;483:6;;482:12;4168:9:2;:26;4160:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;4270:1;4258:8;:13;;4250:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;4303:29;4335:18;;;;;;;;;;;4303:50;;4384:22;4363:18;;:43;;;;;;;;;;;;;;;;;;4417:35;;:::i;:::-;4455:42;;;;;;;;4467:9;4455:42;;;;4484:8;4455:42;;;;;;4495:1;4455:42;;;;;4417:80;;4543:16;4507:13;:33;4521:18;;;;;;;;;;;4507:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4651:10;;;;;;;;;;;4632:15;4625:36;4569:13;:37;4583:22;4569:37;;;;;;;;;;;;;;;:53;;;:92;;;;;;;;;;;;;;;;;;4738:16;4677:78;;;;;;:::i;:::-;;;;;;;;4699:13;:37;4713:22;4699:37;;;;;;;;;;;;;;;4677:78;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3832:930;;;;;;:::o;4768:1373::-;4869:18;4890:15;4903:1;4890:4;:12;;:15;;;;:::i;:::-;4869:36;;4916:18;4937:15;4950:1;4937:4;:12;;:15;;;;:::i;:::-;4916:36;;5071:22;5096:23;5111:7;5096:4;:14;;:23;;;;:::i;:::-;5071:48;;5130:17;5150:16;5163:2;5150:4;:12;;:16;;;;:::i;:::-;5130:36;;5230:14;5247:19;5262:3;5247:4;:14;;:19;;;;:::i;:::-;5230:36;;5301:12;5285:28;;:12;:28;;;;5277:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5390:8;;;;;;;;;;;5374:24;;:12;:24;;;5366:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5458:8;;;;;;;;;;;5443:23;;:11;:23;;;5439:696;;5482:21;5506:18;5521:2;5506:4;:14;;:18;;;;:::i;:::-;5482:42;;5538:16;5584:11;5597:13;5567:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5557:55;;;;;;5538:74;;5704:21;5728:13;:23;5742:8;5728:23;;;;;;;;;;;;;;;;;;;;;5704:47;;5794:1;5769:27;;:13;:27;;;5765:138;;;5832:56;5851:8;5861:11;5874:13;5832:18;:56::i;:::-;5816:72;;5765:138;5930:13;5917:32;;;5950:14;5966:6;5917:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5439:696;;;;;;6004:21;6028:23;6043:7;6028:4;:14;;:23;;;;:::i;:::-;6004:47;;6066:58;6101:14;6117:6;6073:13;6066:34;;;;:58;;;;;:::i;:::-;5439:696;;4768:1373;;;;;;:::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:5:-;1379:7;1405:43;1409:1;1412;1405:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1398:50;;1321:134;;;;:::o;13895:319:0:-;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;6147:906:2:-;6248:13;6440:19;6470:18;;;;;;;;;;6462:27;;6440:49;;6541:4;6535:11;6573:66;6566:5;6559:81;6678:11;6671:4;6664:5;6660:16;6653:37;6728:66;6721:4;6714:5;6710:16;6703:92;6834:4;6827:5;6824:1;6817:22;6808:31;;6508:341;6900:5;6887:30;;;6918:11;6931:13;6887:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7003:5;6981:13;:19;6995:4;6981:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7042:4;7018:14;:21;7033:5;7018:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6147:906;;;;;;:::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:5:-;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;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;5:130::-;;85:6;72:20;63:29;;97:33;124:5;97:33;:::i;:::-;57:78;;;;:::o;142:128::-;;223:6;217:13;208:22;;235:30;259:5;235:30;:::i;:::-;202:68;;;;:::o;277:130::-;;357:6;344:20;335:29;;369:33;396:5;369:33;:::i;:::-;329:78;;;;:::o;414:134::-;;498:6;492:13;483:22;;510:33;537:5;510:33;:::i;:::-;477:71;;;;:::o;569:336::-;;;683:3;676:4;668:6;664:17;660:27;650:2;;701:1;698;691:12;650:2;734:6;721:20;711:30;;761:18;753:6;750:30;747:2;;;793:1;790;783:12;747:2;827:4;819:6;815:17;803:29;;878:3;870:4;862:6;858:17;848:8;844:32;841:41;838:2;;;895:1;892;885:12;838:2;643:262;;;;;:::o;913:130::-;;993:6;980:20;971:29;;1005:33;1032:5;1005:33;:::i;:::-;965:78;;;;:::o;1050:134::-;;1134:6;1128:13;1119:22;;1146:33;1173:5;1146:33;:::i;:::-;1113:71;;;;:::o;1191:128::-;;1270:6;1257:20;1248:29;;1282:32;1308:5;1282:32;:::i;:::-;1242:77;;;;:::o;1326:126::-;;1404:6;1391:20;1382:29;;1416:31;1441:5;1416:31;:::i;:::-;1376:76;;;;:::o;1459:130::-;;1541:6;1535:13;1526:22;;1553:31;1578:5;1553:31;:::i;:::-;1520:69;;;;:::o;1596:241::-;;1700:2;1688:9;1679:7;1675:23;1671:32;1668:2;;;1716:1;1713;1706:12;1668:2;1751:1;1768:53;1813:7;1804:6;1793:9;1789:22;1768:53;:::i;:::-;1758:63;;1730:97;1662:175;;;;:::o;1844:613::-;;;;;1997:3;1985:9;1976:7;1972:23;1968:33;1965:2;;;2014:1;2011;2004:12;1965:2;2049:1;2066:53;2111:7;2102:6;2091:9;2087:22;2066:53;:::i;:::-;2056:63;;2028:97;2156:2;2174:53;2219:7;2210:6;2199:9;2195:22;2174:53;:::i;:::-;2164:63;;2135:98;2264:2;2282:53;2327:7;2318:6;2307:9;2303:22;2282:53;:::i;:::-;2272:63;;2243:98;2372:2;2390:51;2433:7;2424:6;2413:9;2409:22;2390:51;:::i;:::-;2380:61;;2351:96;1959:498;;;;;;;:::o;2464:257::-;;2576:2;2564:9;2555:7;2551:23;2547:32;2544:2;;;2592:1;2589;2582:12;2544:2;2627:1;2644:61;2697:7;2688:6;2677:9;2673:22;2644:61;:::i;:::-;2634:71;;2606:105;2538:183;;;;:::o;2728:241::-;;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2848:1;2845;2838:12;2800:2;2883:1;2900:53;2945:7;2936:6;2925:9;2921:22;2900:53;:::i;:::-;2890:63;;2862:97;2794:175;;;;:::o;2976:263::-;;3091:2;3079:9;3070:7;3066:23;3062:32;3059:2;;;3107:1;3104;3097:12;3059:2;3142:1;3159:64;3215:7;3206:6;3195:9;3191:22;3159:64;:::i;:::-;3149:74;;3121:108;3053:186;;;;:::o;3246:362::-;;;3365:2;3353:9;3344:7;3340:23;3336:32;3333:2;;;3381:1;3378;3371:12;3333:2;3416:1;3433:53;3478:7;3469:6;3458:9;3454:22;3433:53;:::i;:::-;3423:63;;3395:97;3523:2;3541:51;3584:7;3575:6;3564:9;3560:22;3541:51;:::i;:::-;3531:61;;3502:96;3327:281;;;;;:::o;3615:365::-;;;3738:2;3726:9;3717:7;3713:23;3709:32;3706:2;;;3754:1;3751;3744:12;3706:2;3817:1;3806:9;3802:17;3789:31;3840:18;3832:6;3829:30;3826:2;;;3872:1;3869;3862:12;3826:2;3900:64;3956:7;3947:6;3936:9;3932:22;3900:64;:::i;:::-;3882:82;;;;3768:202;3700:280;;;;;:::o;3987:263::-;;4102:2;4090:9;4081:7;4077:23;4073:32;4070:2;;;4118:1;4115;4108:12;4070:2;4153:1;4170:64;4226:7;4217:6;4206:9;4202:22;4170:64;:::i;:::-;4160:74;;4132:108;4064:186;;;;:::o;4257:239::-;;4360:2;4348:9;4339:7;4335:23;4331:32;4328:2;;;4376:1;4373;4366:12;4328:2;4411:1;4428:52;4472:7;4463:6;4452:9;4448:22;4428:52;:::i;:::-;4418:62;;4390:96;4322:174;;;;:::o;4503:259::-;;4616:2;4604:9;4595:7;4591:23;4587:32;4584:2;;;4632:1;4629;4622:12;4584:2;4667:1;4684:62;4738:7;4729:6;4718:9;4714:22;4684:62;:::i;:::-;4674:72;;4646:106;4578:184;;;;:::o;4770:189::-;;4865:54;4915:3;4907:6;4865:54;:::i;:::-;4948:4;4943:3;4939:14;4925:28;;4858:101;;;;:::o;4968:185::-;;5061:52;5109:3;5101:6;5061:52;:::i;:::-;5142:4;5137:3;5133:14;5119:28;;5054:99;;;;:::o;5162:181::-;;5253:50;5299:3;5291:6;5253:50;:::i;:::-;5332:4;5327:3;5323:14;5309:28;;5246:97;;;;:::o;5351:142::-;5442:45;5481:5;5442:45;:::i;:::-;5437:3;5430:58;5424:69;;:::o;5500:113::-;5583:24;5601:5;5583:24;:::i;:::-;5578:3;5571:37;5565:48;;:::o;5620:121::-;5711:24;5729:5;5711:24;:::i;:::-;5706:3;5699:37;5693:48;;:::o;5748:104::-;5825:21;5840:5;5825:21;:::i;:::-;5820:3;5813:34;5807:45;;:::o;5859:113::-;5942:24;5960:5;5942:24;:::i;:::-;5937:3;5930:37;5924:48;;:::o;5979:152::-;6080:45;6100:24;6118:5;6100:24;:::i;:::-;6080:45;:::i;:::-;6075:3;6068:58;6062:69;;:::o;6138:356::-;;6266:38;6298:5;6266:38;:::i;:::-;6316:88;6397:6;6392:3;6316:88;:::i;:::-;6309:95;;6409:52;6454:6;6449:3;6442:4;6435:5;6431:16;6409:52;:::i;:::-;6482:6;6477:3;6473:16;6466:23;;6246:248;;;;;:::o;6501:347::-;;6613:39;6646:5;6613:39;:::i;:::-;6664:71;6728:6;6723:3;6664:71;:::i;:::-;6657:78;;6740:52;6785:6;6780:3;6773:4;6766:5;6762:16;6740:52;:::i;:::-;6813:29;6835:6;6813:29;:::i;:::-;6808:3;6804:39;6797:46;;6593:255;;;;;:::o;6856:318::-;;7016:67;7080:2;7075:3;7016:67;:::i;:::-;7009:74;;7116:20;7112:1;7107:3;7103:11;7096:41;7165:2;7160:3;7156:12;7149:19;;7002:172;;;:::o;7183:324::-;;7343:67;7407:2;7402:3;7343:67;:::i;:::-;7336:74;;7443:26;7439:1;7434:3;7430:11;7423:47;7498:2;7493:3;7489:12;7482:19;;7329:178;;;:::o;7516:381::-;;7676:67;7740:2;7735:3;7676:67;:::i;:::-;7669:74;;7776:34;7772:1;7767:3;7763:11;7756:55;7845:14;7840:2;7835:3;7831:12;7824:36;7888:2;7883:3;7879:12;7872:19;;7662:235;;;:::o;7906:316::-;;8066:67;8130:2;8125:3;8066:67;:::i;:::-;8059:74;;8166:18;8162:1;8157:3;8153:11;8146:39;8213:2;8208:3;8204:12;8197:19;;8052:170;;;:::o;8231:394::-;;8391:67;8455:2;8450:3;8391:67;:::i;:::-;8384:74;;8491:34;8487:1;8482:3;8478:11;8471:55;8560:27;8555:2;8550:3;8546:12;8539:49;8616:2;8611:3;8607:12;8600:19;;8377:248;;;:::o;8634:318::-;;8794:67;8858:2;8853:3;8794:67;:::i;:::-;8787:74;;8894:20;8890:1;8885:3;8881:11;8874:41;8943:2;8938:3;8934:12;8927:19;;8780:172;;;:::o;8961:324::-;;9121:67;9185:2;9180:3;9121:67;:::i;:::-;9114:74;;9221:26;9217:1;9212:3;9208:11;9201:47;9276:2;9271:3;9267:12;9260:19;;9107:178;;;:::o;9294:315::-;;9454:67;9518:2;9513:3;9454:67;:::i;:::-;9447:74;;9554:17;9550:1;9545:3;9541:11;9534:38;9600:2;9595:3;9591:12;9584:19;;9440:169;;;:::o;9618:321::-;;9778:67;9842:2;9837:3;9778:67;:::i;:::-;9771:74;;9878:23;9874:1;9869:3;9865:11;9858:44;9930:2;9925:3;9921:12;9914:19;;9764:175;;;:::o;9948:380::-;;10108:67;10172:2;10167:3;10108:67;:::i;:::-;10101:74;;10208:34;10204:1;10199:3;10195:11;10188:55;10277:13;10272:2;10267:3;10263:12;10256:35;10319:2;10314:3;10310:12;10303:19;;10094:234;;;:::o;10337:378::-;;10497:67;10561:2;10556:3;10497:67;:::i;:::-;10490:74;;10597:34;10593:1;10588:3;10584:11;10577:55;10666:11;10661:2;10656:3;10652:12;10645:33;10706:2;10701:3;10697:12;10690:19;;10483:232;;;:::o;10724:320::-;;10884:67;10948:2;10943:3;10884:67;:::i;:::-;10877:74;;10984:22;10980:1;10975:3;10971:11;10964:43;11035:2;11030:3;11026:12;11019:19;;10870:174;;;:::o;11053:325::-;;11213:67;11277:2;11272:3;11213:67;:::i;:::-;11206:74;;11313:27;11309:1;11304:3;11300:11;11293:48;11369:2;11364:3;11360:12;11353:19;;11199:179;;;:::o;11387:324::-;;11547:67;11611:2;11606:3;11547:67;:::i;:::-;11540:74;;11647:26;11643:1;11638:3;11634:11;11627:47;11702:2;11697:3;11693:12;11686:19;;11533:178;;;:::o;11720:329::-;;11880:67;11944:2;11939:3;11880:67;:::i;:::-;11873:74;;11980:31;11976:1;11971:3;11967:11;11960:52;12040:2;12035:3;12031:12;12024:19;;11866:183;;;:::o;12058:379::-;;12218:67;12282:2;12277:3;12218:67;:::i;:::-;12211:74;;12318:34;12314:1;12309:3;12305:11;12298:55;12387:12;12382:2;12377:3;12373:12;12366:34;12428:2;12423:3;12419:12;12412:19;;12204:233;;;:::o;12446:375::-;;12606:67;12670:2;12665:3;12606:67;:::i;:::-;12599:74;;12706:34;12702:1;12697:3;12693:11;12686:55;12775:8;12770:2;12765:3;12761:12;12754:30;12812:2;12807:3;12803:12;12796:19;;12592:229;;;:::o;12894:700::-;13061:4;13056:3;13052:14;13141:4;13134:5;13130:16;13124:23;13160:70;13226:3;13212:12;13160:70;:::i;:::-;13153:77;;13081:155;13311:4;13304:5;13300:16;13294:23;13330:66;13392:3;13378:12;13330:66;:::i;:::-;13323:73;;13246:156;13486:4;13479:5;13475:16;13469:23;13505:68;13569:3;13555:12;13505:68;:::i;:::-;13498:75;;13412:167;13034:560;;;:::o;13666:880::-;13830:4;13825:3;13821:14;13857:1;13915:4;13908:5;13904:16;13898:23;13885:36;;13947:55;13992:9;13947:55;:::i;:::-;14015:70;14081:3;14067:12;14015:70;:::i;:::-;14008:77;;13868:223;14153:4;14146:5;14142:16;14136:23;14123:36;;14185:53;14228:9;14185:53;:::i;:::-;14251:66;14313:3;14299:12;14251:66;:::i;:::-;14244:73;;14101:222;14390:54;14434:9;14390:54;:::i;:::-;14457:68;14521:3;14507:12;14457:68;:::i;:::-;14450:75;;14333:198;13803:743;;;;:::o;14553:113::-;14636:24;14654:5;14636:24;:::i;:::-;14631:3;14624:37;14618:48;;:::o;14673:121::-;14764:24;14782:5;14764:24;:::i;:::-;14759:3;14752:37;14746:48;;:::o;14801:111::-;14882:24;14900:5;14882:24;:::i;:::-;14877:3;14870:37;14864:48;;:::o;14919:110::-;15000:23;15017:5;15000:23;:::i;:::-;14995:3;14988:36;14982:47;;:::o;15036:108::-;15115:23;15132:5;15115:23;:::i;:::-;15110:3;15103:36;15097:47;;:::o;15151:107::-;15230:22;15246:5;15230:22;:::i;:::-;15225:3;15218:35;15212:46;;:::o;15265:115::-;15352:22;15368:5;15352:22;:::i;:::-;15347:3;15340:35;15334:46;;:::o;15387:105::-;15464:22;15480:5;15464:22;:::i;:::-;15459:3;15452:35;15446:46;;:::o;15499:144::-;15596:41;15614:22;15630:5;15614:22;:::i;:::-;15596:41;:::i;:::-;15591:3;15584:54;15578:65;;:::o;15650:271::-;;15803:93;15892:3;15883:6;15803:93;:::i;:::-;15796:100;;15913:3;15906:10;;15784:137;;;;:::o;15928:365::-;;16112:131;16239:3;16230:6;16112:131;:::i;:::-;16265:2;16260:3;16256:12;16249:19;;16285:3;16278:10;;16100:193;;;;:::o;16300:359::-;;16481:128;16605:3;16596:6;16481:128;:::i;:::-;16631:2;16626:3;16622:12;16615:19;;16651:3;16644:10;;16469:190;;;;:::o;16666:383::-;;16818:71;16885:3;16876:6;16818:71;:::i;:::-;16911:1;16906:3;16902:11;16895:18;;16924:75;16995:3;16986:6;16924:75;:::i;:::-;17021:2;17016:3;17012:12;17005:19;;17041:3;17034:10;;16806:243;;;;;:::o;17056:222::-;;17183:2;17172:9;17168:18;17160:26;;17197:71;17265:1;17254:9;17250:17;17241:6;17197:71;:::i;:::-;17154:124;;;;:::o;17285:238::-;;17420:2;17409:9;17405:18;17397:26;;17434:79;17510:1;17499:9;17495:17;17486:6;17434:79;:::i;:::-;17391:132;;;;:::o;17530:349::-;;17693:2;17682:9;17678:18;17670:26;;17707:79;17783:1;17772:9;17768:17;17759:6;17707:79;:::i;:::-;17797:72;17865:2;17854:9;17850:18;17841:6;17797:72;:::i;:::-;17664:215;;;;;:::o;17886:444::-;;18069:2;18058:9;18054:18;18046:26;;18083:71;18151:1;18140:9;18136:17;18127:6;18083:71;:::i;:::-;18165:72;18233:2;18222:9;18218:18;18209:6;18165:72;:::i;:::-;18248;18316:2;18305:9;18301:18;18292:6;18248:72;:::i;:::-;18040:290;;;;;;:::o;18337:333::-;;18492:2;18481:9;18477:18;18469:26;;18506:71;18574:1;18563:9;18559:17;18550:6;18506:71;:::i;:::-;18588:72;18656:2;18645:9;18641:18;18632:6;18588:72;:::i;:::-;18463:207;;;;;:::o;18677:210::-;;18798:2;18787:9;18783:18;18775:26;;18812:65;18874:1;18863:9;18859:17;18850:6;18812:65;:::i;:::-;18769:118;;;;:::o;18894:310::-;;19041:2;19030:9;19026:18;19018:26;;19091:9;19085:4;19081:20;19077:1;19066:9;19062:17;19055:47;19116:78;19189:4;19180:6;19116:78;:::i;:::-;19108:86;;19012:192;;;;:::o;19211:416::-;;19411:2;19400:9;19396:18;19388:26;;19461:9;19455:4;19451:20;19447:1;19436:9;19432:17;19425:47;19486:131;19612:4;19486:131;:::i;:::-;19478:139;;19382:245;;;:::o;19634:416::-;;19834:2;19823:9;19819:18;19811:26;;19884:9;19878:4;19874:20;19870:1;19859:9;19855:17;19848:47;19909:131;20035:4;19909:131;:::i;:::-;19901:139;;19805:245;;;:::o;20057:416::-;;20257:2;20246:9;20242:18;20234:26;;20307:9;20301:4;20297:20;20293:1;20282:9;20278:17;20271:47;20332:131;20458:4;20332:131;:::i;:::-;20324:139;;20228:245;;;:::o;20480:416::-;;20680:2;20669:9;20665:18;20657:26;;20730:9;20724:4;20720:20;20716:1;20705:9;20701:17;20694:47;20755:131;20881:4;20755:131;:::i;:::-;20747:139;;20651:245;;;:::o;20903:416::-;;21103:2;21092:9;21088:18;21080:26;;21153:9;21147:4;21143:20;21139:1;21128:9;21124:17;21117:47;21178:131;21304:4;21178:131;:::i;:::-;21170:139;;21074:245;;;:::o;21326:416::-;;21526:2;21515:9;21511:18;21503:26;;21576:9;21570:4;21566:20;21562:1;21551:9;21547:17;21540:47;21601:131;21727:4;21601:131;:::i;:::-;21593:139;;21497:245;;;:::o;21749:416::-;;21949:2;21938:9;21934:18;21926:26;;21999:9;21993:4;21989:20;21985:1;21974:9;21970:17;21963:47;22024:131;22150:4;22024:131;:::i;:::-;22016:139;;21920:245;;;:::o;22172:416::-;;22372:2;22361:9;22357:18;22349:26;;22422:9;22416:4;22412:20;22408:1;22397:9;22393:17;22386:47;22447:131;22573:4;22447:131;:::i;:::-;22439:139;;22343:245;;;:::o;22595:416::-;;22795:2;22784:9;22780:18;22772:26;;22845:9;22839:4;22835:20;22831:1;22820:9;22816:17;22809:47;22870:131;22996:4;22870:131;:::i;:::-;22862:139;;22766:245;;;:::o;23018:416::-;;23218:2;23207:9;23203:18;23195:26;;23268:9;23262:4;23258:20;23254:1;23243:9;23239:17;23232:47;23293:131;23419:4;23293:131;:::i;:::-;23285:139;;23189:245;;;:::o;23441:416::-;;23641:2;23630:9;23626:18;23618:26;;23691:9;23685:4;23681:20;23677:1;23666:9;23662:17;23655:47;23716:131;23842:4;23716:131;:::i;:::-;23708:139;;23612:245;;;:::o;23864:416::-;;24064:2;24053:9;24049:18;24041:26;;24114:9;24108:4;24104:20;24100:1;24089:9;24085:17;24078:47;24139:131;24265:4;24139:131;:::i;:::-;24131:139;;24035:245;;;:::o;24287:416::-;;24487:2;24476:9;24472:18;24464:26;;24537:9;24531:4;24527:20;24523:1;24512:9;24508:17;24501:47;24562:131;24688:4;24562:131;:::i;:::-;24554:139;;24458:245;;;:::o;24710:416::-;;24910:2;24899:9;24895:18;24887:26;;24960:9;24954:4;24950:20;24946:1;24935:9;24931:17;24924:47;24985:131;25111:4;24985:131;:::i;:::-;24977:139;;24881:245;;;:::o;25133:416::-;;25333:2;25322:9;25318:18;25310:26;;25383:9;25377:4;25373:20;25369:1;25358:9;25354:17;25347:47;25408:131;25534:4;25408:131;:::i;:::-;25400:139;;25304:245;;;:::o;25556:416::-;;25756:2;25745:9;25741:18;25733:26;;25806:9;25800:4;25796:20;25792:1;25781:9;25777:17;25770:47;25831:131;25957:4;25831:131;:::i;:::-;25823:139;;25727:245;;;:::o;25979:416::-;;26179:2;26168:9;26164:18;26156:26;;26229:9;26223:4;26219:20;26215:1;26204:9;26200:17;26193:47;26254:131;26380:4;26254:131;:::i;:::-;26246:139;;26150:245;;;:::o;26402:708::-;;26645:3;26634:9;26630:19;26622:27;;26660:79;26736:1;26725:9;26721:17;26712:6;26660:79;:::i;:::-;26750:76;26822:2;26811:9;26807:18;26798:6;26750:76;:::i;:::-;26837:80;26913:2;26902:9;26898:18;26889:6;26837:80;:::i;:::-;26928;27004:2;26993:9;26989:18;26980:6;26928:80;:::i;:::-;27019:81;27095:3;27084:9;27080:19;27071:6;27019:81;:::i;:::-;26616:494;;;;;;;;:::o;27117:432::-;;27294:2;27283:9;27279:18;27271:26;;27308:71;27376:1;27365:9;27361:17;27352:6;27308:71;:::i;:::-;27390:68;27454:2;27443:9;27439:18;27430:6;27390:68;:::i;:::-;27469:70;27535:2;27524:9;27520:18;27511:6;27469:70;:::i;:::-;27265:284;;;;;;:::o;27556:218::-;;27681:2;27670:9;27666:18;27658:26;;27695:69;27761:1;27750:9;27746:17;27737:6;27695:69;:::i;:::-;27652:122;;;;:::o;27781:325::-;;27932:2;27921:9;27917:18;27909:26;;27946:67;28010:1;27999:9;27995:17;27986:6;27946:67;:::i;:::-;28024:72;28092:2;28081:9;28077:18;28068:6;28024:72;:::i;:::-;27903:203;;;;;:::o;28113:540::-;;28316:3;28305:9;28301:19;28293:27;;28331:67;28395:1;28384:9;28380:17;28371:6;28331:67;:::i;:::-;28409:68;28473:2;28462:9;28458:18;28449:6;28409:68;:::i;:::-;28488:72;28556:2;28545:9;28541:18;28532:6;28488:72;:::i;:::-;28571;28639:2;28628:9;28624:18;28615:6;28571:72;:::i;:::-;28287:366;;;;;;;:::o;28660:121::-;;28753:5;28747:12;28737:22;;28718:63;;;:::o;28788:122::-;;28882:5;28876:12;28866:22;;28847:63;;;:::o;28918:144::-;;29053:3;29038:18;;29031:31;;;;:::o;29071:163::-;;29186:6;29181:3;29174:19;29223:4;29218:3;29214:14;29199:29;;29167:67;;;;:::o;29242:85::-;;29317:5;29306:16;;29300:27;;;:::o;29334:101::-;;29419:10;29412:5;29408:22;29397:33;;29391:44;;;:::o;29442:94::-;;29526:4;29519:5;29515:16;29504:27;;29498:38;;;:::o;29543:91::-;;29605:24;29623:5;29605:24;:::i;:::-;29594:35;;29588:46;;;:::o;29641:85::-;;29714:5;29707:13;29700:21;29689:32;;29683:43;;;:::o;29733:72::-;;29795:5;29784:16;;29778:27;;;:::o;29812:121::-;;29885:42;29878:5;29874:54;29863:65;;29857:76;;;:::o;29940:72::-;;30002:5;29991:16;;29985:27;;;:::o;30019:88::-;;30091:10;30084:5;30080:22;30069:33;;30063:44;;;:::o;30114:81::-;;30185:4;30178:5;30174:16;30163:27;;30157:38;;;:::o;30202:129::-;;30289:37;30320:5;30289:37;:::i;:::-;30276:50;;30270:61;;;:::o;30338:121::-;;30417:37;30448:5;30417:37;:::i;:::-;30404:50;;30398:61;;;:::o;30466:108::-;;30545:24;30563:5;30545:24;:::i;:::-;30532:37;;30526:48;;;:::o;30582:268::-;30647:1;30654:101;30668:6;30665:1;30662:13;30654:101;;;30744:1;30739:3;30735:11;30729:18;30725:1;30720:3;30716:11;30709:39;30690:2;30687:1;30683:10;30678:15;;30654:101;;;30770:6;30767:1;30764:13;30761:2;;;30835:1;30826:6;30821:3;30817:16;30810:27;30761:2;30631:219;;;;:::o;30858:161::-;;30948:66;30979:34;31002:10;30979:34;:::i;:::-;30948:66;:::i;:::-;30939:75;;30933:86;;;:::o;31026:157::-;;31114:64;31143:34;31166:10;31143:34;:::i;:::-;31114:64;:::i;:::-;31105:73;;31099:84;;;:::o;31190:159::-;;31279:65;31309:34;31332:10;31309:34;:::i;:::-;31279:65;:::i;:::-;31270:74;;31264:85;;;:::o;31356:74::-;;31420:5;31409:16;;31403:27;;;:::o;31437:88::-;;31499:21;31514:5;31499:21;:::i;:::-;31488:32;;31482:43;;;:::o;31532:97::-;;31620:2;31616:7;31611:2;31604:5;31600:14;31596:28;31586:38;;31580:49;;;:::o;31637:96::-;;31717:5;31712:3;31708:15;31686:37;;31680:53;;;:::o;31741:102::-;;31827:5;31824:1;31820:13;31798:35;;31792:51;;;:::o;31851:102::-;;31937:5;31934:1;31930:13;31908:35;;31902:51;;;:::o;31961:117::-;32030:24;32048:5;32030:24;:::i;:::-;32023:5;32020:35;32010:2;;32069:1;32066;32059:12;32010:2;32004:74;:::o;32085:111::-;32151:21;32166:5;32151:21;:::i;:::-;32144:5;32141:32;32131:2;;32187:1;32184;32177:12;32131:2;32125:71;:::o;32203:117::-;32272:24;32290:5;32272:24;:::i;:::-;32265:5;32262:35;32252:2;;32311:1;32308;32301:12;32252:2;32246:74;:::o;32327:117::-;32396:24;32414:5;32396:24;:::i;:::-;32389:5;32386:35;32376:2;;32435:1;32432;32425:12;32376:2;32370:74;:::o;32451:115::-;32519:23;32536:5;32519:23;:::i;:::-;32512:5;32509:34;32499:2;;32557:1;32554;32547:12;32499:2;32493:73;:::o;32573:113::-;32640:22;32656:5;32640:22;:::i;:::-;32633:5;32630:33;32620:2;;32677:1;32674;32667:12;32620:2;32614:72;:::o",
"source": "// contracts/Wormhole.sol\n// SPDX-License-Identifier: Apache 2\n\npragma solidity ^0.6.0;\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/SafeERC20.sol\";\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"./BytesLib.sol\";\nimport \"./SchnorrSECP256K1.sol\";\nimport \"./WrappedAsset.sol\";\n\ncontract Wormhole {\n using SafeERC20 for IERC20;\n using BytesLib for bytes;\n using SafeMath for uint256;\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 uint256 x;\n uint8 parity;\n uint32 expiration_time;\n }\n\n event LogGuardianSetChanged(\n GuardianSet indexed oldGuardian,\n GuardianSet indexed newGuardian\n );\n\n event LogTokensLocked(\n uint8 target_chain,\n uint8 token_chain,\n bytes32 indexed token,\n bytes32 indexed sender,\n bytes32 recipient,\n uint256 amount\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 an vaa is valid in seconds\n uint32 public vaa_expiry;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) 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 _vaa_expiry) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n vaa_expiry = _vaa_expiry;\n\n wrappedAssetMaster = wrapped_asset_master;\n }\n\n function submitVAA(\n bytes calldata vaa\n ) public {\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 signature = vaa.toUint256(5);\n address sig_address = vaa.toAddress(37);\n\n // Load 4 bytes starting from index 77\n uint32 timestamp = vaa.toUint32(57);\n\n // Verify that the VAA is still valid\n require(timestamp + vaa_expiry > block.timestamp, \"VAA has expired\");\n\n // Hash the body\n bytes32 hash = keccak256(vaa.slice(57, vaa.length - 57));\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(\n Schnorr.verifySignature(\n guardian_set.x,\n guardian_set.parity,\n signature,\n uint256(hash),\n sig_address\n ),\n \"VAA signature invalid\");\n\n uint8 action = vaa.toUint8(61);\n uint8 payload_len = vaa.toUint8(62);\n bytes memory payload = vaa.slice(63, payload_len);\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 uint256 new_key_x = data.toUint256(0);\n uint256 y_parity = data.toUint8(32);\n uint32 new_guardian_set_index = data.toUint32(33);\n\n require(new_guardian_set_index > guardian_set_index, \"index of new guardian set must be > current\");\n require(new_key_x < Schnorr.HALF_Q, \"invalid key for fast Schnorr verification\");\n require(y_parity <= 1, \"invalid y parity\");\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_key_x, uint8(y_parity), 0);\n guardian_sets[guardian_set_index] = new_guardian_set;\n guardian_sets[old_guardian_set_index].expiration_time = uint32(block.timestamp) + vaa_expiry;\n\n emit LogGuardianSetChanged(guardian_sets[old_guardian_set_index], new_guardian_set);\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(103);\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 wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address);\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) 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 := create(0, clone, 0x37)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address);\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 ) public {\n require(amount != 0, \"amount must not be 0\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\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 asset_address = bytes32(uint256(asset));\n }\n\n emit LogTokensLocked(target_chain, asset_chain, asset_address, bytes32(uint256(msg.sender)), recipient, amount);\n }\n\n function lockETH(\n bytes32 recipient,\n uint8 target_chain\n ) public payable {\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, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, msg.value);\n }\n\n\nfallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\nreceive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\nfunction deposit() external payable;\n\nfunction 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": [
1192
],
"Wormhole": [
1181
]
},
"id": 1193,
"license": "Apache 2",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 455,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "64:23:2"
},
{
"id": 456,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "88:33:2"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 457,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 2034,
"src": "123:56:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"id": 458,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 2247,
"src": "180:59:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"id": 459,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 1956,
"src": "240:51:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol",
"file": "./BytesLib.sol",
"id": 460,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 334,
"src": "292:24:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/SchnorrSECP256K1.sol",
"file": "./SchnorrSECP256K1.sol",
"id": 461,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 454,
"src": "317:32:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol",
"file": "./WrappedAsset.sol",
"id": 462,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 1737,
"src": "350:28:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1181,
"linearizedBaseContracts": [
1181
],
"name": "Wormhole",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 465,
"libraryName": {
"contractScope": null,
"id": 463,
"name": "SafeERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2246,
"src": "410:9:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$2246",
"typeString": "library SafeERC20"
}
},
"nodeType": "UsingForDirective",
"src": "404:27:2",
"typeName": {
"contractScope": null,
"id": 464,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2033,
"src": "424:6:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
}
},
{
"id": 468,
"libraryName": {
"contractScope": null,
"id": 466,
"name": "BytesLib",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 333,
"src": "442:8:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BytesLib_$333",
"typeString": "library BytesLib"
}
},
"nodeType": "UsingForDirective",
"src": "436:25:2",
"typeName": {
"id": 467,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "455:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
{
"id": 471,
"libraryName": {
"contractScope": null,
"id": 469,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1955,
"src": "472:8:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$1955",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "466:27:2",
"typeName": {
"id": 470,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "485:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"functionSelector": "99da1d3c",
"id": 473,
"mutability": "mutable",
"name": "wrappedAssetMaster",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "544:33:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 472,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "544:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 476,
"mutability": "mutable",
"name": "CHAIN_ID",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "612:18:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 474,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "612:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "32",
"id": 475,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "629:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "internal"
},
{
"constant": true,
"id": 479,
"mutability": "constant",
"name": "WETHAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "682:73:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 477,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "682:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332",
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "713:42:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
},
"visibility": "internal"
},
{
"canonicalName": "Wormhole.GuardianSet",
"id": 486,
"members": [
{
"constant": false,
"id": 481,
"mutability": "mutable",
"name": "x",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "791:9:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 480,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "791:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 483,
"mutability": "mutable",
"name": "parity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "810:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 482,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "810:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 485,
"mutability": "mutable",
"name": "expiration_time",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "832:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 484,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "832:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "GuardianSet",
"nodeType": "StructDefinition",
"scope": 1181,
"src": "762:99:2",
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 492,
"name": "LogGuardianSetChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 491,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 488,
"indexed": true,
"mutability": "mutable",
"name": "oldGuardian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 492,
"src": "904:31:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 487,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "904:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 490,
"indexed": true,
"mutability": "mutable",
"name": "newGuardian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 492,
"src": "945:31:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 489,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "945:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "894:88:2"
},
"src": "867:116:2"
},
{
"anonymous": false,
"documentation": null,
"id": 506,
"name": "LogTokensLocked",
"nodeType": "EventDefinition",
"parameters": {
"id": 505,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 494,
"indexed": false,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1020:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 493,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1020:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 496,
"indexed": false,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1048:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 495,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1048:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 498,
"indexed": true,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1075:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 497,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1075:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 500,
"indexed": true,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1106:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 499,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1106:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 502,
"indexed": false,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1138:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 501,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1138:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 504,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1165:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 503,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1165:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1010:175:2"
},
"src": "989:197:2"
},
{
"constant": false,
"functionSelector": "42b0aefa",
"id": 510,
"mutability": "mutable",
"name": "guardian_sets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1245:51:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"typeName": {
"id": 509,
"keyType": {
"id": 507,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1253:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Mapping",
"src": "1245:30:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"valueType": {
"contractScope": null,
"id": 508,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "1263:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "822d82b3",
"id": 512,
"mutability": "mutable",
"name": "guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1337:32:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 511,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1337:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "7f04d9e6",
"id": 514,
"mutability": "mutable",
"name": "vaa_expiry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1427:24:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 513,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1427:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 518,
"mutability": "mutable",
"name": "consumedVAAs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1497:37:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 517,
"keyType": {
"id": 515,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1505:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1497:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 516,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1516:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "b6694c2a",
"id": 522,
"mutability": "mutable",
"name": "wrappedAssets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1589:48:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"typeName": {
"id": 521,
"keyType": {
"id": 519,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1597:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1589:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 520,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1608:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1a2be4da",
"id": 526,
"mutability": "mutable",
"name": "isWrappedAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1643:46:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 525,
"keyType": {
"id": 523,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1651:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1643:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 524,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1662:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 553,
"nodeType": "Block",
"src": "1806:217:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 535,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "1816:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 537,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 536,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1830:1:2",
"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": "1816:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 538,
"name": "initial_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 528,
"src": "1835:20:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "1816:39:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 540,
"nodeType": "ExpressionStatement",
"src": "1816:39:2"
},
{
"expression": {
"argumentTypes": null,
"id": 543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 541,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "1908:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1929:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1908:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 544,
"nodeType": "ExpressionStatement",
"src": "1908:22:2"
},
{
"expression": {
"argumentTypes": null,
"id": 547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 545,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "1940:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 546,
"name": "_vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 532,
"src": "1953:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "1940:24:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 548,
"nodeType": "ExpressionStatement",
"src": "1940:24:2"
},
{
"expression": {
"argumentTypes": null,
"id": 551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 549,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "1975:18:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 550,
"name": "wrapped_asset_master",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "1996:20:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1975:41:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 552,
"nodeType": "ExpressionStatement",
"src": "1975:41:2"
}
]
},
"documentation": null,
"id": 554,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 533,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 528,
"mutability": "mutable",
"name": "initial_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1708:39:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 527,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "1708:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 530,
"mutability": "mutable",
"name": "wrapped_asset_master",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1749:28:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 529,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1749:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 532,
"mutability": "mutable",
"name": "_vaa_expiry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1779:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 531,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1779:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1707:91:2"
},
"returnParameters": {
"id": 534,
"nodeType": "ParameterList",
"parameters": [],
"src": "1806:0:2"
},
"scope": 1181,
"src": "1696:327:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 727,
"nodeType": "Block",
"src": "2089:1737:2",
"statements": [
{
"assignments": [
560
],
"declarations": [
{
"constant": false,
"id": 560,
"mutability": "mutable",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2099:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 559,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2099:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 565,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2127:1:2",
"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": 561,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2115:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2115:11:2",
"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": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2115:14:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2099:30:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 567,
"name": "version",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 560,
"src": "2147:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2158:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2147:12:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412076657273696f6e20696e636f6d70617469626c65",
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2161:26:2",
"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": 566,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2139:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 571,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2139:49:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 572,
"nodeType": "ExpressionStatement",
"src": "2139:49:2"
},
{
"assignments": [
574
],
"declarations": [
{
"constant": false,
"id": 574,
"mutability": "mutable",
"name": "vaa_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2245:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 573,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2245:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 579,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 577,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2290:1:2",
"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": 575,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2277:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 576,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2277:12:2",
"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": 578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2277:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2245:47:2"
},
{
"assignments": [
581
],
"declarations": [
{
"constant": false,
"id": 581,
"mutability": "mutable",
"name": "signature",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2303:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 580,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2303:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 586,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2337:1:2",
"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": 582,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2323:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "2323:13:2",
"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": 585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2323:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2303:36:2"
},
{
"assignments": [
588
],
"declarations": [
{
"constant": false,
"id": 588,
"mutability": "mutable",
"name": "sig_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2349:19:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 587,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2349:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 593,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3337",
"id": 591,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2385:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_37_by_1",
"typeString": "int_const 37"
},
"value": "37"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_37_by_1",
"typeString": "int_const 37"
}
],
"expression": {
"argumentTypes": null,
"id": 589,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2371:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "2371:13:2",
"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": 592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2371:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2349:39:2"
},
{
"assignments": [
595
],
"declarations": [
{
"constant": false,
"id": 595,
"mutability": "mutable",
"name": "timestamp",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2446:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 594,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2446:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 600,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3537",
"id": 598,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2478:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
}
],
"expression": {
"argumentTypes": null,
"id": 596,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2465:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2465:12:2",
"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": 599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2465:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2446:35:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 602,
"name": "timestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 595,
"src": "2546:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 603,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "2558:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "2546:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 605,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "2571:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 606,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2571:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2546:40:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141206861732065787069726564",
"id": 608,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2588:17:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86",
"typeString": "literal_string \"VAA has expired\""
},
"value": "VAA has expired"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86",
"typeString": "literal_string \"VAA has expired\""
}
],
"id": 601,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2538:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2538:68:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 610,
"nodeType": "ExpressionStatement",
"src": "2538:68:2"
},
{
"assignments": [
612
],
"declarations": [
{
"constant": false,
"id": 612,
"mutability": "mutable",
"name": "hash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2642:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 611,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2642:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 623,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3537",
"id": 616,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2677:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 617,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2681:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2681:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3537",
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2694:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
},
"src": "2681:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 614,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2667:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "2667:9:2",
"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": 621,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2667:30:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 613,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "2657:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2657:41:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2642:56:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2716:19:2",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 625,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "2717:12:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 627,
"indexExpression": {
"argumentTypes": null,
"id": 626,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "2730:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2717:18:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412077617320616c7265616479206578656375746564",
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2737:26:2",
"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": 624,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2708:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 630,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2708:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 631,
"nodeType": "ExpressionStatement",
"src": "2708:56:2"
},
{
"assignments": [
633
],
"declarations": [
{
"constant": false,
"id": 633,
"mutability": "mutable",
"name": "guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2775:31:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 632,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "2775:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 637,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 634,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "2809:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 636,
"indexExpression": {
"argumentTypes": null,
"id": 635,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 574,
"src": "2823:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2809:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2775:71:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 639,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "2864:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 640,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "2864:28:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2896:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2864:33:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 643,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "2901:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 644,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "2901:28:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 645,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "2932:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2932:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2901:46:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2864:83:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "677561726469616e20736574206861732065787069726564",
"id": 649,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2949:26:2",
"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": 638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2856:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2856:120:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 651,
"nodeType": "ExpressionStatement",
"src": "2856:120:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 655,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "3048:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 656,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "x",
"nodeType": "MemberAccess",
"referencedDeclaration": 481,
"src": "3048:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 657,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "3080:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 658,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "parity",
"nodeType": "MemberAccess",
"referencedDeclaration": 483,
"src": "3080:19:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 659,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 581,
"src": "3117:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 662,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "3152:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3144:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 660,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3144:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3144:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 664,
"name": "sig_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 588,
"src": "3175:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 653,
"name": "Schnorr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 453,
"src": "3007:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Schnorr_$453_$",
"typeString": "type(library Schnorr)"
}
},
"id": 654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "verifySignature",
"nodeType": "MemberAccess",
"referencedDeclaration": 452,
"src": "3007:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint8_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_bool_$",
"typeString": "function (uint256,uint8,uint256,uint256,address) pure returns (bool)"
}
},
"id": 665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3007:193:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141207369676e617475726520696e76616c6964",
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3214:23:2",
"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": 652,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2986:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2986:252:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 668,
"nodeType": "ExpressionStatement",
"src": "2986:252:2"
},
{
"assignments": [
670
],
"declarations": [
{
"constant": false,
"id": 670,
"mutability": "mutable",
"name": "action",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3249:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 669,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3249:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 675,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3631",
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3276:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_61_by_1",
"typeString": "int_const 61"
},
"value": "61"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_61_by_1",
"typeString": "int_const 61"
}
],
"expression": {
"argumentTypes": null,
"id": 671,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3264:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 672,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3264:11:2",
"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": 674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3264:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3249:30:2"
},
{
"assignments": [
677
],
"declarations": [
{
"constant": false,
"id": 677,
"mutability": "mutable",
"name": "payload_len",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3289:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 676,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3289:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 682,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3632",
"id": 680,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3321:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_62_by_1",
"typeString": "int_const 62"
},
"value": "62"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_62_by_1",
"typeString": "int_const 62"
}
],
"expression": {
"argumentTypes": null,
"id": 678,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3309:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3309:11:2",
"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": 681,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3309:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3289:35:2"
},
{
"assignments": [
684
],
"declarations": [
{
"constant": false,
"id": 684,
"mutability": "mutable",
"name": "payload",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3334:20:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 683,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3334:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 690,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3633",
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3367:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_63_by_1",
"typeString": "int_const 63"
},
"value": "63"
},
{
"argumentTypes": null,
"id": 688,
"name": "payload_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 677,
"src": "3371:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_63_by_1",
"typeString": "int_const 63"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 685,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3357:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "3357:9:2",
"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": 689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3357:26:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3334:49:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 691,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "3421:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783031",
"id": 692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3431:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x01"
},
"src": "3421:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 706,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "3629:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783130",
"id": 707,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3639:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "0x10"
},
"src": "3629:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 718,
"nodeType": "Block",
"src": "3696:53:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "696e76616c69642056414120616374696f6e",
"id": 715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3717:20:2",
"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": 714,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "3710:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 716,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3710:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 717,
"nodeType": "ExpressionStatement",
"src": "3710:28:2"
}
]
},
"id": 719,
"nodeType": "IfStatement",
"src": "3625:124:2",
"trueBody": {
"id": 713,
"nodeType": "Block",
"src": "3645:45:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 710,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 684,
"src": "3671:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 709,
"name": "vaaTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 949,
"src": "3659:11:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 711,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3659:20:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 712,
"nodeType": "ExpressionStatement",
"src": "3659:20:2"
}
]
}
},
"id": 720,
"nodeType": "IfStatement",
"src": "3417:332:2",
"trueBody": {
"id": 705,
"nodeType": "Block",
"src": "3437:182:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 697,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 695,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 574,
"src": "3459:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 696,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "3485:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "3459:44:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574",
"id": 698,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3505:59:2",
"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": 694,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3451:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 699,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3451:114:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 700,
"nodeType": "ExpressionStatement",
"src": "3451:114:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 702,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 684,
"src": "3600:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 701,
"name": "vaaUpdateGuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 822,
"src": "3579:20:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3579:29:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 704,
"nodeType": "ExpressionStatement",
"src": "3579:29:2"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 721,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "3794:12:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 723,
"indexExpression": {
"argumentTypes": null,
"id": 722,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "3807:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3794:18:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 724,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3815:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3794:25:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 726,
"nodeType": "ExpressionStatement",
"src": "3794:25:2"
}
]
},
"documentation": null,
"functionSelector": "3bc0aee6",
"id": 728,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "submitVAA",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 557,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 556,
"mutability": "mutable",
"name": "vaa",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 728,
"src": "2057:18:2",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 555,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2057:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2047:34:2"
},
"returnParameters": {
"id": 558,
"nodeType": "ParameterList",
"parameters": [],
"src": "2089:0:2"
},
"scope": 1181,
"src": "2029:1797:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 821,
"nodeType": "Block",
"src": "3889:873:2",
"statements": [
{
"assignments": [
734
],
"declarations": [
{
"constant": false,
"id": 734,
"mutability": "mutable",
"name": "new_key_x",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3899:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 733,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3899:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 739,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 737,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3934:1:2",
"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": 735,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "3919:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "3919:14:2",
"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": 738,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3919:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3899:37:2"
},
{
"assignments": [
741
],
"declarations": [
{
"constant": false,
"id": 741,
"mutability": "mutable",
"name": "y_parity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3946:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 740,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3946:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 746,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3332",
"id": 744,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3978:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
}
],
"expression": {
"argumentTypes": null,
"id": 742,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "3965:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 743,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3965:12:2",
"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": 745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3965:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3946:35:2"
},
{
"assignments": [
748
],
"declarations": [
{
"constant": false,
"id": 748,
"mutability": "mutable",
"name": "new_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3991:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 747,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "3991:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 753,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3333",
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4037:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_33_by_1",
"typeString": "int_const 33"
},
"value": "33"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_33_by_1",
"typeString": "int_const 33"
}
],
"expression": {
"argumentTypes": null,
"id": 749,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "4023:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "4023:13:2",
"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": 752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4023:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3991:49:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 755,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "4059:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 756,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4084:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4059:43:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e646578206f66206e657720677561726469616e20736574206d757374206265203e2063757272656e74",
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4104:45:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_906a0f9350878de65dacfb23a6e8e903db110639fb839bf569ced494236848c8",
"typeString": "literal_string \"index of new guardian set must be > current\""
},
"value": "index of new guardian set must be > current"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_906a0f9350878de65dacfb23a6e8e903db110639fb839bf569ced494236848c8",
"typeString": "literal_string \"index of new guardian set must be > current\""
}
],
"id": 754,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4051:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4051:99:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 760,
"nodeType": "ExpressionStatement",
"src": "4051:99:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 762,
"name": "new_key_x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4168:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 763,
"name": "Schnorr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 453,
"src": "4180:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Schnorr_$453_$",
"typeString": "type(library Schnorr)"
}
},
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "HALF_Q",
"nodeType": "MemberAccess",
"referencedDeclaration": 346,
"src": "4180:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4168:26:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e76616c6964206b657920666f722066617374205363686e6f727220766572696669636174696f6e",
"id": 766,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4196:43:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ad2abc16dac8cf88f3decb4180ebbab2f7006b83967f36fdb68b8d2df95c5160",
"typeString": "literal_string \"invalid key for fast Schnorr verification\""
},
"value": "invalid key for fast Schnorr verification"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ad2abc16dac8cf88f3decb4180ebbab2f7006b83967f36fdb68b8d2df95c5160",
"typeString": "literal_string \"invalid key for fast Schnorr verification\""
}
],
"id": 761,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4160:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 767,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4160:80:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 768,
"nodeType": "ExpressionStatement",
"src": "4160:80:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 770,
"name": "y_parity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "4258:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 771,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4270:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4258:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e76616c6964207920706172697479",
"id": 773,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4273:18:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4233cf3bcdde1caab54cb7e3337f4cce4e488f0e7c2711d64d9cdf67ee1ee175",
"typeString": "literal_string \"invalid y parity\""
},
"value": "invalid y parity"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4233cf3bcdde1caab54cb7e3337f4cce4e488f0e7c2711d64d9cdf67ee1ee175",
"typeString": "literal_string \"invalid y parity\""
}
],
"id": 769,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4250:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 774,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4250:42:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 775,
"nodeType": "ExpressionStatement",
"src": "4250:42:2"
},
{
"assignments": [
777
],
"declarations": [
{
"constant": false,
"id": 777,
"mutability": "mutable",
"name": "old_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "4303:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 776,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4303:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 779,
"initialValue": {
"argumentTypes": null,
"id": 778,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4335:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4303:50:2"
},
{
"expression": {
"argumentTypes": null,
"id": 782,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 780,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4363:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 781,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "4384:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4363:43:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 783,
"nodeType": "ExpressionStatement",
"src": "4363:43:2"
},
{
"assignments": [
785
],
"declarations": [
{
"constant": false,
"id": 785,
"mutability": "mutable",
"name": "new_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "4417:35:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 784,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "4417:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 794,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 787,
"name": "new_key_x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4467:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 790,
"name": "y_parity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "4484:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4478:5:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 788,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4478:5:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4478:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 792,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4495:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 786,
"name": "GuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 486,
"src": "4455:11:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_GuardianSet_$486_storage_ptr_$",
"typeString": "type(struct Wormhole.GuardianSet storage pointer)"
}
},
"id": 793,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4455:42:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4417:80:2"
},
{
"expression": {
"argumentTypes": null,
"id": 799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 795,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4507:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 797,
"indexExpression": {
"argumentTypes": null,
"id": 796,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4521:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4507:33:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 798,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "4543:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "4507:52:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 800,
"nodeType": "ExpressionStatement",
"src": "4507:52:2"
},
{
"expression": {
"argumentTypes": null,
"id": 812,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 801,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4569:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 803,
"indexExpression": {
"argumentTypes": null,
"id": 802,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 777,
"src": "4583:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4569:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 804,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "4569:53:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 811,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 807,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "4632:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 808,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4632:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 806,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4625:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint32_$",
"typeString": "type(uint32)"
},
"typeName": {
"id": 805,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4625:6:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4625:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 810,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "4651:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4625:36:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4569:92:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 813,
"nodeType": "ExpressionStatement",
"src": "4569:92:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 815,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4699:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 817,
"indexExpression": {
"argumentTypes": null,
"id": 816,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 777,
"src": "4713:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4699:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
{
"argumentTypes": null,
"id": 818,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "4738:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
},
{
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
],
"id": 814,
"name": "LogGuardianSetChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 492,
"src": "4677:21:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_struct$_GuardianSet_$486_memory_ptr_$_t_struct$_GuardianSet_$486_memory_ptr_$returns$__$",
"typeString": "function (struct Wormhole.GuardianSet memory,struct Wormhole.GuardianSet memory)"
}
},
"id": 819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4677:78:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 820,
"nodeType": "EmitStatement",
"src": "4672:83:2"
}
]
},
"documentation": null,
"id": 822,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaUpdateGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 731,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 730,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 822,
"src": "3862:17:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 729,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3862:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3861:19:2"
},
"returnParameters": {
"id": 732,
"nodeType": "ParameterList",
"parameters": [],
"src": "3889:0:2"
},
"scope": 1181,
"src": "3832:930:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 948,
"nodeType": "Block",
"src": "4816:1325:2",
"statements": [
{
"assignments": [
828
],
"declarations": [
{
"constant": false,
"id": 828,
"mutability": "mutable",
"name": "source_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "4869:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 827,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4869:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 833,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4903:1:2",
"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": 829,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "4890:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4890:12:2",
"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": 832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4890:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4869:36:2"
},
{
"assignments": [
835
],
"declarations": [
{
"constant": false,
"id": 835,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "4916:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 834,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4916:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 840,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 838,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4950:1:2",
"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": 836,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "4937:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4937:12:2",
"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": 839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4937:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4916:36:2"
},
{
"assignments": [
842
],
"declarations": [
{
"constant": false,
"id": 842,
"mutability": "mutable",
"name": "target_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5071:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 841,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5071:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 849,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"id": 847,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3338",
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5111:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_38_by_1",
"typeString": "int_const 38"
},
"value": "38"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3132",
"id": 846,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5116:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "5111:7:2",
"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": 843,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5096:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "5096:14:2",
"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": 848,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5096:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5071:48:2"
},
{
"assignments": [
851
],
"declarations": [
{
"constant": false,
"id": 851,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5130:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 850,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5130:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 856,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3730",
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5163:2:2",
"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": 852,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5150:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 853,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5150:12:2",
"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": 855,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5150:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5130:36:2"
},
{
"assignments": [
858
],
"declarations": [
{
"constant": false,
"id": 858,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5230:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 857,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5230:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 863,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313033",
"id": 861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5262:3:2",
"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": 859,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5247:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "5247:14:2",
"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": 862,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5247:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5230:36:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 865,
"name": "source_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "5285:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 866,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "5301:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5285:28:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564",
"id": 868,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5315:40:2",
"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": 864,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5277:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5277:79:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 870,
"nodeType": "ExpressionStatement",
"src": "5277:79:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 872,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "5374:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 873,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "5390:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5374:24:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "7472616e73666572206d75737420626520696e636f6d696e67",
"id": 875,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5400:27:2",
"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": 871,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5366:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5366:62:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 877,
"nodeType": "ExpressionStatement",
"src": "5366:62:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 878,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5443:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 879,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "5458:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5443:23:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 946,
"nodeType": "Block",
"src": "5990:145:2",
"statements": [
{
"assignments": [
930
],
"declarations": [
{
"constant": false,
"id": 930,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 946,
"src": "6004:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 929,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6004:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 937,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_83_by_1",
"typeString": "int_const 83"
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 933,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6043:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_71_by_1",
"typeString": "int_const 71"
},
"value": "71"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3132",
"id": 934,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6048:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "6043:7:2",
"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": 931,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "6028:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "6028:14:2",
"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": 936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6028:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6004:47:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 942,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 842,
"src": "6101:14:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 943,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 858,
"src": "6117:6:2",
"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": 939,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 930,
"src": "6073:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 938,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "6066:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6066:21:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 941,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2067,
"src": "6066:34:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2033_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2033_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 944,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6066:58:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 945,
"nodeType": "ExpressionStatement",
"src": "6066:58:2"
}
]
},
"id": 947,
"nodeType": "IfStatement",
"src": "5439:696:2",
"trueBody": {
"id": 928,
"nodeType": "Block",
"src": "5468:516:2",
"statements": [
{
"assignments": [
882
],
"declarations": [
{
"constant": false,
"id": 882,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5482:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 881,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5482:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 887,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3731",
"id": 885,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5521:2:2",
"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": 883,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5506:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "5506:14:2",
"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": 886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5506:18:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5482:42:2"
},
{
"assignments": [
889
],
"declarations": [
{
"constant": false,
"id": 889,
"mutability": "mutable",
"name": "asset_id",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5538:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 888,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5538:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 897,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 893,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5584:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 894,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 882,
"src": "5597:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 891,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "5567:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 892,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5567:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5567:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 890,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "5557:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5557:55:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5538:74:2"
},
{
"assignments": [
899
],
"declarations": [
{
"constant": false,
"id": 899,
"mutability": "mutable",
"name": "wrapped_asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5704:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 898,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5704:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 903,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 900,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 522,
"src": "5728:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 902,
"indexExpression": {
"argumentTypes": null,
"id": 901,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "5742:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5728:23:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5704:47:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 904,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5769:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5794:1:2",
"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": 906,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5786:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 905,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5786:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 908,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5786:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "5769:27:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 919,
"nodeType": "IfStatement",
"src": "5765:138:2",
"trueBody": {
"id": 918,
"nodeType": "Block",
"src": "5798:105:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 916,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 910,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5816:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 912,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "5851:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 913,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5861:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 914,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 882,
"src": "5874:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 911,
"name": "deployWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "5832:18:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32) returns (address)"
}
},
"id": 915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5832:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5816:72:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 917,
"nodeType": "ExpressionStatement",
"src": "5816:72:2"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 924,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 842,
"src": "5950:14:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 925,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 858,
"src": "5966:6:2",
"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": 921,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5930:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 920,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "5917:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5917:27:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 923,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mint",
"nodeType": "MemberAccess",
"referencedDeclaration": 1274,
"src": "5917:32:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5917:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 927,
"nodeType": "ExpressionStatement",
"src": "5917:56:2"
}
]
}
}
]
},
"documentation": null,
"id": 949,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaTransfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 825,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 824,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 949,
"src": "4789:17:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 823,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4789:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4788:19:2"
},
"returnParameters": {
"id": 826,
"nodeType": "ParameterList",
"parameters": [],
"src": "4816:0:2"
},
"scope": 1181,
"src": "4768:1373:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 988,
"nodeType": "Block",
"src": "6262:791:2",
"statements": [
{
"assignments": [
961
],
"declarations": [
{
"constant": false,
"id": 961,
"mutability": "mutable",
"name": "targetBytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 988,
"src": "6440:19:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 960,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6440:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 966,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 964,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "6470:18:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6462:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes20_$",
"typeString": "type(bytes20)"
},
"typeName": {
"id": 962,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6462:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 965,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6462:27:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6440:49:2"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "6508:341:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6522:24:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6541:4:2",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6535:5:2"
},
"nodeType": "YulFunctionCall",
"src": "6535:11:2"
},
"variables": [
{
"name": "clone",
"nodeType": "YulTypedName",
"src": "6526:5:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6566:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6573:66:2",
"type": "",
"value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6559:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6559:81:2"
},
"nodeType": "YulExpressionStatement",
"src": "6559:81:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6664:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6671:4:2",
"type": "",
"value": "0x14"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6660:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6660:16:2"
},
{
"name": "targetBytes",
"nodeType": "YulIdentifier",
"src": "6678:11:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6653:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6653:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "6653:37:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6714:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6721:4:2",
"type": "",
"value": "0x28"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6710:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6710:16:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6728:66:2",
"type": "",
"value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6703:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6703:92:2"
},
"nodeType": "YulExpressionStatement",
"src": "6703:92:2"
},
{
"nodeType": "YulAssignment",
"src": "6808:31:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6824:1:2",
"type": "",
"value": "0"
},
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6827:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6834:4:2",
"type": "",
"value": "0x37"
}
],
"functionName": {
"name": "create",
"nodeType": "YulIdentifier",
"src": "6817:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6817:22:2"
},
"variableNames": [
{
"name": "asset",
"nodeType": "YulIdentifier",
"src": "6808:5:2"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 958,
"isOffset": false,
"isSlot": false,
"src": "6808:5:2",
"valueSize": 1
},
{
"declaration": 961,
"isOffset": false,
"isSlot": false,
"src": "6678:11:2",
"valueSize": 1
}
],
"id": 967,
"nodeType": "InlineAssembly",
"src": "6499:350:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 972,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 953,
"src": "6918:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 973,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 955,
"src": "6931:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 969,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "6900:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 968,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "6887:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6887:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 971,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "initialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 1253,
"src": "6887:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$returns$__$",
"typeString": "function (uint8,bytes32) external"
}
},
"id": 974,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6887:58:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 975,
"nodeType": "ExpressionStatement",
"src": "6887:58:2"
},
{
"expression": {
"argumentTypes": null,
"id": 980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 976,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 522,
"src": "6981:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 978,
"indexExpression": {
"argumentTypes": null,
"id": 977,
"name": "seed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 951,
"src": "6995:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6981:19:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 979,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "7003:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6981:27:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 981,
"nodeType": "ExpressionStatement",
"src": "6981:27:2"
},
{
"expression": {
"argumentTypes": null,
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 982,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 526,
"src": "7018:14:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 984,
"indexExpression": {
"argumentTypes": null,
"id": 983,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "7033:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7018:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7042:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7018:28:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 987,
"nodeType": "ExpressionStatement",
"src": "7018:28:2"
}
]
},
"documentation": null,
"id": 989,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deployWrappedAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 956,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 951,
"mutability": "mutable",
"name": "seed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6175:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 950,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6175:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 953,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6189:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 952,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6189:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 955,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6208:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 954,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6208:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6174:56:2"
},
"returnParameters": {
"id": 959,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 958,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6248:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 957,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6248:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6247:15:2"
},
"scope": 1181,
"src": "6147:906:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 1115,
"nodeType": "Block",
"src": "7194:1027:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1003,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1001,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7212:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1002,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7222:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7212:11:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1004,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7225:22:2",
"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": 1000,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7204:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7204:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1006,
"nodeType": "ExpressionStatement",
"src": "7204:44:2"
},
{
"assignments": [
1008
],
"declarations": [
{
"constant": false,
"id": 1008,
"mutability": "mutable",
"name": "asset_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1115,
"src": "7259:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1007,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7259:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1010,
"initialValue": {
"argumentTypes": null,
"id": 1009,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "7279:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7259:28:2"
},
{
"assignments": [
1012
],
"declarations": [
{
"constant": false,
"id": 1012,
"mutability": "mutable",
"name": "asset_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1115,
"src": "7297:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1011,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7297:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1013,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "7297:21:2"
},
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1014,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 526,
"src": "7332:14:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1016,
"indexExpression": {
"argumentTypes": null,
"id": 1015,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7347:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7332:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1097,
"nodeType": "Block",
"src": "7554:539:2",
"statements": [
{
"assignments": [
1044
],
"declarations": [
{
"constant": false,
"id": 1044,
"mutability": "mutable",
"name": "balanceBefore",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1097,
"src": "7568:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1043,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7568:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1054,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1051,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7624:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1050,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7616:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1049,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7616:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7616:13:2",
"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": 1046,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7599:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1045,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7592:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7592:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1048,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 1972,
"src": "7592:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7592:38:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7568:62:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1059,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "7675:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1060,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7675:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1063,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7695:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1062,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7687:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1061,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7687:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7687:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1065,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7702:6:2",
"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": 1056,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7651:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1055,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7644:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1057,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7644:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1058,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2092,
"src": "7644:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2033_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2033_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 1066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7644:65:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1067,
"nodeType": "ExpressionStatement",
"src": "7644:65:2"
},
{
"assignments": [
1069
],
"declarations": [
{
"constant": false,
"id": 1069,
"mutability": "mutable",
"name": "balanceAfter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1097,
"src": "7723:20:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1068,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7723:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1079,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1076,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7778:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1075,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7770:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1074,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7770:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7770:13:2",
"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": 1071,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7753:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1070,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7746:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7746:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 1972,
"src": "7746:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1078,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7746:38:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7723:61:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1085,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1080,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7989:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1083,
"name": "balanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1044,
"src": "8015:13:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1081,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "7998:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1082,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 1805,
"src": "7998:16:2",
"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": 1084,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7998:31:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7989:40:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1086,
"nodeType": "ExpressionStatement",
"src": "7989:40:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1087,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "8043:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1092,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "8075:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8067:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1090,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8067:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8067:14:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1089,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8059:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1088,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8059:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8059:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "8043:39:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1096,
"nodeType": "ExpressionStatement",
"src": "8043:39:2"
}
]
},
"id": 1098,
"nodeType": "IfStatement",
"src": "7328:765:2",
"trueBody": {
"id": 1042,
"nodeType": "Block",
"src": "7355:193:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1021,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "7394:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1022,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7394:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1023,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7406:6:2",
"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": 1018,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7382:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1017,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7369:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7369:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 1295,
"src": "7369:24:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 1024,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7369:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1025,
"nodeType": "ExpressionStatement",
"src": "7369:44:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1026,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1008,
"src": "7427:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1028,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7454:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1027,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7441:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7441:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetChain",
"nodeType": "MemberAccess",
"referencedDeclaration": 1204,
"src": "7441:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1031,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7441:32:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "7427:46:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1033,
"nodeType": "ExpressionStatement",
"src": "7427:46:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1034,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "7487:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1036,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7516:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1035,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7503:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1037,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7503:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1038,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 1206,
"src": "7503:32:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
"typeString": "function () view external returns (bytes32)"
}
},
"id": 1039,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7503:34:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "7487:50:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1041,
"nodeType": "ExpressionStatement",
"src": "7487:50:2"
}
]
}
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1100,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 997,
"src": "8124:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1101,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1008,
"src": "8138:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1102,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "8151:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1107,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8182:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8182:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8174:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1105,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8174:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8174:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1104,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8166:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1103,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8166:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1110,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8166:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1111,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "8196:9:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1112,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "8207:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"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"
}
],
"id": 1099,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 506,
"src": "8108:15:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256)"
}
},
"id": 1113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8108:106:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1114,
"nodeType": "EmitStatement",
"src": "8103:111:2"
}
]
},
"documentation": null,
"functionSelector": "e66fd373",
"id": 1116,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lockAssets",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 998,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 991,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7088:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7088:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 993,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7111:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 992,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7111:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 995,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7135:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 994,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7135:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 997,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7162:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 996,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7162:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7078:108:2"
},
"returnParameters": {
"id": 999,
"nodeType": "ParameterList",
"parameters": [],
"src": "7194:0:2"
},
"scope": 1181,
"src": "7059:1162:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1163,
"nodeType": "Block",
"src": "8320:323:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1124,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8338:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1125,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8338:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8351:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8338:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1128,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8354:22:2",
"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": 1123,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8330:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8330:47:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1130,
"nodeType": "ExpressionStatement",
"src": "8330:47:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1132,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 479,
"src": "8426:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1131,
"name": "WETH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1192,
"src": "8421:4:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WETH_$1192_$",
"typeString": "type(contract WETH)"
}
},
"id": 1133,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8421:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WETH_$1192",
"typeString": "contract WETH"
}
},
"id": 1134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "deposit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1186,
"src": "8421:25:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$",
"typeString": "function () payable external"
}
},
"id": 1137,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1135,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8455:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8455:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "8421:44:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$value",
"typeString": "function () payable external"
}
},
"id": 1138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8421:46:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1139,
"nodeType": "ExpressionStatement",
"src": "8421:46:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1141,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1120,
"src": "8530:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1142,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "8544:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1147,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 479,
"src": "8570:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1146,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8562:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1145,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8562:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1148,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8562:20:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1144,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8554:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1143,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8554:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8554:29:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1154,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8601:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8601:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8593:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1152,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8593:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1156,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8593:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1151,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8585:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1150,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8585:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1157,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8585:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1158,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1118,
"src": "8615:9:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1159,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8626:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8626:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"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"
}
],
"id": 1140,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 506,
"src": "8514:15:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256)"
}
},
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8514:122:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1162,
"nodeType": "EmitStatement",
"src": "8509:127:2"
}
]
},
"documentation": null,
"functionSelector": "780e2183",
"id": 1164,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lockETH",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1121,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1118,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1164,
"src": "8253:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1117,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8253:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1120,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1164,
"src": "8280:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1119,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "8280:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8243:61:2"
},
"returnParameters": {
"id": 1122,
"nodeType": "ParameterList",
"parameters": [],
"src": "8320:0:2"
},
"scope": 1181,
"src": "8227:416:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1171,
"nodeType": "Block",
"src": "8674:57:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1168,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8682:46:2",
"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": 1167,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "8675:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8675:54:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1170,
"nodeType": "ExpressionStatement",
"src": "8675:54:2"
}
]
},
"documentation": null,
"id": 1172,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1165,
"nodeType": "ParameterList",
"parameters": [],
"src": "8654:2:2"
},
"returnParameters": {
"id": 1166,
"nodeType": "ParameterList",
"parameters": [],
"src": "8674:0:2"
},
"scope": 1181,
"src": "8646:85:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1179,
"nodeType": "Block",
"src": "8759:57:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1176,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8767:46:2",
"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": 1175,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "8760:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8760:54:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1178,
"nodeType": "ExpressionStatement",
"src": "8760:54:2"
}
]
},
"documentation": null,
"id": 1180,
"implemented": true,
"kind": "receive",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1173,
"nodeType": "ParameterList",
"parameters": [],
"src": "8739:2:2"
},
"returnParameters": {
"id": 1174,
"nodeType": "ParameterList",
"parameters": [],
"src": "8759:0:2"
},
"scope": 1181,
"src": "8732:84:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1193,
"src": "380:8438:2"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1182,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2033,
"src": "8839:6:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1183,
"nodeType": "InheritanceSpecifier",
"src": "8839:6:2"
}
],
"contractDependencies": [
2033
],
"contractKind": "interface",
"documentation": null,
"fullyImplemented": false,
"id": 1192,
"linearizedBaseContracts": [
1192,
2033
],
"name": "WETH",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": null,
"functionSelector": "d0e30db0",
"id": 1186,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1184,
"nodeType": "ParameterList",
"parameters": [],
"src": "8864:2:2"
},
"returnParameters": {
"id": 1185,
"nodeType": "ParameterList",
"parameters": [],
"src": "8883:0:2"
},
"scope": 1192,
"src": "8848:36:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "2e1a7d4d",
"id": 1191,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1189,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1188,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1191,
"src": "8904:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1187,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8904:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8903:16:2"
},
"returnParameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [],
"src": "8928:0:2"
},
"scope": 1192,
"src": "8886:43:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1193,
"src": "8821:110:2"
}
],
"src": "64:8868:2"
},
"legacyAST": {
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol",
"exportedSymbols": {
"WETH": [
1192
],
"Wormhole": [
1181
]
},
"id": 1193,
"license": "Apache 2",
"nodeType": "SourceUnit",
"nodes": [
{
"id": 455,
"literals": [
"solidity",
"^",
"0.6",
".0"
],
"nodeType": "PragmaDirective",
"src": "64:23:2"
},
{
"id": 456,
"literals": [
"experimental",
"ABIEncoderV2"
],
"nodeType": "PragmaDirective",
"src": "88:33:2"
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 457,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 2034,
"src": "123:56:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"id": 458,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 2247,
"src": "180:59:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"id": 459,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 1956,
"src": "240:51:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol",
"file": "./BytesLib.sol",
"id": 460,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 334,
"src": "292:24:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/SchnorrSECP256K1.sol",
"file": "./SchnorrSECP256K1.sol",
"id": 461,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 454,
"src": "317:32:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol",
"file": "./WrappedAsset.sol",
"id": 462,
"nodeType": "ImportDirective",
"scope": 1193,
"sourceUnit": 1737,
"src": "350:28:2",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [],
"contractDependencies": [],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1181,
"linearizedBaseContracts": [
1181
],
"name": "Wormhole",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 465,
"libraryName": {
"contractScope": null,
"id": 463,
"name": "SafeERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2246,
"src": "410:9:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$2246",
"typeString": "library SafeERC20"
}
},
"nodeType": "UsingForDirective",
"src": "404:27:2",
"typeName": {
"contractScope": null,
"id": 464,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2033,
"src": "424:6:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
}
},
{
"id": 468,
"libraryName": {
"contractScope": null,
"id": 466,
"name": "BytesLib",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 333,
"src": "442:8:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BytesLib_$333",
"typeString": "library BytesLib"
}
},
"nodeType": "UsingForDirective",
"src": "436:25:2",
"typeName": {
"id": 467,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "455:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
{
"id": 471,
"libraryName": {
"contractScope": null,
"id": 469,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1955,
"src": "472:8:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$1955",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "466:27:2",
"typeName": {
"id": 470,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "485:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": false,
"functionSelector": "99da1d3c",
"id": 473,
"mutability": "mutable",
"name": "wrappedAssetMaster",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "544:33:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 472,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "544:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 476,
"mutability": "mutable",
"name": "CHAIN_ID",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "612:18:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 474,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "612:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "32",
"id": 475,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "629:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "internal"
},
{
"constant": true,
"id": 479,
"mutability": "constant",
"name": "WETHAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "682:73:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 477,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "682:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332",
"id": 478,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "713:42:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
},
"visibility": "internal"
},
{
"canonicalName": "Wormhole.GuardianSet",
"id": 486,
"members": [
{
"constant": false,
"id": 481,
"mutability": "mutable",
"name": "x",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "791:9:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 480,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "791:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 483,
"mutability": "mutable",
"name": "parity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "810:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 482,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "810:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 485,
"mutability": "mutable",
"name": "expiration_time",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 486,
"src": "832:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 484,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "832:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "GuardianSet",
"nodeType": "StructDefinition",
"scope": 1181,
"src": "762:99:2",
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 492,
"name": "LogGuardianSetChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 491,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 488,
"indexed": true,
"mutability": "mutable",
"name": "oldGuardian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 492,
"src": "904:31:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 487,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "904:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 490,
"indexed": true,
"mutability": "mutable",
"name": "newGuardian",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 492,
"src": "945:31:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 489,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "945:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "894:88:2"
},
"src": "867:116:2"
},
{
"anonymous": false,
"documentation": null,
"id": 506,
"name": "LogTokensLocked",
"nodeType": "EventDefinition",
"parameters": {
"id": 505,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 494,
"indexed": false,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1020:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 493,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1020:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 496,
"indexed": false,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1048:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 495,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1048:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 498,
"indexed": true,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1075:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 497,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1075:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 500,
"indexed": true,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1106:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 499,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1106:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 502,
"indexed": false,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1138:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 501,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1138:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 504,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 506,
"src": "1165:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 503,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1165:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1010:175:2"
},
"src": "989:197:2"
},
{
"constant": false,
"functionSelector": "42b0aefa",
"id": 510,
"mutability": "mutable",
"name": "guardian_sets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1245:51:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"typeName": {
"id": 509,
"keyType": {
"id": 507,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1253:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Mapping",
"src": "1245:30:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"valueType": {
"contractScope": null,
"id": 508,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "1263:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "822d82b3",
"id": 512,
"mutability": "mutable",
"name": "guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1337:32:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 511,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1337:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "7f04d9e6",
"id": 514,
"mutability": "mutable",
"name": "vaa_expiry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1427:24:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 513,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1427:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 518,
"mutability": "mutable",
"name": "consumedVAAs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1497:37:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 517,
"keyType": {
"id": 515,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1505:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1497:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 516,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1516:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "b6694c2a",
"id": 522,
"mutability": "mutable",
"name": "wrappedAssets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1589:48:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"typeName": {
"id": 521,
"keyType": {
"id": 519,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1597:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1589:27:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 520,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1608:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1a2be4da",
"id": 526,
"mutability": "mutable",
"name": "isWrappedAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1181,
"src": "1643:46:2",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 525,
"keyType": {
"id": 523,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1651:7:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1643:24:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 524,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1662:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 553,
"nodeType": "Block",
"src": "1806:217:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 539,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 535,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "1816:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 537,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 536,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1830:1:2",
"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": "1816:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 538,
"name": "initial_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 528,
"src": "1835:20:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "1816:39:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 540,
"nodeType": "ExpressionStatement",
"src": "1816:39:2"
},
{
"expression": {
"argumentTypes": null,
"id": 543,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 541,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "1908:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1929:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "1908:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 544,
"nodeType": "ExpressionStatement",
"src": "1908:22:2"
},
{
"expression": {
"argumentTypes": null,
"id": 547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 545,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "1940:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 546,
"name": "_vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 532,
"src": "1953:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "1940:24:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 548,
"nodeType": "ExpressionStatement",
"src": "1940:24:2"
},
{
"expression": {
"argumentTypes": null,
"id": 551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 549,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "1975:18:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 550,
"name": "wrapped_asset_master",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 530,
"src": "1996:20:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "1975:41:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 552,
"nodeType": "ExpressionStatement",
"src": "1975:41:2"
}
]
},
"documentation": null,
"id": 554,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 533,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 528,
"mutability": "mutable",
"name": "initial_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1708:39:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 527,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "1708:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 530,
"mutability": "mutable",
"name": "wrapped_asset_master",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1749:28:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 529,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1749:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 532,
"mutability": "mutable",
"name": "_vaa_expiry",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 554,
"src": "1779:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 531,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1779:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1707:91:2"
},
"returnParameters": {
"id": 534,
"nodeType": "ParameterList",
"parameters": [],
"src": "1806:0:2"
},
"scope": 1181,
"src": "1696:327:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 727,
"nodeType": "Block",
"src": "2089:1737:2",
"statements": [
{
"assignments": [
560
],
"declarations": [
{
"constant": false,
"id": 560,
"mutability": "mutable",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2099:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 559,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2099:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 565,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 563,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2127:1:2",
"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": 561,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2115:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2115:11:2",
"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": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2115:14:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2099:30:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 567,
"name": "version",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 560,
"src": "2147:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2158:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2147:12:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412076657273696f6e20696e636f6d70617469626c65",
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2161:26:2",
"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": 566,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2139:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 571,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2139:49:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 572,
"nodeType": "ExpressionStatement",
"src": "2139:49:2"
},
{
"assignments": [
574
],
"declarations": [
{
"constant": false,
"id": 574,
"mutability": "mutable",
"name": "vaa_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2245:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 573,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2245:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 579,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 577,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2290:1:2",
"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": 575,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2277:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 576,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2277:12:2",
"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": 578,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2277:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2245:47:2"
},
{
"assignments": [
581
],
"declarations": [
{
"constant": false,
"id": 581,
"mutability": "mutable",
"name": "signature",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2303:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 580,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2303:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 586,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2337:1:2",
"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": 582,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2323:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "2323:13:2",
"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": 585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2323:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2303:36:2"
},
{
"assignments": [
588
],
"declarations": [
{
"constant": false,
"id": 588,
"mutability": "mutable",
"name": "sig_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2349:19:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 587,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2349:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 593,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3337",
"id": 591,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2385:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_37_by_1",
"typeString": "int_const 37"
},
"value": "37"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_37_by_1",
"typeString": "int_const 37"
}
],
"expression": {
"argumentTypes": null,
"id": 589,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2371:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 590,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "2371:13:2",
"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": 592,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2371:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2349:39:2"
},
{
"assignments": [
595
],
"declarations": [
{
"constant": false,
"id": 595,
"mutability": "mutable",
"name": "timestamp",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2446:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 594,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2446:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 600,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3537",
"id": 598,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2478:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
}
],
"expression": {
"argumentTypes": null,
"id": 596,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2465:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2465:12:2",
"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": 599,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2465:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2446:35:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 604,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 602,
"name": "timestamp",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 595,
"src": "2546:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 603,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "2558:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "2546:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 605,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "2571:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 606,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2571:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2546:40:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141206861732065787069726564",
"id": 608,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2588:17:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86",
"typeString": "literal_string \"VAA has expired\""
},
"value": "VAA has expired"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_716b6a367d262f21a121968c96e61557fe9c6281596966426b955d4c8c65cb86",
"typeString": "literal_string \"VAA has expired\""
}
],
"id": 601,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2538:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 609,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2538:68:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 610,
"nodeType": "ExpressionStatement",
"src": "2538:68:2"
},
{
"assignments": [
612
],
"declarations": [
{
"constant": false,
"id": 612,
"mutability": "mutable",
"name": "hash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2642:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 611,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2642:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 623,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3537",
"id": 616,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2677:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 617,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2681:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 618,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2681:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3537",
"id": 619,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2694:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
"value": "57"
},
"src": "2681:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_57_by_1",
"typeString": "int_const 57"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 614,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "2667:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 615,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "2667:9:2",
"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": 621,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2667:30:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 613,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "2657:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 622,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2657:41:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2642:56:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 628,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "2716:19:2",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 625,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "2717:12:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 627,
"indexExpression": {
"argumentTypes": null,
"id": 626,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "2730:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2717:18:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412077617320616c7265616479206578656375746564",
"id": 629,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2737:26:2",
"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": 624,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2708:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 630,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2708:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 631,
"nodeType": "ExpressionStatement",
"src": "2708:56:2"
},
{
"assignments": [
633
],
"declarations": [
{
"constant": false,
"id": 633,
"mutability": "mutable",
"name": "guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "2775:31:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 632,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "2775:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 637,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 634,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "2809:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 636,
"indexExpression": {
"argumentTypes": null,
"id": 635,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 574,
"src": "2823:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2809:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2775:71:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 639,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "2864:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 640,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "2864:28:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2896:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2864:33:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 643,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "2901:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 644,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "2901:28:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 645,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "2932:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 646,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2932:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2901:46:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "2864:83:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "677561726469616e20736574206861732065787069726564",
"id": 649,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2949:26:2",
"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": 638,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2856:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2856:120:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 651,
"nodeType": "ExpressionStatement",
"src": "2856:120:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 655,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "3048:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 656,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "x",
"nodeType": "MemberAccess",
"referencedDeclaration": 481,
"src": "3048:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 657,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 633,
"src": "3080:12:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 658,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "parity",
"nodeType": "MemberAccess",
"referencedDeclaration": 483,
"src": "3080:19:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 659,
"name": "signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 581,
"src": "3117:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 662,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "3152:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 661,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "3144:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 660,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3144:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3144:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 664,
"name": "sig_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 588,
"src": "3175:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"expression": {
"argumentTypes": null,
"id": 653,
"name": "Schnorr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 453,
"src": "3007:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Schnorr_$453_$",
"typeString": "type(library Schnorr)"
}
},
"id": 654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "verifySignature",
"nodeType": "MemberAccess",
"referencedDeclaration": 452,
"src": "3007:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint8_$_t_uint256_$_t_uint256_$_t_address_$returns$_t_bool_$",
"typeString": "function (uint256,uint8,uint256,uint256,address) pure returns (bool)"
}
},
"id": 665,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3007:193:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141207369676e617475726520696e76616c6964",
"id": 666,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3214:23:2",
"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": 652,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2986:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 667,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2986:252:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 668,
"nodeType": "ExpressionStatement",
"src": "2986:252:2"
},
{
"assignments": [
670
],
"declarations": [
{
"constant": false,
"id": 670,
"mutability": "mutable",
"name": "action",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3249:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 669,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3249:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 675,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3631",
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3276:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_61_by_1",
"typeString": "int_const 61"
},
"value": "61"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_61_by_1",
"typeString": "int_const 61"
}
],
"expression": {
"argumentTypes": null,
"id": 671,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3264:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 672,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3264:11:2",
"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": 674,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3264:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3249:30:2"
},
{
"assignments": [
677
],
"declarations": [
{
"constant": false,
"id": 677,
"mutability": "mutable",
"name": "payload_len",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3289:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 676,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3289:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 682,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3632",
"id": 680,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3321:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_62_by_1",
"typeString": "int_const 62"
},
"value": "62"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_62_by_1",
"typeString": "int_const 62"
}
],
"expression": {
"argumentTypes": null,
"id": 678,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3309:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 679,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3309:11:2",
"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": 681,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3309:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3289:35:2"
},
{
"assignments": [
684
],
"declarations": [
{
"constant": false,
"id": 684,
"mutability": "mutable",
"name": "payload",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 727,
"src": "3334:20:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 683,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3334:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 690,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3633",
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3367:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_63_by_1",
"typeString": "int_const 63"
},
"value": "63"
},
{
"argumentTypes": null,
"id": 688,
"name": "payload_len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 677,
"src": "3371:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_63_by_1",
"typeString": "int_const 63"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"id": 685,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 556,
"src": "3357:3:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 686,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "3357:9:2",
"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": 689,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3357:26:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3334:49:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 693,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 691,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "3421:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783031",
"id": 692,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3431:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x01"
},
"src": "3421:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 706,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
"src": "3629:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783130",
"id": 707,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3639:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "0x10"
},
"src": "3629:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 718,
"nodeType": "Block",
"src": "3696:53:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "696e76616c69642056414120616374696f6e",
"id": 715,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3717:20:2",
"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": 714,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "3710:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 716,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3710:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 717,
"nodeType": "ExpressionStatement",
"src": "3710:28:2"
}
]
},
"id": 719,
"nodeType": "IfStatement",
"src": "3625:124:2",
"trueBody": {
"id": 713,
"nodeType": "Block",
"src": "3645:45:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 710,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 684,
"src": "3671:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 709,
"name": "vaaTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 949,
"src": "3659:11:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 711,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3659:20:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 712,
"nodeType": "ExpressionStatement",
"src": "3659:20:2"
}
]
}
},
"id": 720,
"nodeType": "IfStatement",
"src": "3417:332:2",
"trueBody": {
"id": 705,
"nodeType": "Block",
"src": "3437:182:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 697,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 695,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 574,
"src": "3459:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 696,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "3485:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "3459:44:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574",
"id": 698,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3505:59:2",
"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": 694,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3451:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 699,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3451:114:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 700,
"nodeType": "ExpressionStatement",
"src": "3451:114:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 702,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 684,
"src": "3600:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 701,
"name": "vaaUpdateGuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 822,
"src": "3579:20:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3579:29:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 704,
"nodeType": "ExpressionStatement",
"src": "3579:29:2"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 725,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 721,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 518,
"src": "3794:12:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 723,
"indexExpression": {
"argumentTypes": null,
"id": 722,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 612,
"src": "3807:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "3794:18:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 724,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3815:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "3794:25:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 726,
"nodeType": "ExpressionStatement",
"src": "3794:25:2"
}
]
},
"documentation": null,
"functionSelector": "3bc0aee6",
"id": 728,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "submitVAA",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 557,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 556,
"mutability": "mutable",
"name": "vaa",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 728,
"src": "2057:18:2",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 555,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2057:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2047:34:2"
},
"returnParameters": {
"id": 558,
"nodeType": "ParameterList",
"parameters": [],
"src": "2089:0:2"
},
"scope": 1181,
"src": "2029:1797:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 821,
"nodeType": "Block",
"src": "3889:873:2",
"statements": [
{
"assignments": [
734
],
"declarations": [
{
"constant": false,
"id": 734,
"mutability": "mutable",
"name": "new_key_x",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3899:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 733,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3899:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 739,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 737,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3934:1:2",
"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": 735,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "3919:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "3919:14:2",
"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": 738,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3919:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3899:37:2"
},
{
"assignments": [
741
],
"declarations": [
{
"constant": false,
"id": 741,
"mutability": "mutable",
"name": "y_parity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3946:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 740,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "3946:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 746,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3332",
"id": 744,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3978:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
},
"value": "32"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_32_by_1",
"typeString": "int_const 32"
}
],
"expression": {
"argumentTypes": null,
"id": 742,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "3965:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 743,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3965:12:2",
"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": 745,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3965:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3946:35:2"
},
{
"assignments": [
748
],
"declarations": [
{
"constant": false,
"id": 748,
"mutability": "mutable",
"name": "new_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "3991:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 747,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "3991:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 753,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3333",
"id": 751,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4037:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_33_by_1",
"typeString": "int_const 33"
},
"value": "33"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_33_by_1",
"typeString": "int_const 33"
}
],
"expression": {
"argumentTypes": null,
"id": 749,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 730,
"src": "4023:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 750,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "4023:13:2",
"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": 752,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4023:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3991:49:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 757,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 755,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "4059:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"id": 756,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4084:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4059:43:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e646578206f66206e657720677561726469616e20736574206d757374206265203e2063757272656e74",
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4104:45:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_906a0f9350878de65dacfb23a6e8e903db110639fb839bf569ced494236848c8",
"typeString": "literal_string \"index of new guardian set must be > current\""
},
"value": "index of new guardian set must be > current"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_906a0f9350878de65dacfb23a6e8e903db110639fb839bf569ced494236848c8",
"typeString": "literal_string \"index of new guardian set must be > current\""
}
],
"id": 754,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4051:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 759,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4051:99:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 760,
"nodeType": "ExpressionStatement",
"src": "4051:99:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 762,
"name": "new_key_x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4168:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 763,
"name": "Schnorr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 453,
"src": "4180:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_Schnorr_$453_$",
"typeString": "type(library Schnorr)"
}
},
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "HALF_Q",
"nodeType": "MemberAccess",
"referencedDeclaration": 346,
"src": "4180:14:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4168:26:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e76616c6964206b657920666f722066617374205363686e6f727220766572696669636174696f6e",
"id": 766,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4196:43:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_ad2abc16dac8cf88f3decb4180ebbab2f7006b83967f36fdb68b8d2df95c5160",
"typeString": "literal_string \"invalid key for fast Schnorr verification\""
},
"value": "invalid key for fast Schnorr verification"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_ad2abc16dac8cf88f3decb4180ebbab2f7006b83967f36fdb68b8d2df95c5160",
"typeString": "literal_string \"invalid key for fast Schnorr verification\""
}
],
"id": 761,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4160:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 767,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4160:80:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 768,
"nodeType": "ExpressionStatement",
"src": "4160:80:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 772,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 770,
"name": "y_parity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "4258:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 771,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4270:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "4258:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "696e76616c6964207920706172697479",
"id": 773,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4273:18:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_4233cf3bcdde1caab54cb7e3337f4cce4e488f0e7c2711d64d9cdf67ee1ee175",
"typeString": "literal_string \"invalid y parity\""
},
"value": "invalid y parity"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_4233cf3bcdde1caab54cb7e3337f4cce4e488f0e7c2711d64d9cdf67ee1ee175",
"typeString": "literal_string \"invalid y parity\""
}
],
"id": 769,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "4250:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 774,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4250:42:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 775,
"nodeType": "ExpressionStatement",
"src": "4250:42:2"
},
{
"assignments": [
777
],
"declarations": [
{
"constant": false,
"id": 777,
"mutability": "mutable",
"name": "old_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "4303:29:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 776,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4303:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 779,
"initialValue": {
"argumentTypes": null,
"id": 778,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4335:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4303:50:2"
},
{
"expression": {
"argumentTypes": null,
"id": 782,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 780,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4363:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 781,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 748,
"src": "4384:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4363:43:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 783,
"nodeType": "ExpressionStatement",
"src": "4363:43:2"
},
{
"assignments": [
785
],
"declarations": [
{
"constant": false,
"id": 785,
"mutability": "mutable",
"name": "new_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 821,
"src": "4417:35:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 784,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 486,
"src": "4417:11:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 794,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 787,
"name": "new_key_x",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4467:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 790,
"name": "y_parity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 741,
"src": "4484:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4478:5:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint8_$",
"typeString": "type(uint8)"
},
"typeName": {
"id": 788,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4478:5:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 791,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4478:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 792,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4495:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 786,
"name": "GuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 486,
"src": "4455:11:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_GuardianSet_$486_storage_ptr_$",
"typeString": "type(struct Wormhole.GuardianSet storage pointer)"
}
},
"id": 793,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4455:42:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4417:80:2"
},
{
"expression": {
"argumentTypes": null,
"id": 799,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 795,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4507:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 797,
"indexExpression": {
"argumentTypes": null,
"id": 796,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 512,
"src": "4521:18:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4507:33:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 798,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "4543:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "4507:52:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 800,
"nodeType": "ExpressionStatement",
"src": "4507:52:2"
},
{
"expression": {
"argumentTypes": null,
"id": 812,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 801,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4569:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 803,
"indexExpression": {
"argumentTypes": null,
"id": 802,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 777,
"src": "4583:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4569:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 804,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 485,
"src": "4569:53:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 811,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 807,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "4632:5:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 808,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "4632:15:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 806,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "4625:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint32_$",
"typeString": "type(uint32)"
},
"typeName": {
"id": 805,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4625:6:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4625:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 810,
"name": "vaa_expiry",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 514,
"src": "4651:10:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4625:36:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4569:92:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 813,
"nodeType": "ExpressionStatement",
"src": "4569:92:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 815,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 510,
"src": "4699:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$486_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 817,
"indexExpression": {
"argumentTypes": null,
"id": 816,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 777,
"src": "4713:22:2",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4699:37:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
{
"argumentTypes": null,
"id": 818,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 785,
"src": "4738:16:2",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_struct$_GuardianSet_$486_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
},
{
"typeIdentifier": "t_struct$_GuardianSet_$486_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
],
"id": 814,
"name": "LogGuardianSetChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 492,
"src": "4677:21:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_struct$_GuardianSet_$486_memory_ptr_$_t_struct$_GuardianSet_$486_memory_ptr_$returns$__$",
"typeString": "function (struct Wormhole.GuardianSet memory,struct Wormhole.GuardianSet memory)"
}
},
"id": 819,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4677:78:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 820,
"nodeType": "EmitStatement",
"src": "4672:83:2"
}
]
},
"documentation": null,
"id": 822,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaUpdateGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 731,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 730,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 822,
"src": "3862:17:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 729,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3862:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "3861:19:2"
},
"returnParameters": {
"id": 732,
"nodeType": "ParameterList",
"parameters": [],
"src": "3889:0:2"
},
"scope": 1181,
"src": "3832:930:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 948,
"nodeType": "Block",
"src": "4816:1325:2",
"statements": [
{
"assignments": [
828
],
"declarations": [
{
"constant": false,
"id": 828,
"mutability": "mutable",
"name": "source_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "4869:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 827,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4869:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 833,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4903:1:2",
"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": 829,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "4890:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4890:12:2",
"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": 832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4890:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4869:36:2"
},
{
"assignments": [
835
],
"declarations": [
{
"constant": false,
"id": 835,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "4916:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 834,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4916:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 840,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 838,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4950:1:2",
"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": 836,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "4937:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4937:12:2",
"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": 839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4937:15:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4916:36:2"
},
{
"assignments": [
842
],
"declarations": [
{
"constant": false,
"id": 842,
"mutability": "mutable",
"name": "target_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5071:22:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 841,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5071:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 849,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"id": 847,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3338",
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5111:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_38_by_1",
"typeString": "int_const 38"
},
"value": "38"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3132",
"id": 846,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5116:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "5111:7:2",
"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": 843,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5096:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "5096:14:2",
"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": 848,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5096:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5071:48:2"
},
{
"assignments": [
851
],
"declarations": [
{
"constant": false,
"id": 851,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5130:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 850,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5130:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 856,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3730",
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5163:2:2",
"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": 852,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5150:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 853,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5150:12:2",
"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": 855,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5150:16:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5130:36:2"
},
{
"assignments": [
858
],
"declarations": [
{
"constant": false,
"id": 858,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 948,
"src": "5230:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 857,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5230:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 863,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313033",
"id": 861,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5262:3:2",
"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": 859,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5247:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 860,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "5247:14:2",
"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": 862,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5247:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5230:36:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 867,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 865,
"name": "source_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "5285:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 866,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "5301:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5285:28:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564",
"id": 868,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5315:40:2",
"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": 864,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5277:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 869,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5277:79:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 870,
"nodeType": "ExpressionStatement",
"src": "5277:79:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 874,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 872,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 835,
"src": "5374:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 873,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "5390:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5374:24:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "7472616e73666572206d75737420626520696e636f6d696e67",
"id": 875,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5400:27:2",
"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": 871,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5366:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 876,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5366:62:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 877,
"nodeType": "ExpressionStatement",
"src": "5366:62:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 880,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 878,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5443:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 879,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "5458:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5443:23:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 946,
"nodeType": "Block",
"src": "5990:145:2",
"statements": [
{
"assignments": [
930
],
"declarations": [
{
"constant": false,
"id": 930,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 946,
"src": "6004:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 929,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6004:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 937,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_83_by_1",
"typeString": "int_const 83"
},
"id": 935,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 933,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6043:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_71_by_1",
"typeString": "int_const 71"
},
"value": "71"
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3132",
"id": 934,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6048:2:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "6043:7:2",
"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": 931,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "6028:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 932,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "6028:14:2",
"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": 936,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6028:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6004:47:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 942,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 842,
"src": "6101:14:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 943,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 858,
"src": "6117:6:2",
"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": 939,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 930,
"src": "6073:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 938,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "6066:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 940,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6066:21:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 941,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2067,
"src": "6066:34:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2033_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2033_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 944,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6066:58:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 945,
"nodeType": "ExpressionStatement",
"src": "6066:58:2"
}
]
},
"id": 947,
"nodeType": "IfStatement",
"src": "5439:696:2",
"trueBody": {
"id": 928,
"nodeType": "Block",
"src": "5468:516:2",
"statements": [
{
"assignments": [
882
],
"declarations": [
{
"constant": false,
"id": 882,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5482:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 881,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5482:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 887,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3731",
"id": 885,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5521:2:2",
"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": 883,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 824,
"src": "5506:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "5506:14:2",
"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": 886,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5506:18:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5482:42:2"
},
{
"assignments": [
889
],
"declarations": [
{
"constant": false,
"id": 889,
"mutability": "mutable",
"name": "asset_id",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5538:16:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 888,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5538:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 897,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 893,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5584:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 894,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 882,
"src": "5597:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 891,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "5567:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 892,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5567:16:2",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 895,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5567:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 890,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "5557:9:2",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 896,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5557:55:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5538:74:2"
},
{
"assignments": [
899
],
"declarations": [
{
"constant": false,
"id": 899,
"mutability": "mutable",
"name": "wrapped_asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 928,
"src": "5704:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 898,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5704:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 903,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 900,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 522,
"src": "5728:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 902,
"indexExpression": {
"argumentTypes": null,
"id": 901,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "5742:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "5728:23:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5704:47:2"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 909,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 904,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5769:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 907,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5794:1:2",
"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": 906,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5786:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 905,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5786:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 908,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5786:10:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "5769:27:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 919,
"nodeType": "IfStatement",
"src": "5765:138:2",
"trueBody": {
"id": 918,
"nodeType": "Block",
"src": "5798:105:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 916,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 910,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5816:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 912,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 889,
"src": "5851:8:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 913,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 851,
"src": "5861:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 914,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 882,
"src": "5874:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 911,
"name": "deployWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 989,
"src": "5832:18:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32) returns (address)"
}
},
"id": 915,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5832:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "5816:72:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 917,
"nodeType": "ExpressionStatement",
"src": "5816:72:2"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 924,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 842,
"src": "5950:14:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 925,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 858,
"src": "5966:6:2",
"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": 921,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 899,
"src": "5930:13:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 920,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "5917:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5917:27:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 923,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mint",
"nodeType": "MemberAccess",
"referencedDeclaration": 1274,
"src": "5917:32:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 926,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5917:56:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 927,
"nodeType": "ExpressionStatement",
"src": "5917:56:2"
}
]
}
}
]
},
"documentation": null,
"id": 949,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaTransfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 825,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 824,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 949,
"src": "4789:17:2",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 823,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4789:5:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4788:19:2"
},
"returnParameters": {
"id": 826,
"nodeType": "ParameterList",
"parameters": [],
"src": "4816:0:2"
},
"scope": 1181,
"src": "4768:1373:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 988,
"nodeType": "Block",
"src": "6262:791:2",
"statements": [
{
"assignments": [
961
],
"declarations": [
{
"constant": false,
"id": 961,
"mutability": "mutable",
"name": "targetBytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 988,
"src": "6440:19:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 960,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6440:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 966,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 964,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 473,
"src": "6470:18:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 963,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6462:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes20_$",
"typeString": "type(bytes20)"
},
"typeName": {
"id": 962,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6462:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 965,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6462:27:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6440:49:2"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "6508:341:2",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "6522:24:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6541:4:2",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "6535:5:2"
},
"nodeType": "YulFunctionCall",
"src": "6535:11:2"
},
"variables": [
{
"name": "clone",
"nodeType": "YulTypedName",
"src": "6526:5:2",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6566:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6573:66:2",
"type": "",
"value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6559:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6559:81:2"
},
"nodeType": "YulExpressionStatement",
"src": "6559:81:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6664:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6671:4:2",
"type": "",
"value": "0x14"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6660:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6660:16:2"
},
{
"name": "targetBytes",
"nodeType": "YulIdentifier",
"src": "6678:11:2"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6653:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6653:37:2"
},
"nodeType": "YulExpressionStatement",
"src": "6653:37:2"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6714:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6721:4:2",
"type": "",
"value": "0x28"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "6710:3:2"
},
"nodeType": "YulFunctionCall",
"src": "6710:16:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6728:66:2",
"type": "",
"value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "6703:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6703:92:2"
},
"nodeType": "YulExpressionStatement",
"src": "6703:92:2"
},
{
"nodeType": "YulAssignment",
"src": "6808:31:2",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6824:1:2",
"type": "",
"value": "0"
},
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "6827:5:2"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "6834:4:2",
"type": "",
"value": "0x37"
}
],
"functionName": {
"name": "create",
"nodeType": "YulIdentifier",
"src": "6817:6:2"
},
"nodeType": "YulFunctionCall",
"src": "6817:22:2"
},
"variableNames": [
{
"name": "asset",
"nodeType": "YulIdentifier",
"src": "6808:5:2"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 958,
"isOffset": false,
"isSlot": false,
"src": "6808:5:2",
"valueSize": 1
},
{
"declaration": 961,
"isOffset": false,
"isSlot": false,
"src": "6678:11:2",
"valueSize": 1
}
],
"id": 967,
"nodeType": "InlineAssembly",
"src": "6499:350:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 972,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 953,
"src": "6918:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 973,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 955,
"src": "6931:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 969,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "6900:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 968,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "6887:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 970,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6887:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 971,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "initialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 1253,
"src": "6887:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$returns$__$",
"typeString": "function (uint8,bytes32) external"
}
},
"id": 974,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6887:58:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 975,
"nodeType": "ExpressionStatement",
"src": "6887:58:2"
},
{
"expression": {
"argumentTypes": null,
"id": 980,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 976,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 522,
"src": "6981:13:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 978,
"indexExpression": {
"argumentTypes": null,
"id": 977,
"name": "seed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 951,
"src": "6995:4:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "6981:19:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 979,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "7003:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6981:27:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 981,
"nodeType": "ExpressionStatement",
"src": "6981:27:2"
},
{
"expression": {
"argumentTypes": null,
"id": 986,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 982,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 526,
"src": "7018:14:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 984,
"indexExpression": {
"argumentTypes": null,
"id": 983,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 958,
"src": "7033:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7018:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 985,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7042:4:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7018:28:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 987,
"nodeType": "ExpressionStatement",
"src": "7018:28:2"
}
]
},
"documentation": null,
"id": 989,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deployWrappedAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 956,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 951,
"mutability": "mutable",
"name": "seed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6175:12:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 950,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6175:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 953,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6189:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 952,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6189:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 955,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6208:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 954,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6208:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6174:56:2"
},
"returnParameters": {
"id": 959,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 958,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 989,
"src": "6248:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 957,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6248:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6247:15:2"
},
"scope": 1181,
"src": "6147:906:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 1115,
"nodeType": "Block",
"src": "7194:1027:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1003,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1001,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7212:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1002,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7222:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7212:11:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1004,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7225:22:2",
"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": 1000,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7204:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7204:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1006,
"nodeType": "ExpressionStatement",
"src": "7204:44:2"
},
{
"assignments": [
1008
],
"declarations": [
{
"constant": false,
"id": 1008,
"mutability": "mutable",
"name": "asset_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1115,
"src": "7259:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1007,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7259:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1010,
"initialValue": {
"argumentTypes": null,
"id": 1009,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "7279:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7259:28:2"
},
{
"assignments": [
1012
],
"declarations": [
{
"constant": false,
"id": 1012,
"mutability": "mutable",
"name": "asset_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1115,
"src": "7297:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1011,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7297:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1013,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "7297:21:2"
},
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1014,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 526,
"src": "7332:14:2",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1016,
"indexExpression": {
"argumentTypes": null,
"id": 1015,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7347:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7332:21:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1097,
"nodeType": "Block",
"src": "7554:539:2",
"statements": [
{
"assignments": [
1044
],
"declarations": [
{
"constant": false,
"id": 1044,
"mutability": "mutable",
"name": "balanceBefore",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1097,
"src": "7568:21:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1043,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7568:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1054,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1051,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7624:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1050,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7616:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1049,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7616:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7616:13:2",
"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": 1046,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7599:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1045,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7592:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7592:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1048,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 1972,
"src": "7592:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7592:38:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7568:62:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1059,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "7675:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1060,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7675:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1063,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7695:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1062,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7687:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1061,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7687:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1064,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7687:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1065,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7702:6:2",
"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": 1056,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7651:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1055,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7644:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1057,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7644:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1058,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2092,
"src": "7644:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2033_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2033_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 1066,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7644:65:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1067,
"nodeType": "ExpressionStatement",
"src": "7644:65:2"
},
{
"assignments": [
1069
],
"declarations": [
{
"constant": false,
"id": 1069,
"mutability": "mutable",
"name": "balanceAfter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1097,
"src": "7723:20:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1068,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7723:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1079,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1076,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "7778:4:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1181",
"typeString": "contract Wormhole"
}
],
"id": 1075,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "7770:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1074,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7770:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7770:13:2",
"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": 1071,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7753:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1070,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2033,
"src": "7746:6:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2033_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7746:13:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 1972,
"src": "7746:23:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1078,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7746:38:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7723:61:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1085,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1080,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7989:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1083,
"name": "balanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1044,
"src": "8015:13:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1081,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1069,
"src": "7998:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1082,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 1805,
"src": "7998:16:2",
"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": 1084,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7998:31:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "7989:40:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1086,
"nodeType": "ExpressionStatement",
"src": "7989:40:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1095,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1087,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "8043:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1092,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "8075:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8067:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1090,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8067:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1093,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8067:14:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1089,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8059:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1088,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8059:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8059:23:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "8043:39:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1096,
"nodeType": "ExpressionStatement",
"src": "8043:39:2"
}
]
},
"id": 1098,
"nodeType": "IfStatement",
"src": "7328:765:2",
"trueBody": {
"id": 1042,
"nodeType": "Block",
"src": "7355:193:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1021,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "7394:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1022,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "7394:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1023,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "7406:6:2",
"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": 1018,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7382:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1017,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7369:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7369:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1020,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 1295,
"src": "7369:24:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 1024,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7369:44:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1025,
"nodeType": "ExpressionStatement",
"src": "7369:44:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1026,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1008,
"src": "7427:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1028,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7454:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1027,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7441:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1029,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7441:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1030,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetChain",
"nodeType": "MemberAccess",
"referencedDeclaration": 1204,
"src": "7441:30:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1031,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7441:32:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "7427:46:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1033,
"nodeType": "ExpressionStatement",
"src": "7427:46:2"
},
{
"expression": {
"argumentTypes": null,
"id": 1040,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1034,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "7487:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1036,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 991,
"src": "7516:5:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1035,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1736,
"src": "7503:12:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1736_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1037,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7503:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1736",
"typeString": "contract WrappedAsset"
}
},
"id": 1038,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 1206,
"src": "7503:32:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
"typeString": "function () view external returns (bytes32)"
}
},
"id": 1039,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7503:34:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "7487:50:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1041,
"nodeType": "ExpressionStatement",
"src": "7487:50:2"
}
]
}
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1100,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 997,
"src": "8124:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1101,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1008,
"src": "8138:11:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1102,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1012,
"src": "8151:13:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1107,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8182:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1108,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8182:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8174:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1105,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8174:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8174:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1104,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8166:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1103,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8166:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1110,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8166:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1111,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "8196:9:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1112,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 993,
"src": "8207:6:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"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"
}
],
"id": 1099,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 506,
"src": "8108:15:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256)"
}
},
"id": 1113,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8108:106:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1114,
"nodeType": "EmitStatement",
"src": "8103:111:2"
}
]
},
"documentation": null,
"functionSelector": "e66fd373",
"id": 1116,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lockAssets",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 998,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 991,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7088:13:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 990,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7088:7:2",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 993,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7111:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 992,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7111:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 995,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7135:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 994,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7135:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 997,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1116,
"src": "7162:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 996,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7162:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7078:108:2"
},
"returnParameters": {
"id": 999,
"nodeType": "ParameterList",
"parameters": [],
"src": "7194:0:2"
},
"scope": 1181,
"src": "7059:1162:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1163,
"nodeType": "Block",
"src": "8320:323:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1124,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8338:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1125,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8338:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8351:1:2",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "8338:14:2",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1128,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8354:22:2",
"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": 1123,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "8330:7:2",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8330:47:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1130,
"nodeType": "ExpressionStatement",
"src": "8330:47:2"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1132,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 479,
"src": "8426:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1131,
"name": "WETH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1192,
"src": "8421:4:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WETH_$1192_$",
"typeString": "type(contract WETH)"
}
},
"id": 1133,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8421:17:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WETH_$1192",
"typeString": "contract WETH"
}
},
"id": 1134,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "deposit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1186,
"src": "8421:25:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$",
"typeString": "function () payable external"
}
},
"id": 1137,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1135,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8455:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8455:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "8421:44:2",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$value",
"typeString": "function () payable external"
}
},
"id": 1138,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8421:46:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1139,
"nodeType": "ExpressionStatement",
"src": "8421:46:2"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1141,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1120,
"src": "8530:12:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1142,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 476,
"src": "8544:8:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1147,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 479,
"src": "8570:11:2",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1146,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8562:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1145,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8562:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1148,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8562:20:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1144,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8554:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1143,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8554:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8554:29:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1154,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8601:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1155,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8601:10:2",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1153,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8593:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1152,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8593:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1156,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8593:19:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1151,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8585:7:2",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1150,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8585:7:2",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1157,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8585:28:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1158,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1118,
"src": "8615:9:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1159,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8626:3:2",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8626:9:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"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"
}
],
"id": 1140,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 506,
"src": "8514:15:2",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
"typeString": "function (uint8,uint8,bytes32,bytes32,bytes32,uint256)"
}
},
"id": 1161,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8514:122:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1162,
"nodeType": "EmitStatement",
"src": "8509:127:2"
}
]
},
"documentation": null,
"functionSelector": "780e2183",
"id": 1164,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "lockETH",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1121,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1118,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1164,
"src": "8253:17:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1117,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "8253:7:2",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1120,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1164,
"src": "8280:18:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1119,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "8280:5:2",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8243:61:2"
},
"returnParameters": {
"id": 1122,
"nodeType": "ParameterList",
"parameters": [],
"src": "8320:0:2"
},
"scope": 1181,
"src": "8227:416:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1171,
"nodeType": "Block",
"src": "8674:57:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1168,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8682:46:2",
"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": 1167,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "8675:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1169,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8675:54:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1170,
"nodeType": "ExpressionStatement",
"src": "8675:54:2"
}
]
},
"documentation": null,
"id": 1172,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1165,
"nodeType": "ParameterList",
"parameters": [],
"src": "8654:2:2"
},
"returnParameters": {
"id": 1166,
"nodeType": "ParameterList",
"parameters": [],
"src": "8674:0:2"
},
"scope": 1181,
"src": "8646:85:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1179,
"nodeType": "Block",
"src": "8759:57:2",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1176,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8767:46:2",
"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": 1175,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "8760:6:2",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1177,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8760:54:2",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1178,
"nodeType": "ExpressionStatement",
"src": "8760:54:2"
}
]
},
"documentation": null,
"id": 1180,
"implemented": true,
"kind": "receive",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1173,
"nodeType": "ParameterList",
"parameters": [],
"src": "8739:2:2"
},
"returnParameters": {
"id": 1174,
"nodeType": "ParameterList",
"parameters": [],
"src": "8759:0:2"
},
"scope": 1181,
"src": "8732:84:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1193,
"src": "380:8438:2"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1182,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2033,
"src": "8839:6:2",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2033",
"typeString": "contract IERC20"
}
},
"id": 1183,
"nodeType": "InheritanceSpecifier",
"src": "8839:6:2"
}
],
"contractDependencies": [
2033
],
"contractKind": "interface",
"documentation": null,
"fullyImplemented": false,
"id": 1192,
"linearizedBaseContracts": [
1192,
2033
],
"name": "WETH",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": null,
"functionSelector": "d0e30db0",
"id": 1186,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1184,
"nodeType": "ParameterList",
"parameters": [],
"src": "8864:2:2"
},
"returnParameters": {
"id": 1185,
"nodeType": "ParameterList",
"parameters": [],
"src": "8883:0:2"
},
"scope": 1192,
"src": "8848:36:2",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "2e1a7d4d",
"id": 1191,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1189,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1188,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1191,
"src": "8904:14:2",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1187,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8904:7:2",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "8903:16:2"
},
"returnParameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [],
"src": "8928:0:2"
},
"scope": 1192,
"src": "8886:43:2",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1193,
"src": "8821:110:2"
}
],
"src": "64:8868:2"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-08-09T18:58:34.074Z",
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}