forked from ethereum-optimism/optimism
-
Notifications
You must be signed in to change notification settings - Fork 15
Expand file tree
/
Copy pathStandardBridge.json
More file actions
1 lines (1 loc) · 261 KB
/
Copy pathStandardBridge.json
File metadata and controls
1 lines (1 loc) · 261 KB
1
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"OTHER_BRIDGE","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"bridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeERC20To","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"bridgeETH","inputs":[{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"bridgeETHTo","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"deposits","inputs":[{"name":"","type":"address","internalType":"address"},{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"finalizeBridgeERC20","inputs":[{"name":"_localToken","type":"address","internalType":"address"},{"name":"_remoteToken","type":"address","internalType":"address"},{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalizeBridgeETH","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"},{"name":"_extraData","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"messenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ICrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"otherBridge","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract StandardBridge"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"event","name":"ERC20BridgeFinalized","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ERC20BridgeInitiated","inputs":[{"name":"localToken","type":"address","indexed":true,"internalType":"address"},{"name":"remoteToken","type":"address","indexed":true,"internalType":"address"},{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeFinalized","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"ETHBridgeInitiated","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"extraData","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MESSENGER()":"927ede2d","OTHER_BRIDGE()":"7f46ddb2","bridgeERC20(address,address,uint256,uint32,bytes)":"87087623","bridgeERC20To(address,address,address,uint256,uint32,bytes)":"540abf73","bridgeETH(uint32,bytes)":"09fc8843","bridgeETHTo(address,uint32,bytes)":"e11013dd","deposits(address,address)":"8f601f66","finalizeBridgeERC20(address,address,address,address,uint256,bytes)":"0166a07a","finalizeBridgeETH(address,address,uint256,bytes)":"1635f5fd","messenger()":"3cb747bf","otherBridge()":"c89701a2","paused()":"5c975abb"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"localToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"remoteToken\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ERC20BridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeFinalized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"}],\"name\":\"ETHBridgeInitiated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSENGER\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_BRIDGE\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeERC20To\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"bridgeETHTo\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deposits\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_localToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_remoteToken\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeERC20\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_extraData\",\"type\":\"bytes\"}],\"name\":\"finalizeBridgeETH\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messenger\",\"outputs\":[{\"internalType\":\"contract ICrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherBridge\",\"outputs\":[{\"internalType\":\"contract StandardBridge\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"custom:upgradeable\":\"@title StandardBridge\",\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of the ERC20 sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"localToken\":\"Address of the ERC20 on this chain.\",\"remoteToken\":\"Address of the ERC20 on the remote chain.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"params\":{\"amount\":\"Amount of ETH sent.\",\"extraData\":\"Extra data sent with the transaction.\",\"from\":\"Address of the sender.\",\"to\":\"Address of the receiver.\"}}},\"kind\":\"dev\",\"methods\":{\"MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the messenger on this domain.\"}},\"OTHER_BRIDGE()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"Contract of the bridge on the other network.\"}},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\"}},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"params\":{\"_amount\":\"Amount of local tokens to deposit.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"bridgeETH(uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\"}},\"bridgeETHTo(address,uint32,bytes)\":{\"params\":{\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_minGasLimit\":\"Minimum amount of gas that the bridge can be relayed with.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of the ERC20 being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_localToken\":\"Address of the ERC20 on this chain.\",\"_remoteToken\":\"Address of the corresponding token on the remote chain.\",\"_to\":\"Address of the receiver.\"}},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"params\":{\"_amount\":\"Amount of ETH being bridged.\",\"_extraData\":\"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.\",\"_from\":\"Address of the sender.\",\"_to\":\"Address of the receiver.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}}},\"stateVariables\":{\"messenger\":{\"custom:network-specific\":\"\"},\"otherBridge\":{\"custom:network-specific\":\"\"},\"spacer_0_2_30\":{\"custom:legacy\":\"@custom:spacer messenger\"},\"spacer_1_0_20\":{\"custom:legacy\":\"@custom:spacer l2TokenBridge\"}},\"version\":1},\"userdoc\":{\"events\":{\"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is finalized on this chain.\"},\"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ERC20 bridge is initiated to the other chain.\"},\"ETHBridgeFinalized(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is finalized on this chain.\"},\"ETHBridgeInitiated(address,address,uint256,bytes)\":{\"notice\":\"Emitted when an ETH bridge is initiated to the other chain.\"}},\"kind\":\"user\",\"methods\":{\"MESSENGER()\":{\"notice\":\"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead.\"},\"OTHER_BRIDGE()\":{\"notice\":\"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\"},\"bridgeERC20(address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to the sender's address on the other chain.\"},\"bridgeERC20To(address,address,address,uint256,uint32,bytes)\":{\"notice\":\"Sends ERC20 tokens to a receiver's address on the other chain.\"},\"bridgeETH(uint32,bytes)\":{\"notice\":\"Sends ETH to the sender's address on the other chain.\"},\"bridgeETHTo(address,uint32,bytes)\":{\"notice\":\"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case.\"},\"deposits(address,address)\":{\"notice\":\"Mapping that stores deposits for a given pair of local and remote tokens.\"},\"finalizeBridgeERC20(address,address,address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"finalizeBridgeETH(address,address,uint256,bytes)\":{\"notice\":\"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain.\"},\"messenger()\":{\"notice\":\"Messenger contract on this domain.\"},\"otherBridge()\":{\"notice\":\"Corresponding bridge on the other domain.\"},\"paused()\":{\"notice\":\"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op.\"}},\"notice\":\"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/universal/StandardBridge.sol\":\"StandardBridge\"},\"evmVersion\":\"london\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[\":@lib-keccak/=lib/lib-keccak/contracts/lib/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":gelato/=lib/automate/contracts/\",\":hardhat/=lib/automate/node_modules/hardhat/\",\":kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/\",\":lib-keccak/=lib/lib-keccak/contracts/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady-v0.0.245/=lib/solady-v0.0.245/src/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3\",\"dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34\",\"dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd\",\"dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol\":{\"keccak256\":\"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec\",\"dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol\":{\"keccak256\":\"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95\",\"dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7\"]},\"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol\":{\"keccak256\":\"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6\",\"dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92\",\"dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3\"]},\"lib/openzeppelin-contracts/contracts/utils/Counters.sol\":{\"keccak256\":\"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee\",\"dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu\"]},\"lib/openzeppelin-contracts/contracts/utils/Strings.sol\":{\"keccak256\":\"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638\",\"dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900\",\"dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol\":{\"keccak256\":\"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba\",\"dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol\":{\"keccak256\":\"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461\",\"dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f\",\"dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy\"]},\"src/L1/interfaces/IResourceMetering.sol\":{\"keccak256\":\"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990\",\"dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz\"]},\"src/celo/AbstractFeeCurrency.sol\":{\"keccak256\":\"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541\",\"dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356\",\"dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL\"]},\"src/libraries/Preinstalls.sol\":{\"keccak256\":\"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0\",\"dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753\",\"dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc\"]},\"src/universal/OptimismMintableERC20.sol\":{\"keccak256\":\"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded\",\"dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz\"]},\"src/universal/StandardBridge.sol\":{\"keccak256\":\"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe\",\"dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf\"]},\"src/universal/interfaces/ICrossDomainMessenger.sol\":{\"keccak256\":\"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818\",\"dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv\"]},\"src/universal/interfaces/ILegacyMintableERC20.sol\":{\"keccak256\":\"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d\",\"dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh\"]},\"src/universal/interfaces/IOptimismMintableERC20.sol\":{\"keccak256\":\"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397\",\"dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB\"]},\"src/universal/interfaces/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"localToken","type":"address","indexed":true},{"internalType":"address","name":"remoteToken","type":"address","indexed":true},{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ERC20BridgeInitiated","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeFinalized","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"bytes","name":"extraData","type":"bytes","indexed":false}],"type":"event","name":"ETHBridgeInitiated","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSENGER","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_BRIDGE","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20"},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"bridgeERC20To"},{"inputs":[{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETH"},{"inputs":[{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"bridgeETHTo"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"deposits","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"_localToken","type":"address"},{"internalType":"address","name":"_remoteToken","type":"address"},{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"finalizeBridgeERC20"},{"inputs":[{"internalType":"address","name":"_from","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"stateMutability":"payable","type":"function","name":"finalizeBridgeETH"},{"inputs":[],"stateMutability":"view","type":"function","name":"messenger","outputs":[{"internalType":"contract ICrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherBridge","outputs":[{"internalType":"contract StandardBridge","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"payable","type":"receive"}],"devdoc":{"kind":"dev","methods":{"MESSENGER()":{"custom:legacy":"","returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"custom:legacy":"","returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts-v5/=lib/openzeppelin-contracts-v5/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady-v0.0.245/=lib/solady-v0.0.245/src/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-v5/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","gelato/=lib/automate/contracts/","hardhat/=lib/automate/node_modules/hardhat/","kontrol-cheatcodes/=lib/kontrol-cheatcodes/src/","lib-keccak/=lib/lib-keccak/contracts/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts-v5/=lib/openzeppelin-contracts-v5/","openzeppelin-contracts/=lib/openzeppelin-contracts/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady-v0.0.245/=lib/solady-v0.0.245/src/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/universal/StandardBridge.sol":"StandardBridge"},"evmVersion":"london","libraries":{}},"sources":{"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0x6aee29c64f3cfcda9471c73d04d2ca2024aaec77320b599fa0d9c8e7773d1f9d","urls":["bzz-raw://33cb5fcecf5d2b248479de1f49e863df2ddaef9bad26f02351bf7fa62b962ce3","dweb:/ipfs/QmThsVuJmnRbLtS1B9tMyasY1qKVV5QmmD1Bqf9VDSJNiD"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0x9750c6b834f7b43000631af5cc30001c5f547b3ceb3635488f140f60e897ea6b","urls":["bzz-raw://5a7d5b1ef5d8d5889ad2ed89d8619c09383b80b72ab226e0fe7bde1636481e34","dweb:/ipfs/QmebXWgtEfumQGBdVeM6c71McLixYXQP5Bk6kKXuoY4Bmr"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x8de418a5503946cabe331f35fe242d3201a73f67f77aaeb7110acb1f30423aca","urls":["bzz-raw://5a376d3dda2cb70536c0a45c208b29b34ac560c4cb4f513a42079f96ba47d2dd","dweb:/ipfs/QmZQg6gn1sUpM8wHzwNvSnihumUCAhxD119MpXeKp8B9s8"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol":{"keccak256":"0x07536242e24ee7067295d32c08e495a33e605f3c52f8ee4ec3bdcb7a351313d2","urls":["bzz-raw://01f99dbf2ce567a64a03fc4d38b76d64d52bf1a2302922971446b1cf777220ec","dweb:/ipfs/QmSiotbcG2KMuXfbKyKTcHu9ujBp67jmbULJyYLDpsrpC1"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol":{"keccak256":"0xf41ca991f30855bf80ffd11e9347856a517b977f0a6c2d52e6421a99b7840329","urls":["bzz-raw://b2717fd2bdac99daa960a6de500754ea1b932093c946388c381da48658234b95","dweb:/ipfs/QmP6QVMn6UeA3ByahyJbYQr5M6coHKBKsf3ySZSfbyA8R7"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol":{"keccak256":"0x032807210d1d7d218963d7355d62e021a84bf1b3339f4f50be2f63b53cccaf29","urls":["bzz-raw://11756f42121f6541a35a8339ea899ee7514cfaa2e6d740625fcc844419296aa6","dweb:/ipfs/QmekMuk6BY4DAjzeXr4MSbKdgoqqsZnA8JPtuyWc6CwXHf"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10","urls":["bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487","dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0xe2e337e6dde9ef6b680e07338c493ebea1b5fd09b43424112868e9cc1706bca7","urls":["bzz-raw://6df0ddf21ce9f58271bdfaa85cde98b200ef242a05a3f85c2bc10a8294800a92","dweb:/ipfs/QmRK2Y5Yc6BK7tGKkgsgn3aJEQGi5aakeSPZvS65PV8Xp3"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Counters.sol":{"keccak256":"0xf0018c2440fbe238dd3a8732fa8e17a0f9dce84d31451dc8a32f6d62b349c9f1","urls":["bzz-raw://59e1c62884d55b70f3ae5432b44bb3166ad71ae3acd19c57ab6ddc3c87c325ee","dweb:/ipfs/QmezuXg5GK5oeA4F91EZhozBFekhq5TD966bHPH18cCqhu"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/Strings.sol":{"keccak256":"0xaf159a8b1923ad2a26d516089bceca9bdeaeacd04be50983ea00ba63070f08a3","urls":["bzz-raw://6f2cf1c531122bc7ca96b8c8db6a60deae60441e5223065e792553d4849b5638","dweb:/ipfs/QmPBdJmBBABMDCfyDjCbdxgiqRavgiSL88SYPGibgbPas9"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xdb7f5c28fc61cda0bd8ab60ce288e206b791643bcd3ba464a70cbec18895a2f5","urls":["bzz-raw://bf52bdf22a33263f5ca6227a35faeac3b81e7d2c692fbcc6a079d488710c5900","dweb:/ipfs/QmcmsjkP4yq3UhiJbvyzwufaY2EKh1zhHaRK8ATag2cpD2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol":{"keccak256":"0x6688fad58b9ec0286d40fa957152e575d5d8bd4c3aa80985efdb11b44f776ae7","urls":["bzz-raw://8bc00ab7f133cdaafd212a5cc6a16c8d37319721105d130c8e5af0c4e8f170ba","dweb:/ipfs/QmVmf6LVMfFiEkvKYLzSv3bGHzymEW93AcUuFrNUdY3NtT"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol":{"keccak256":"0xc65c83c1039508fa7a42a09a3c6a32babd1c438ba4dbb23581255e784b5d5eed","urls":["bzz-raw://a1b3b38db0f76429db899909025e534c366415e9ea8b5ddc4c8901e6a7fc1461","dweb:/ipfs/QmYv1KxyHjLEky9JWNSsSfpGJbiCxFyzVFgTwQKpiqYGUg"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x447a5f3ddc18419d41ff92b3773fb86471b1db25773e07f877f548918a185bf1","urls":["bzz-raw://be161e54f24e5c6fae81a12db1a8ae87bc5ae1b0ddc805d82a1440a68455088f","dweb:/ipfs/QmP7C3CHdY9urF4dEMb9wmsp1wMxHF6nhA2yQE5SKiPAdy"],"license":"MIT"},"src/L1/interfaces/IResourceMetering.sol":{"keccak256":"0xece74b5d533cad4069c69377fbaafa653be49ebb14c4b5b8acb85c4ac27c570c","urls":["bzz-raw://5a3ff8473453898e0f010313c69f833f2206c73fd25d9594df3a1332780be990","dweb:/ipfs/QmQiX2nNwCY9aMUynjWdGBi5HG9Py2LCyQ2nNDi7gtaJNz"],"license":"MIT"},"src/celo/AbstractFeeCurrency.sol":{"keccak256":"0xb88b5a0db5d2d23bad05fe958b445813d5f8181f0a47a9dc2398b304b60bdd51","urls":["bzz-raw://c0ae30de3164900ad87284aab1de27d30282e5d64bc6d6cc56f2391703c71541","dweb:/ipfs/QmPhsnRFcCGcVaKjFVeENXid7RzF5chsh1pRcH2RQHkZGU"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x888e6bd005272dced4f7a1bcd52a23f8dd4b8aea4c830a5602596ab839b9dc4b","urls":["bzz-raw://6b29d66f0558b743edff5c03d1f189444741b9d17b9b2c8be1e1ddf758526356","dweb:/ipfs/QmaLuRQg2UapotbBgCLtjv2pHLXSzisdKzn1aHvNUVMVQL"],"license":"MIT"},"src/libraries/Preinstalls.sol":{"keccak256":"0xc5c6b78b7c581e531c28acd507a36a83c3908ae476548a5573ff15f43e3698dd","urls":["bzz-raw://c4ff8d956afd17ae6d7f79542e2f4b76a98962d7e174979da1d4347e601cbef0","dweb:/ipfs/QmbPWmLeb65Pfv4hEXdbaQcFW2nmRpQSs25TvGqEtKuPmg"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x180b41274f6ac4ce2df10ced19808511b205e7f6d5d179bc312b607a04b136a3","urls":["bzz-raw://ef4727c043897c028fb22f9559fd8d223ec77a9c11b87df8e79251a1f3be7753","dweb:/ipfs/Qmec1j5UPmwehpMJydnSyXPDwcAsSmGKPfFTZf4Qf5QPjc"],"license":"MIT"},"src/universal/OptimismMintableERC20.sol":{"keccak256":"0x1785fe376bb2d24b80f76f9690689d915deed70e2a55ec3f1a1b05004377fc97","urls":["bzz-raw://0e2581c5dae42c02c133d10956d40e9013ceac640358c09e5c519c5c67579ded","dweb:/ipfs/Qmce7WDxBMbyNv7zXrMRLyD2vHUwABww3seamLnUfTPUjz"],"license":"MIT"},"src/universal/StandardBridge.sol":{"keccak256":"0xe070719ccb4402a06ffc4bde3f91e5f217334ec58eb7b3f86c1adf5d134f0537","urls":["bzz-raw://fa49b3f77b67b6a4d89b64fbecb0cee7a74377f3e8ec1eec952f87e6b2fcc1fe","dweb:/ipfs/QmWYp2HxAN3pnbU4kTHhPH7gkDHEFUBBmqtsj49G3pMGRf"],"license":"MIT"},"src/universal/interfaces/ICrossDomainMessenger.sol":{"keccak256":"0xefedbeb9d799849b4d2519323f227bba5051655bb9db604a861513ca61518ba4","urls":["bzz-raw://fbcdb17f219a105be6ed03b960ded34a305af792d44ad8a1c57b74902b99e818","dweb:/ipfs/QmSsJA6aaurfKq822orrh4tNiqpBWAguqXw6Ek7dfKkusv"],"license":"MIT"},"src/universal/interfaces/ILegacyMintableERC20.sol":{"keccak256":"0xa14a2557cd5fe9a20834b16d0484732d2433b46d7dd846f2e4c95c8a427bd4b3","urls":["bzz-raw://09bd078da57c696ec5389a25411aec9725c65d3e23f45ff47890fcb94cab130d","dweb:/ipfs/QmVWZxnekY6F9h7fh6SK8K7yWGYweZTBnga1uw7N21yhxh"],"license":"MIT"},"src/universal/interfaces/IOptimismMintableERC20.sol":{"keccak256":"0xd517000176210f29e8c7d105131e492ba56fe8c4659dc5b8afb557eea70f028c","urls":["bzz-raw://9a554db8992689fce149f3d90b861e1f6b5d0acddb4131c6901576517240f397","dweb:/ipfs/QmRQBF8Whssa7nKYN7EzEHkRP8b2RX3muB2FBaaCAAyRJB"],"license":"MIT"},"src/universal/interfaces/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"}},"version":1},"storageLayout":{"storage":[{"astId":42550,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initialized","offset":0,"slot":"0","type":"t_uint8"},{"astId":42553,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"_initializing","offset":1,"slot":"0","type":"t_bool"},{"astId":120296,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_0_2_30","offset":2,"slot":"0","type":"t_bytes30"},{"astId":120299,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"spacer_1_0_20","offset":0,"slot":"1","type":"t_address"},{"astId":120306,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"deposits","offset":0,"slot":"2","type":"t_mapping(t_address,t_mapping(t_address,t_uint256))"},{"astId":120310,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"messenger","offset":0,"slot":"3","type":"t_contract(ICrossDomainMessenger)121721"},{"astId":120314,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"otherBridge","offset":0,"slot":"4","type":"t_contract(StandardBridge)121076"},{"astId":120319,"contract":"src/universal/StandardBridge.sol:StandardBridge","label":"__gap","offset":0,"slot":"5","type":"t_array(t_uint256)45_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)45_storage":{"encoding":"inplace","label":"uint256[45]","numberOfBytes":"1440","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes30":{"encoding":"inplace","label":"bytes30","numberOfBytes":"30"},"t_contract(ICrossDomainMessenger)121721":{"encoding":"inplace","label":"contract ICrossDomainMessenger","numberOfBytes":"20"},"t_contract(StandardBridge)121076":{"encoding":"inplace","label":"contract StandardBridge","numberOfBytes":"20"},"t_mapping(t_address,t_mapping(t_address,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(address => uint256))","numberOfBytes":"32","value":"t_mapping(t_address,t_uint256)"},"t_mapping(t_address,t_uint256)":{"encoding":"mapping","key":"t_address","label":"mapping(address => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSENGER()":{"notice":"Getter for messenger contract. Public getter is legacy and will be removed in the future. Use `messenger` instead."},"OTHER_BRIDGE()":{"notice":"Getter for the other bridge contract. Public getter is legacy and will be removed in the future. Use `otherBridge` instead."},"bridgeERC20(address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to the sender's address on the other chain."},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"notice":"Sends ERC20 tokens to a receiver's address on the other chain."},"bridgeETH(uint32,bytes)":{"notice":"Sends ETH to the sender's address on the other chain."},"bridgeETHTo(address,uint32,bytes)":{"notice":"Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a smart contract and the call fails, the ETH will be temporarily locked in the StandardBridge on the other chain until the call is replayed. If the call cannot be replayed with any amount of gas (call always reverts), then the ETH will be permanently locked in the StandardBridge on the other chain. ETH will also be locked if the receiver is the other bridge, because finalizeBridgeETH will revert in that case."},"deposits(address,address)":{"notice":"Mapping that stores deposits for a given pair of local and remote tokens."},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"notice":"Finalizes an ERC20 bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"finalizeBridgeETH(address,address,uint256,bytes)":{"notice":"Finalizes an ETH bridge on this chain. Can only be triggered by the other StandardBridge contract on the remote chain."},"messenger()":{"notice":"Messenger contract on this domain."},"otherBridge()":{"notice":"Corresponding bridge on the other domain."},"paused()":{"notice":"This function should return true if the contract is paused. On L1 this function will check the SuperchainConfig for its paused status. On L2 this function should be a no-op."}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is finalized on this chain."},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"notice":"Emitted when an ERC20 bridge is initiated to the other chain."},"ETHBridgeFinalized(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is finalized on this chain."},"ETHBridgeInitiated(address,address,uint256,bytes)":{"notice":"Emitted when an ETH bridge is initiated to the other chain."}},"notice":"StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles the core bridging logic, including escrowing tokens that are native to the local chain and minting/burning tokens that are native to the remote chain."},"devdoc":{"version":1,"kind":"dev","methods":{"MESSENGER()":{"returns":{"_0":"Contract of the messenger on this domain."}},"OTHER_BRIDGE()":{"returns":{"_0":"Contract of the bridge on the other network."}},"bridgeERC20(address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain."}},"bridgeERC20To(address,address,address,uint256,uint32,bytes)":{"params":{"_amount":"Amount of local tokens to deposit.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_localToken":"Address of the ERC20 on this chain.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"bridgeETH(uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with."}},"bridgeETHTo(address,uint32,bytes)":{"params":{"_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_minGasLimit":"Minimum amount of gas that the bridge can be relayed with.","_to":"Address of the receiver."}},"finalizeBridgeERC20(address,address,address,address,uint256,bytes)":{"params":{"_amount":"Amount of the ERC20 being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_localToken":"Address of the ERC20 on this chain.","_remoteToken":"Address of the corresponding token on the remote chain.","_to":"Address of the receiver."}},"finalizeBridgeETH(address,address,uint256,bytes)":{"params":{"_amount":"Amount of ETH being bridged.","_extraData":"Extra data to be sent with the transaction. Note that the recipient will not be triggered with this data, but it will be emitted and can be used to identify the transaction.","_from":"Address of the sender.","_to":"Address of the receiver."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}}},"events":{"ERC20BridgeFinalized(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ERC20BridgeInitiated(address,address,address,address,uint256,bytes)":{"params":{"amount":"Amount of the ERC20 sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","localToken":"Address of the ERC20 on this chain.","remoteToken":"Address of the ERC20 on the remote chain.","to":"Address of the receiver."}},"ETHBridgeFinalized(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}},"ETHBridgeInitiated(address,address,uint256,bytes)":{"params":{"amount":"Amount of ETH sent.","extraData":"Extra data sent with the transaction.","from":"Address of the sender.","to":"Address of the receiver."}}}},"ast":{"absolutePath":"src/universal/StandardBridge.sol","id":121077,"exportedSymbols":{"Address":[46285],"Constants":[112908],"ERC165Checker":[47367],"ICrossDomainMessenger":[121721],"IERC20":[43398],"ILegacyMintableERC20":[121854],"IOptimismMintableERC20":[121886],"Initializable":[42694],"OptimismMintableERC20":[118972],"SafeCall":[114979],"SafeERC20":[44593],"StandardBridge":[121076]},"nodeType":"SourceUnit","src":"32:22897:298","nodes":[{"id":120260,"nodeType":"PragmaDirective","src":"32:23:298","nodes":[],"literals":["solidity","0.8",".15"]},{"id":120262,"nodeType":"ImportDirective","src":"57:72:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol","file":"@openzeppelin/contracts/token/ERC20/IERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":43399,"symbolAliases":[{"foreign":{"id":120261,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"66:6:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120264,"nodeType":"ImportDirective","src":"130:94:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol","file":"@openzeppelin/contracts/utils/introspection/ERC165Checker.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":47368,"symbolAliases":[{"foreign":{"id":120263,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"139:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120266,"nodeType":"ImportDirective","src":"225:68:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/utils/Address.sol","file":"@openzeppelin/contracts/utils/Address.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":46286,"symbolAliases":[{"foreign":{"id":120265,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"234:7:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120268,"nodeType":"ImportDirective","src":"294:84:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol","file":"@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":44594,"symbolAliases":[{"foreign":{"id":120267,"name":"SafeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":44593,"src":"303:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120270,"nodeType":"ImportDirective","src":"379:54:298","nodes":[],"absolutePath":"src/libraries/SafeCall.sol","file":"src/libraries/SafeCall.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":114980,"symbolAliases":[{"foreign":{"id":120269,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"388:8:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120272,"nodeType":"ImportDirective","src":"434:93:298","nodes":[],"absolutePath":"src/universal/interfaces/IOptimismMintableERC20.sol","file":"src/universal/interfaces/IOptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121887,"symbolAliases":[{"foreign":{"id":120271,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"443:22:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120274,"nodeType":"ImportDirective","src":"528:89:298","nodes":[],"absolutePath":"src/universal/interfaces/ILegacyMintableERC20.sol","file":"src/universal/interfaces/ILegacyMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121855,"symbolAliases":[{"foreign":{"id":120273,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"537:20:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120276,"nodeType":"ImportDirective","src":"618:91:298","nodes":[],"absolutePath":"src/universal/interfaces/ICrossDomainMessenger.sol","file":"src/universal/interfaces/ICrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":121722,"symbolAliases":[{"foreign":{"id":120275,"name":"ICrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121721,"src":"627:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120278,"nodeType":"ImportDirective","src":"710:80:298","nodes":[],"absolutePath":"src/universal/OptimismMintableERC20.sol","file":"src/universal/OptimismMintableERC20.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":118973,"symbolAliases":[{"foreign":{"id":120277,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"719:21:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120280,"nodeType":"ImportDirective","src":"791:86:298","nodes":[],"absolutePath":"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol","file":"@openzeppelin/contracts/proxy/utils/Initializable.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":42695,"symbolAliases":[{"foreign":{"id":120279,"name":"Initializable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":42694,"src":"800:13:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":120282,"nodeType":"ImportDirective","src":"878:56:298","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":121077,"sourceUnit":112909,"symbolAliases":[{"foreign":{"id":120281,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"887:9:298","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":121076,"nodeType":"ContractDefinition","src":"1260:21668:298","nodes":[{"id":120289,"nodeType":"UsingForDirective","src":"1316:27:298","nodes":[],"global":false,"libraryName":{"id":120286,"name":"SafeERC20","nodeType":"IdentifierPath","referencedDeclaration":44593,"src":"1322:9:298"},"typeName":{"id":120288,"nodeType":"UserDefinedTypeName","pathNode":{"id":120287,"name":"IERC20","nodeType":"IdentifierPath","referencedDeclaration":43398,"src":"1336:6:298"},"referencedDeclaration":43398,"src":"1336:6:298","typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}}},{"id":120293,"nodeType":"VariableDeclaration","src":"1439:60:298","nodes":[],"constant":true,"documentation":{"id":120290,"nodeType":"StructuredDocumentation","src":"1349:85:298","text":"@notice The L2 gas limit set when eth is depoisited using the receive() function."},"mutability":"constant","name":"RECEIVE_DEFAULT_GAS_LIMIT","nameLocation":"1464:25:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120291,"name":"uint32","nodeType":"ElementaryTypeName","src":"1439:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"value":{"hexValue":"3230305f303030","id":120292,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1492:7:298","typeDescriptions":{"typeIdentifier":"t_rational_200000_by_1","typeString":"int_const 200000"},"value":"200_000"},"visibility":"internal"},{"id":120296,"nodeType":"VariableDeclaration","src":"1614:29:298","nodes":[],"constant":false,"documentation":{"id":120294,"nodeType":"StructuredDocumentation","src":"1506:103:298","text":"@custom:legacy\n @custom:spacer messenger\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_0_2_30","nameLocation":"1630:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"},"typeName":{"id":120295,"name":"bytes30","nodeType":"ElementaryTypeName","src":"1614:7:298","typeDescriptions":{"typeIdentifier":"t_bytes30","typeString":"bytes30"}},"visibility":"private"},{"id":120299,"nodeType":"VariableDeclaration","src":"1762:29:298","nodes":[],"constant":false,"documentation":{"id":120297,"nodeType":"StructuredDocumentation","src":"1650:107:298","text":"@custom:legacy\n @custom:spacer l2TokenBridge\n @notice Spacer for backwards compatibility."},"mutability":"mutable","name":"spacer_1_0_20","nameLocation":"1778:13:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120298,"name":"address","nodeType":"ElementaryTypeName","src":"1762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"private"},{"id":120306,"nodeType":"VariableDeclaration","src":"1888:63:298","nodes":[],"constant":false,"documentation":{"id":120300,"nodeType":"StructuredDocumentation","src":"1798:85:298","text":"@notice Mapping that stores deposits for a given pair of local and remote tokens."},"functionSelector":"8f601f66","mutability":"mutable","name":"deposits","nameLocation":"1943:8:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"typeName":{"id":120305,"keyType":{"id":120301,"name":"address","nodeType":"ElementaryTypeName","src":"1896:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1888:47:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"},"valueType":{"id":120304,"keyType":{"id":120302,"name":"address","nodeType":"ElementaryTypeName","src":"1915:7:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"1907:27:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"},"valueType":{"id":120303,"name":"uint256","nodeType":"ElementaryTypeName","src":"1926:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":120310,"nodeType":"VariableDeclaration","src":"2042:38:298","nodes":[],"constant":false,"documentation":{"id":120307,"nodeType":"StructuredDocumentation","src":"1958:79:298","text":"@notice Messenger contract on this domain.\n @custom:network-specific"},"functionSelector":"3cb747bf","mutability":"mutable","name":"messenger","nameLocation":"2071:9:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120309,"nodeType":"UserDefinedTypeName","pathNode":{"id":120308,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"2042:21:298"},"referencedDeclaration":121721,"src":"2042:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"public"},{"id":120314,"nodeType":"VariableDeclaration","src":"2178:33:298","nodes":[],"constant":false,"documentation":{"id":120311,"nodeType":"StructuredDocumentation","src":"2087:86:298","text":"@notice Corresponding bridge on the other domain.\n @custom:network-specific"},"functionSelector":"c89701a2","mutability":"mutable","name":"otherBridge","nameLocation":"2200:11:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120313,"nodeType":"UserDefinedTypeName","pathNode":{"id":120312,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"2178:14:298"},"referencedDeclaration":121076,"src":"2178:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"public"},{"id":120319,"nodeType":"VariableDeclaration","src":"2457:25:298","nodes":[],"constant":false,"documentation":{"id":120315,"nodeType":"StructuredDocumentation","src":"2218:234:298","text":"@notice Reserve extra slots (to a total of 50) in the storage layout for future upgrades.\n A gap size of 45 was chosen here, so that the first slot used in a child contract\n would be a multiple of 50."},"mutability":"mutable","name":"__gap","nameLocation":"2477:5:298","scope":121076,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage","typeString":"uint256[45]"},"typeName":{"baseType":{"id":120316,"name":"uint256","nodeType":"ElementaryTypeName","src":"2457:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120318,"length":{"hexValue":"3435","id":120317,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"2465:2:298","typeDescriptions":{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"},"value":"45"},"nodeType":"ArrayTypeName","src":"2457:11:298","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$45_storage_ptr","typeString":"uint256[45]"}},"visibility":"private"},{"id":120330,"nodeType":"EventDefinition","src":"2771:100:298","nodes":[],"anonymous":false,"documentation":{"id":120320,"nodeType":"StructuredDocumentation","src":"2489:277:298","text":"@notice Emitted when an ETH bridge is initiated to the other chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"2849b43074093a05396b6f2a937dee8565b15a48a7b3d4bffb732a5017380af5","name":"ETHBridgeInitiated","nameLocation":"2777:18:298","parameters":{"id":120329,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120322,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"2812:4:298","nodeType":"VariableDeclaration","scope":120330,"src":"2796:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120321,"name":"address","nodeType":"ElementaryTypeName","src":"2796:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120324,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"2834:2:298","nodeType":"VariableDeclaration","scope":120330,"src":"2818:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120323,"name":"address","nodeType":"ElementaryTypeName","src":"2818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120326,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"2846:6:298","nodeType":"VariableDeclaration","scope":120330,"src":"2838:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120325,"name":"uint256","nodeType":"ElementaryTypeName","src":"2838:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120328,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"2860:9:298","nodeType":"VariableDeclaration","scope":120330,"src":"2854:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120327,"name":"bytes","nodeType":"ElementaryTypeName","src":"2854:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2795:75:298"}},{"id":120341,"nodeType":"EventDefinition","src":"3154:100:298","nodes":[],"anonymous":false,"documentation":{"id":120331,"nodeType":"StructuredDocumentation","src":"2877:272:298","text":"@notice Emitted when an ETH bridge is finalized on this chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of ETH sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"31b2166ff604fc5672ea5df08a78081d2bc6d746cadce880747f3643d819e83d","name":"ETHBridgeFinalized","nameLocation":"3160:18:298","parameters":{"id":120340,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120333,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3195:4:298","nodeType":"VariableDeclaration","scope":120341,"src":"3179:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120332,"name":"address","nodeType":"ElementaryTypeName","src":"3179:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120335,"indexed":true,"mutability":"mutable","name":"to","nameLocation":"3217:2:298","nodeType":"VariableDeclaration","scope":120341,"src":"3201:18:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120334,"name":"address","nodeType":"ElementaryTypeName","src":"3201:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120337,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3229:6:298","nodeType":"VariableDeclaration","scope":120341,"src":"3221:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120336,"name":"uint256","nodeType":"ElementaryTypeName","src":"3221:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120339,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3243:9:298","nodeType":"VariableDeclaration","scope":120341,"src":"3237:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120338,"name":"bytes","nodeType":"ElementaryTypeName","src":"3237:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3178:75:298"}},{"id":120356,"nodeType":"EventDefinition","src":"3690:205:298","nodes":[],"anonymous":false,"documentation":{"id":120342,"nodeType":"StructuredDocumentation","src":"3260:425:298","text":"@notice Emitted when an ERC20 bridge is initiated to the other chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"7ff126db8024424bbfd9826e8ab82ff59136289ea440b04b39a0df1b03b9cabf","name":"ERC20BridgeInitiated","nameLocation":"3696:20:298","parameters":{"id":120355,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120344,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"3742:10:298","nodeType":"VariableDeclaration","scope":120356,"src":"3726:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120343,"name":"address","nodeType":"ElementaryTypeName","src":"3726:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120346,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"3778:11:298","nodeType":"VariableDeclaration","scope":120356,"src":"3762:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120345,"name":"address","nodeType":"ElementaryTypeName","src":"3762:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120348,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"3815:4:298","nodeType":"VariableDeclaration","scope":120356,"src":"3799:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120347,"name":"address","nodeType":"ElementaryTypeName","src":"3799:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120350,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"3837:2:298","nodeType":"VariableDeclaration","scope":120356,"src":"3829:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120349,"name":"address","nodeType":"ElementaryTypeName","src":"3829:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120352,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"3857:6:298","nodeType":"VariableDeclaration","scope":120356,"src":"3849:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120351,"name":"uint256","nodeType":"ElementaryTypeName","src":"3849:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120354,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"3879:9:298","nodeType":"VariableDeclaration","scope":120356,"src":"3873:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120353,"name":"bytes","nodeType":"ElementaryTypeName","src":"3873:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"3716:178:298"}},{"id":120371,"nodeType":"EventDefinition","src":"4326:205:298","nodes":[],"anonymous":false,"documentation":{"id":120357,"nodeType":"StructuredDocumentation","src":"3901:420:298","text":"@notice Emitted when an ERC20 bridge is finalized on this chain.\n @param localToken Address of the ERC20 on this chain.\n @param remoteToken Address of the ERC20 on the remote chain.\n @param from Address of the sender.\n @param to Address of the receiver.\n @param amount Amount of the ERC20 sent.\n @param extraData Extra data sent with the transaction."},"eventSelector":"d59c65b35445225835c83f50b6ede06a7be047d22e357073e250d9af537518cd","name":"ERC20BridgeFinalized","nameLocation":"4332:20:298","parameters":{"id":120370,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120359,"indexed":true,"mutability":"mutable","name":"localToken","nameLocation":"4378:10:298","nodeType":"VariableDeclaration","scope":120371,"src":"4362:26:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120358,"name":"address","nodeType":"ElementaryTypeName","src":"4362:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120361,"indexed":true,"mutability":"mutable","name":"remoteToken","nameLocation":"4414:11:298","nodeType":"VariableDeclaration","scope":120371,"src":"4398:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120360,"name":"address","nodeType":"ElementaryTypeName","src":"4398:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120363,"indexed":true,"mutability":"mutable","name":"from","nameLocation":"4451:4:298","nodeType":"VariableDeclaration","scope":120371,"src":"4435:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120362,"name":"address","nodeType":"ElementaryTypeName","src":"4435:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120365,"indexed":false,"mutability":"mutable","name":"to","nameLocation":"4473:2:298","nodeType":"VariableDeclaration","scope":120371,"src":"4465:10:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120364,"name":"address","nodeType":"ElementaryTypeName","src":"4465:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120367,"indexed":false,"mutability":"mutable","name":"amount","nameLocation":"4493:6:298","nodeType":"VariableDeclaration","scope":120371,"src":"4485:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120366,"name":"uint256","nodeType":"ElementaryTypeName","src":"4485:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120369,"indexed":false,"mutability":"mutable","name":"extraData","nameLocation":"4515:9:298","nodeType":"VariableDeclaration","scope":120371,"src":"4509:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120368,"name":"bytes","nodeType":"ElementaryTypeName","src":"4509:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"4352:178:298"}},{"id":120386,"nodeType":"ModifierDefinition","src":"4834:146:298","nodes":[],"body":{"id":120385,"nodeType":"Block","src":"4853:127:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120380,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4871:31:298","subExpression":{"arguments":[{"expression":{"id":120377,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4891:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120378,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"4891:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":120375,"name":"Address","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":46285,"src":"4872:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Address_$46285_$","typeString":"type(library Address)"}},"id":120376,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"isContract","nodeType":"MemberAccess","referencedDeclaration":46008,"src":"4872:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120379,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4872:30:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20616e20454f41","id":120381,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"4904:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""},"value":"StandardBridge: function can only be called from an EOA"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f81f6db803ded0832643d2e0ed6f9119d9e7648506a58072f4a7195269d8cce8","typeString":"literal_string \"StandardBridge: function can only be called from an EOA\""}],"id":120374,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"4863:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120382,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"4863:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120383,"nodeType":"ExpressionStatement","src":"4863:99:298"},{"id":120384,"nodeType":"PlaceholderStatement","src":"4972:1:298"}]},"documentation":{"id":120372,"nodeType":"StructuredDocumentation","src":"4537:292:298","text":"@notice Only allow EOAs to call the functions. Note that this is not safe against contracts\n calling code within their constructors, but also doesn't really matter since we're\n just trying to prevent users accidentally depositing with smart contract wallets."},"name":"onlyEOA","nameLocation":"4843:7:298","parameters":{"id":120373,"nodeType":"ParameterList","parameters":[],"src":"4850:2:298"},"virtual":false,"visibility":"internal"},{"id":120411,"nodeType":"ModifierDefinition","src":"5074:259:298","nodes":[],"body":{"id":120410,"nodeType":"Block","src":"5101:232:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120405,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120396,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120390,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5132:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120391,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"5132:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120394,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5154:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120393,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5146:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120392,"name":"address","nodeType":"ElementaryTypeName","src":"5146:7:298","typeDescriptions":{}}},"id":120395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5146:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5132:32:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"id":120397,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5168:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120398,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"xDomainMessageSender","nodeType":"MemberAccess","referencedDeclaration":121717,"src":"5168:30:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120399,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5168:32:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":120402,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5212:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120401,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5204:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120400,"name":"address","nodeType":"ElementaryTypeName","src":"5204:7:298","typeDescriptions":{}}},"id":120403,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5204:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"5168:56:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5132:92:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2066756e6374696f6e2063616e206f6e6c792062652063616c6c65642066726f6d20746865206f7468657220627269646765","id":120406,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"5238:67:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""},"value":"StandardBridge: function can only be called from the other bridge"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_cbc7005e6a766806113d4613be79beeb8d602af868fc04e2279ff0ca60009b99","typeString":"literal_string \"StandardBridge: function can only be called from the other bridge\""}],"id":120389,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"5111:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120407,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"5111:204:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120408,"nodeType":"ExpressionStatement","src":"5111:204:298"},{"id":120409,"nodeType":"PlaceholderStatement","src":"5325:1:298"}]},"documentation":{"id":120387,"nodeType":"StructuredDocumentation","src":"4986:83:298","text":"@notice Ensures that the caller is a cross-chain message from the other bridge."},"name":"onlyOtherBridge","nameLocation":"5083:15:298","parameters":{"id":120388,"nodeType":"ParameterList","parameters":[],"src":"5098:2:298"},"virtual":false,"visibility":"internal"},{"id":120432,"nodeType":"FunctionDefinition","src":"5523:237:298","nodes":[],"body":{"id":120431,"nodeType":"Block","src":"5685:75:298","nodes":[],"statements":[{"expression":{"id":120425,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120423,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"5695:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120424,"name":"_messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120415,"src":"5707:10:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"src":"5695:22:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120426,"nodeType":"ExpressionStatement","src":"5695:22:298"},{"expression":{"id":120429,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":120427,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"5727:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":120428,"name":"_otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120418,"src":"5741:12:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"src":"5727:26:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120430,"nodeType":"ExpressionStatement","src":"5727:26:298"}]},"documentation":{"id":120412,"nodeType":"StructuredDocumentation","src":"5339:179:298","text":"@notice Initializer.\n @param _messenger Contract for CrossDomainMessenger on this network.\n @param _otherBridge Contract for the other StandardBridge contract."},"implemented":true,"kind":"function","modifiers":[{"id":120421,"kind":"modifierInvocation","modifierName":{"id":120420,"name":"onlyInitializing","nodeType":"IdentifierPath","referencedDeclaration":42657,"src":"5664:16:298"},"nodeType":"ModifierInvocation","src":"5664:16:298"}],"name":"__StandardBridge_init","nameLocation":"5532:21:298","parameters":{"id":120419,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120415,"mutability":"mutable","name":"_messenger","nameLocation":"5585:10:298","nodeType":"VariableDeclaration","scope":120432,"src":"5563:32:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120414,"nodeType":"UserDefinedTypeName","pathNode":{"id":120413,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"5563:21:298"},"referencedDeclaration":121721,"src":"5563:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"},{"constant":false,"id":120418,"mutability":"mutable","name":"_otherBridge","nameLocation":"5620:12:298","nodeType":"VariableDeclaration","scope":120432,"src":"5605:27:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120417,"nodeType":"UserDefinedTypeName","pathNode":{"id":120416,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"5605:14:298"},"referencedDeclaration":121076,"src":"5605:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"5553:85:298"},"returnParameters":{"id":120422,"nodeType":"ParameterList","parameters":[],"src":"5685:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120436,"nodeType":"FunctionDefinition","src":"5906:35:298","nodes":[],"documentation":{"id":120433,"nodeType":"StructuredDocumentation","src":"5766:135:298","text":"@notice Allows EOAs to bridge ETH by sending directly to the bridge.\n Must be implemented by contracts that inherit."},"implemented":false,"kind":"receive","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":120434,"nodeType":"ParameterList","parameters":[],"src":"5913:2:298"},"returnParameters":{"id":120435,"nodeType":"ParameterList","parameters":[],"src":"5940:0:298"},"scope":121076,"stateMutability":"payable","virtual":true,"visibility":"external"},{"id":120444,"nodeType":"FunctionDefinition","src":"6033:73:298","nodes":[],"documentation":{"id":120437,"nodeType":"StructuredDocumentation","src":"5947:81:298","text":"@notice Returns the address of the custom gas token and the token's decimals."},"implemented":false,"kind":"function","modifiers":[],"name":"gasPayingToken","nameLocation":"6042:14:298","parameters":{"id":120438,"nodeType":"ParameterList","parameters":[],"src":"6056:2:298"},"returnParameters":{"id":120443,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120440,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6090:7:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120439,"name":"address","nodeType":"ElementaryTypeName","src":"6090:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120442,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120444,"src":"6099:5:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"},"typeName":{"id":120441,"name":"uint8","nodeType":"ElementaryTypeName","src":"6099:5:298","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}},"visibility":"internal"}],"src":"6089:16:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"internal"},{"id":120461,"nodeType":"FunctionDefinition","src":"6186:150:298","nodes":[],"body":{"id":120460,"nodeType":"Block","src":"6243:93:298","nodes":[],"statements":[{"assignments":[120451,null],"declarations":[{"constant":false,"id":120451,"mutability":"mutable","name":"token","nameLocation":"6262:5:298","nodeType":"VariableDeclaration","scope":120460,"src":"6254:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120450,"name":"address","nodeType":"ElementaryTypeName","src":"6254:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},null],"id":120454,"initialValue":{"arguments":[],"expression":{"argumentTypes":[],"id":120452,"name":"gasPayingToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120444,"src":"6272:14:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$_t_uint8_$","typeString":"function () view returns (address,uint8)"}},"id":120453,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"6272:16:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_address_$_t_uint8_$","typeString":"tuple(address,uint8)"}},"nodeType":"VariableDeclarationStatement","src":"6253:35:298"},{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120458,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120455,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120451,"src":"6305:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"id":120456,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112908,"src":"6314:9:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Constants_$112908_$","typeString":"type(library Constants)"}},"id":120457,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"ETHER","nodeType":"MemberAccess","referencedDeclaration":112874,"src":"6314:15:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"6305:24:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120449,"id":120459,"nodeType":"Return","src":"6298:31:298"}]},"documentation":{"id":120445,"nodeType":"StructuredDocumentation","src":"6112:69:298","text":"@notice Returns whether the chain uses a custom gas token or not."},"implemented":true,"kind":"function","modifiers":[],"name":"isCustomGasToken","nameLocation":"6195:16:298","parameters":{"id":120446,"nodeType":"ParameterList","parameters":[],"src":"6211:2:298"},"returnParameters":{"id":120449,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120448,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120461,"src":"6237:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120447,"name":"bool","nodeType":"ElementaryTypeName","src":"6237:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"6236:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120471,"nodeType":"FunctionDefinition","src":"6570:100:298","nodes":[],"body":{"id":120470,"nodeType":"Block","src":"6637:33:298","nodes":[],"statements":[{"expression":{"id":120468,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"6654:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"functionReturnParameters":120467,"id":120469,"nodeType":"Return","src":"6647:16:298"}]},"documentation":{"id":120462,"nodeType":"StructuredDocumentation","src":"6342:223:298","text":"@notice Getter for messenger contract.\n Public getter is legacy and will be removed in the future. Use `messenger` instead.\n @return Contract of the messenger on this domain.\n @custom:legacy"},"functionSelector":"927ede2d","implemented":true,"kind":"function","modifiers":[],"name":"MESSENGER","nameLocation":"6579:9:298","parameters":{"id":120463,"nodeType":"ParameterList","parameters":[],"src":"6588:2:298"},"returnParameters":{"id":120467,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120466,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120471,"src":"6614:21:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"},"typeName":{"id":120465,"nodeType":"UserDefinedTypeName","pathNode":{"id":120464,"name":"ICrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121721,"src":"6614:21:298"},"referencedDeclaration":121721,"src":"6614:21:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"visibility":"internal"}],"src":"6613:23:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120481,"nodeType":"FunctionDefinition","src":"6916:98:298","nodes":[],"body":{"id":120480,"nodeType":"Block","src":"6979:35:298","nodes":[],"statements":[{"expression":{"id":120478,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"6996:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"functionReturnParameters":120477,"id":120479,"nodeType":"Return","src":"6989:18:298"}]},"documentation":{"id":120472,"nodeType":"StructuredDocumentation","src":"6676:235:298","text":"@notice Getter for the other bridge contract.\n Public getter is legacy and will be removed in the future. Use `otherBridge` instead.\n @return Contract of the bridge on the other network.\n @custom:legacy"},"functionSelector":"7f46ddb2","implemented":true,"kind":"function","modifiers":[],"name":"OTHER_BRIDGE","nameLocation":"6925:12:298","parameters":{"id":120473,"nodeType":"ParameterList","parameters":[],"src":"6937:2:298"},"returnParameters":{"id":120477,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120476,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120481,"src":"6963:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"},"typeName":{"id":120475,"nodeType":"UserDefinedTypeName","pathNode":{"id":120474,"name":"StandardBridge","nodeType":"IdentifierPath","referencedDeclaration":121076,"src":"6963:14:298"},"referencedDeclaration":121076,"src":"6963:14:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"visibility":"internal"}],"src":"6962:16:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"external"},{"id":120490,"nodeType":"FunctionDefinition","src":"7297:82:298","nodes":[],"body":{"id":120489,"nodeType":"Block","src":"7350:29:298","nodes":[],"statements":[{"expression":{"hexValue":"66616c7365","id":120487,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"7367:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"functionReturnParameters":120486,"id":120488,"nodeType":"Return","src":"7360:12:298"}]},"documentation":{"id":120482,"nodeType":"StructuredDocumentation","src":"7020:272:298","text":"@notice This function should return true if the contract is paused.\n On L1 this function will check the SuperchainConfig for its paused status.\n On L2 this function should be a no-op.\n @return Whether or not the contract is paused."},"functionSelector":"5c975abb","implemented":true,"kind":"function","modifiers":[],"name":"paused","nameLocation":"7306:6:298","parameters":{"id":120483,"nodeType":"ParameterList","parameters":[],"src":"7312:2:298"},"returnParameters":{"id":120486,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120485,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120490,"src":"7344:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120484,"name":"bool","nodeType":"ElementaryTypeName","src":"7344:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7343:6:298"},"scope":121076,"stateMutability":"view","virtual":true,"visibility":"public"},{"id":120512,"nodeType":"FunctionDefinition","src":"7800:186:298","nodes":[],"body":{"id":120511,"nodeType":"Block","src":"7890:96:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120501,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7919:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120502,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7919:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120503,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7931:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120504,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"7931:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120505,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7943:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120506,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"7943:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120507,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120493,"src":"7954:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120508,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120495,"src":"7968:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120500,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"7900:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120509,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"7900:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120510,"nodeType":"ExpressionStatement","src":"7900:79:298"}]},"documentation":{"id":120491,"nodeType":"StructuredDocumentation","src":"7385:410:298","text":"@notice Sends ETH to the sender's address on the other chain.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"09fc8843","implemented":true,"kind":"function","modifiers":[{"id":120498,"kind":"modifierInvocation","modifierName":{"id":120497,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"7882:7:298"},"nodeType":"ModifierInvocation","src":"7882:7:298"}],"name":"bridgeETH","nameLocation":"7809:9:298","parameters":{"id":120496,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120493,"mutability":"mutable","name":"_minGasLimit","nameLocation":"7826:12:298","nodeType":"VariableDeclaration","scope":120512,"src":"7819:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120492,"name":"uint32","nodeType":"ElementaryTypeName","src":"7819:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120495,"mutability":"mutable","name":"_extraData","nameLocation":"7855:10:298","nodeType":"VariableDeclaration","scope":120512,"src":"7840:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120494,"name":"bytes","nodeType":"ElementaryTypeName","src":"7840:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"7818:48:298"},"returnParameters":{"id":120499,"nodeType":"ParameterList","parameters":[],"src":"7890:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120533,"nodeType":"FunctionDefinition","src":"8997:186:298","nodes":[],"body":{"id":120532,"nodeType":"Block","src":"9094:89:298","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":120523,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9123:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120524,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"9123:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120525,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120515,"src":"9135:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120526,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9140:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"9140:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120528,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120517,"src":"9151:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120529,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120519,"src":"9165:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120522,"name":"_initiateBridgeETH","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120812,"src":"9104:18:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,uint32,bytes memory)"}},"id":120530,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"9104:72:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120531,"nodeType":"ExpressionStatement","src":"9104:72:298"}]},"documentation":{"id":120513,"nodeType":"StructuredDocumentation","src":"7992:1000:298","text":"@notice Sends ETH to a receiver's address on the other chain. Note that if ETH is sent to a\n smart contract and the call fails, the ETH will be temporarily locked in the\n StandardBridge on the other chain until the call is replayed. If the call cannot be\n replayed with any amount of gas (call always reverts), then the ETH will be\n permanently locked in the StandardBridge on the other chain. ETH will also\n be locked if the receiver is the other bridge, because finalizeBridgeETH will revert\n in that case.\n @param _to Address of the receiver.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"e11013dd","implemented":true,"kind":"function","modifiers":[],"name":"bridgeETHTo","nameLocation":"9006:11:298","parameters":{"id":120520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120515,"mutability":"mutable","name":"_to","nameLocation":"9026:3:298","nodeType":"VariableDeclaration","scope":120533,"src":"9018:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120514,"name":"address","nodeType":"ElementaryTypeName","src":"9018:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120517,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9038:12:298","nodeType":"VariableDeclaration","scope":120533,"src":"9031:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120516,"name":"uint32","nodeType":"ElementaryTypeName","src":"9031:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120519,"mutability":"mutable","name":"_extraData","nameLocation":"9067:10:298","nodeType":"VariableDeclaration","scope":120533,"src":"9052:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120518,"name":"bytes","nodeType":"ElementaryTypeName","src":"9052:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9017:61:298"},"returnParameters":{"id":120521,"nodeType":"ParameterList","parameters":[],"src":"9094:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120562,"nodeType":"FunctionDefinition","src":"9824:349:298","nodes":[],"body":{"id":120561,"nodeType":"Block","src":"10050:123:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120550,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120536,"src":"10081:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120551,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120538,"src":"10094:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120552,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10108:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120553,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10108:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120554,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10120:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120555,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"10120:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120556,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120540,"src":"10132:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120557,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120542,"src":"10141:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120558,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120544,"src":"10155:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120549,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"10060:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120559,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"10060:106:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120560,"nodeType":"ExpressionStatement","src":"10060:106:298"}]},"documentation":{"id":120534,"nodeType":"StructuredDocumentation","src":"9189:630:298","text":"@notice Sends ERC20 tokens to the sender's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"87087623","implemented":true,"kind":"function","modifiers":[{"id":120547,"kind":"modifierInvocation","modifierName":{"id":120546,"name":"onlyEOA","nodeType":"IdentifierPath","referencedDeclaration":120386,"src":"10038:7:298"},"nodeType":"ModifierInvocation","src":"10038:7:298"}],"name":"bridgeERC20","nameLocation":"9833:11:298","parameters":{"id":120545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120536,"mutability":"mutable","name":"_localToken","nameLocation":"9862:11:298","nodeType":"VariableDeclaration","scope":120562,"src":"9854:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120535,"name":"address","nodeType":"ElementaryTypeName","src":"9854:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120538,"mutability":"mutable","name":"_remoteToken","nameLocation":"9891:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9883:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120537,"name":"address","nodeType":"ElementaryTypeName","src":"9883:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120540,"mutability":"mutable","name":"_amount","nameLocation":"9921:7:298","nodeType":"VariableDeclaration","scope":120562,"src":"9913:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120539,"name":"uint256","nodeType":"ElementaryTypeName","src":"9913:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120542,"mutability":"mutable","name":"_minGasLimit","nameLocation":"9945:12:298","nodeType":"VariableDeclaration","scope":120562,"src":"9938:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120541,"name":"uint32","nodeType":"ElementaryTypeName","src":"9938:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120544,"mutability":"mutable","name":"_extraData","nameLocation":"9982:10:298","nodeType":"VariableDeclaration","scope":120562,"src":"9967:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120543,"name":"bytes","nodeType":"ElementaryTypeName","src":"9967:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9844:154:298"},"returnParameters":{"id":120548,"nodeType":"ParameterList","parameters":[],"src":"10050:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120590,"nodeType":"FunctionDefinition","src":"10867:349:298","nodes":[],"body":{"id":120589,"nodeType":"Block","src":"11100:116:298","nodes":[],"statements":[{"expression":{"arguments":[{"id":120579,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120565,"src":"11131:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120580,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120567,"src":"11144:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":120581,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"11158:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"11158:10:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120583,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120569,"src":"11170:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120584,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120571,"src":"11175:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120585,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120573,"src":"11184:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},{"id":120586,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120575,"src":"11198:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint32","typeString":"uint32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120578,"name":"_initiateBridgeERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120918,"src":"11110:20:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint32_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,uint32,bytes memory)"}},"id":120587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11110:99:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120588,"nodeType":"ExpressionStatement","src":"11110:99:298"}]},"documentation":{"id":120563,"nodeType":"StructuredDocumentation","src":"10179:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"540abf73","implemented":true,"kind":"function","modifiers":[],"name":"bridgeERC20To","nameLocation":"10876:13:298","parameters":{"id":120576,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120565,"mutability":"mutable","name":"_localToken","nameLocation":"10907:11:298","nodeType":"VariableDeclaration","scope":120590,"src":"10899:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120564,"name":"address","nodeType":"ElementaryTypeName","src":"10899:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120567,"mutability":"mutable","name":"_remoteToken","nameLocation":"10936:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"10928:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120566,"name":"address","nodeType":"ElementaryTypeName","src":"10928:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120569,"mutability":"mutable","name":"_to","nameLocation":"10966:3:298","nodeType":"VariableDeclaration","scope":120590,"src":"10958:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120568,"name":"address","nodeType":"ElementaryTypeName","src":"10958:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120571,"mutability":"mutable","name":"_amount","nameLocation":"10987:7:298","nodeType":"VariableDeclaration","scope":120590,"src":"10979:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120570,"name":"uint256","nodeType":"ElementaryTypeName","src":"10979:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120573,"mutability":"mutable","name":"_minGasLimit","nameLocation":"11011:12:298","nodeType":"VariableDeclaration","scope":120590,"src":"11004:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120572,"name":"uint32","nodeType":"ElementaryTypeName","src":"11004:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120575,"mutability":"mutable","name":"_extraData","nameLocation":"11048:10:298","nodeType":"VariableDeclaration","scope":120590,"src":"11033:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120574,"name":"bytes","nodeType":"ElementaryTypeName","src":"11033:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"10889:175:298"},"returnParameters":{"id":120577,"nodeType":"ParameterList","parameters":[],"src":"11100:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"public"},{"id":120672,"nodeType":"FunctionDefinition","src":"11780:1007:298","nodes":[],"body":{"id":120671,"nodeType":"Block","src":"11976:811:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120608,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120605,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"11994:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120606,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11994:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120607,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12006:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"11994:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120609,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12013:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120604,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"11986:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"11986:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120611,"nodeType":"ExpressionStatement","src":"11986:52:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120613,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"12056:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120614,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12056:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120615,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"12078:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"12056:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120617,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12085:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120612,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12048:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120618,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12048:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120619,"nodeType":"ExpressionStatement","src":"12048:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120624,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120621,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12161:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120622,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"12161:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120623,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12174:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12161:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20616d6f756e742073656e7420646f6573206e6f74206d6174636820616d6f756e74207265717569726564","id":120625,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12183:60:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""},"value":"StandardBridge: amount sent does not match amount required"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_749dee892fab459b2a65ea18df9e6a5e7c9a73fce72448f7ab9f6675c56ba5f9","typeString":"literal_string \"StandardBridge: amount sent does not match amount required\""}],"id":120620,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12153:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12153:91:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120627,"nodeType":"ExpressionStatement","src":"12153:91:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120629,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12262:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120632,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"12277:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120631,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12269:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120630,"name":"address","nodeType":"ElementaryTypeName","src":"12269:7:298","typeDescriptions":{}}},"id":120633,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12269:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12262:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f2073656c66","id":120635,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12284:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""},"value":"StandardBridge: cannot send to self"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_364ece159cd10e2597bf40a779e1ef408a544f5e6897b0ca6e317dc7bdbe0069","typeString":"literal_string \"StandardBridge: cannot send to self\""}],"id":120628,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12254:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120636,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12254:68:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120637,"nodeType":"ExpressionStatement","src":"12254:68:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120639,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12340:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"arguments":[{"id":120642,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"12355:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}],"id":120641,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"12347:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120640,"name":"address","nodeType":"ElementaryTypeName","src":"12347:7:298","typeDescriptions":{}}},"id":120643,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12347:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12340:25:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e6420746f206d657373656e676572","id":120645,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12367:42:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""},"value":"StandardBridge: cannot send to messenger"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bb1651f00fbd785fb5543c143a369e5c0d2f97fa08d6d7ef9cc99912d7f788fb","typeString":"literal_string \"StandardBridge: cannot send to messenger\""}],"id":120638,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12332:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12332:78:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120647,"nodeType":"ExpressionStatement","src":"12332:78:298"},{"expression":{"arguments":[{"id":120649,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120593,"src":"12612:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120650,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12619:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120651,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12624:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120652,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120599,"src":"12633:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120648,"name":"_emitETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121023,"src":"12588:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120653,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12588:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120654,"nodeType":"ExpressionStatement","src":"12588:56:298"},{"assignments":[120656],"declarations":[{"constant":false,"id":120656,"mutability":"mutable","name":"success","nameLocation":"12660:7:298","nodeType":"VariableDeclaration","scope":120671,"src":"12655:12:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120655,"name":"bool","nodeType":"ElementaryTypeName","src":"12655:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":120665,"initialValue":{"arguments":[{"id":120659,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120595,"src":"12684:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[],"expression":{"argumentTypes":[],"id":120660,"name":"gasleft","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-7,"src":"12689:7:298","typeDescriptions":{"typeIdentifier":"t_function_gasleft_view$__$returns$_t_uint256_$","typeString":"function () view returns (uint256)"}},"id":120661,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12689:9:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120662,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120597,"src":"12700:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"hexValue":"","id":120663,"isConstant":false,"isLValue":false,"isPure":true,"kind":"hexString","lValueRequested":false,"nodeType":"Literal","src":"12709:5:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},"value":""}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"expression":{"id":120657,"name":"SafeCall","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114979,"src":"12670:8:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_SafeCall_$114979_$","typeString":"type(library SafeCall)"}},"id":120658,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"call","nodeType":"MemberAccess","referencedDeclaration":114889,"src":"12670:13:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$","typeString":"function (address,uint256,uint256,bytes memory) returns (bool)"}},"id":120664,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12670:45:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"12655:60:298"},{"expression":{"arguments":[{"id":120667,"name":"success","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120656,"src":"12733:7:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20455448207472616e73666572206661696c6564","id":120668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"12742:37:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""},"value":"StandardBridge: ETH transfer failed"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2a586f60b387cfb0a96943ab7b9fd5ab5ac1e6a8684db2528d4c0f01b4da8e10","typeString":"literal_string \"StandardBridge: ETH transfer failed\""}],"id":120666,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"12725:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120669,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"12725:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120670,"nodeType":"ExpressionStatement","src":"12725:55:298"}]},"documentation":{"id":120591,"nodeType":"StructuredDocumentation","src":"11222:553:298","text":"@notice Finalizes an ETH bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"1635f5fd","implemented":true,"kind":"function","modifiers":[{"id":120602,"kind":"modifierInvocation","modifierName":{"id":120601,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"11956:15:298"},"nodeType":"ModifierInvocation","src":"11956:15:298"}],"name":"finalizeBridgeETH","nameLocation":"11789:17:298","parameters":{"id":120600,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120593,"mutability":"mutable","name":"_from","nameLocation":"11824:5:298","nodeType":"VariableDeclaration","scope":120672,"src":"11816:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120592,"name":"address","nodeType":"ElementaryTypeName","src":"11816:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120595,"mutability":"mutable","name":"_to","nameLocation":"11847:3:298","nodeType":"VariableDeclaration","scope":120672,"src":"11839:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120594,"name":"address","nodeType":"ElementaryTypeName","src":"11839:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120597,"mutability":"mutable","name":"_amount","nameLocation":"11868:7:298","nodeType":"VariableDeclaration","scope":120672,"src":"11860:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120596,"name":"uint256","nodeType":"ElementaryTypeName","src":"11860:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120599,"mutability":"mutable","name":"_extraData","nameLocation":"11900:10:298","nodeType":"VariableDeclaration","scope":120672,"src":"11885:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120598,"name":"bytes","nodeType":"ElementaryTypeName","src":"11885:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11806:110:298"},"returnParameters":{"id":120603,"nodeType":"ParameterList","parameters":[],"src":"11976:0:298"},"scope":121076,"stateMutability":"payable","virtual":false,"visibility":"public"},{"id":120752,"nodeType":"FunctionDefinition","src":"13519:1084:298","nodes":[],"body":{"id":120751,"nodeType":"Block","src":"13760:843:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120694,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120691,"name":"paused","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120490,"src":"13778:6:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120692,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13778:8:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120693,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"13790:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"13778:17:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a20706175736564","id":120695,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13797:24:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""},"value":"StandardBridge: paused"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_796a3b016435f28d0142426cf97a3be7cae154d6208143a3c367669c1d96cb61","typeString":"literal_string \"StandardBridge: paused\""}],"id":120690,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13770:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120696,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13770:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120697,"nodeType":"ExpressionStatement","src":"13770:52:298"},{"condition":{"arguments":[{"id":120699,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13861:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120698,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"13836:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120700,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13836:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120740,"nodeType":"Block","src":"14153:168:298","statements":[{"expression":{"id":120730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120718,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14167:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120721,"indexExpression":{"id":120719,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14176:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14167:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120722,"indexExpression":{"id":120720,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14189:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"14167:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120729,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120723,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"14205:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120725,"indexExpression":{"id":120724,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14214:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120727,"indexExpression":{"id":120726,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14227:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14205:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"id":120728,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14243:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14205:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14167:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120731,"nodeType":"ExpressionStatement","src":"14167:83:298"},{"expression":{"arguments":[{"id":120736,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14297:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120737,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14302:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120733,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14271:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120732,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"14264:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120734,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120735,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransfer","nodeType":"MemberAccess","referencedDeclaration":44344,"src":"14264:32:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,uint256)"}},"id":120738,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14264:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120739,"nodeType":"ExpressionStatement","src":"14264:46:298"}]},"id":120741,"nodeType":"IfStatement","src":"13832:489:298","trueBody":{"id":120717,"nodeType":"Block","src":"13875:272:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120703,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"13934:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120704,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"13947:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120702,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"13914:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13914:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120706,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"13978:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120701,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"13889:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120707,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"13889:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120708,"nodeType":"ExpressionStatement","src":"13889:179:298"},{"expression":{"arguments":[{"id":120713,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14123:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120714,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14128:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120710,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14105:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120709,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"14083:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120712,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"mint","nodeType":"MemberAccess","referencedDeclaration":118872,"src":"14083:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120715,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14083:53:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120716,"nodeType":"ExpressionStatement","src":"14083:53:298"}]}},{"expression":{"arguments":[{"id":120743,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120675,"src":"14537:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120744,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120677,"src":"14550:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120745,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120679,"src":"14564:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120746,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120681,"src":"14571:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120747,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120683,"src":"14576:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120748,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120685,"src":"14585:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"id":120742,"name":"_emitERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121075,"src":"14511:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120749,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"14511:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120750,"nodeType":"ExpressionStatement","src":"14511:85:298"}]},"documentation":{"id":120673,"nodeType":"StructuredDocumentation","src":"12793:721:298","text":"@notice Finalizes an ERC20 bridge on this chain. Can only be triggered by the other\n StandardBridge contract on the remote chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 being bridged.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"functionSelector":"0166a07a","implemented":true,"kind":"function","modifiers":[{"id":120688,"kind":"modifierInvocation","modifierName":{"id":120687,"name":"onlyOtherBridge","nodeType":"IdentifierPath","referencedDeclaration":120411,"src":"13740:15:298"},"nodeType":"ModifierInvocation","src":"13740:15:298"}],"name":"finalizeBridgeERC20","nameLocation":"13528:19:298","parameters":{"id":120686,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120675,"mutability":"mutable","name":"_localToken","nameLocation":"13565:11:298","nodeType":"VariableDeclaration","scope":120752,"src":"13557:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120674,"name":"address","nodeType":"ElementaryTypeName","src":"13557:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120677,"mutability":"mutable","name":"_remoteToken","nameLocation":"13594:12:298","nodeType":"VariableDeclaration","scope":120752,"src":"13586:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120676,"name":"address","nodeType":"ElementaryTypeName","src":"13586:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120679,"mutability":"mutable","name":"_from","nameLocation":"13624:5:298","nodeType":"VariableDeclaration","scope":120752,"src":"13616:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120678,"name":"address","nodeType":"ElementaryTypeName","src":"13616:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120681,"mutability":"mutable","name":"_to","nameLocation":"13647:3:298","nodeType":"VariableDeclaration","scope":120752,"src":"13639:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120680,"name":"address","nodeType":"ElementaryTypeName","src":"13639:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120683,"mutability":"mutable","name":"_amount","nameLocation":"13668:7:298","nodeType":"VariableDeclaration","scope":120752,"src":"13660:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120682,"name":"uint256","nodeType":"ElementaryTypeName","src":"13660:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120685,"mutability":"mutable","name":"_extraData","nameLocation":"13700:10:298","nodeType":"VariableDeclaration","scope":120752,"src":"13685:25:298","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":120684,"name":"bytes","nodeType":"ElementaryTypeName","src":"13685:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"13547:169:298"},"returnParameters":{"id":120689,"nodeType":"ParameterList","parameters":[],"src":"13760:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":120812,"nodeType":"FunctionDefinition","src":"15191:894:298","nodes":[],"body":{"id":120811,"nodeType":"Block","src":"15377:708:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120770,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[],"expression":{"argumentTypes":[],"id":120767,"name":"isCustomGasToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120461,"src":"15395:16:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_bool_$","typeString":"function () view returns (bool)"}},"id":120768,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15395:18:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"66616c7365","id":120769,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"15417:5:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"15395:27:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742062726964676520455448207769746820637573746f6d2067617320746f6b656e","id":120771,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15424:57:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""},"value":"StandardBridge: cannot bridge ETH with custom gas token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7505dd3c6ae8f7cbf4ae6fa26e0f0e20b6af6d6138ed9a22c484297166e0117d","typeString":"literal_string \"StandardBridge: cannot bridge ETH with custom gas token\""}],"id":120766,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15387:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120772,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15387:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120773,"nodeType":"ExpressionStatement","src":"15387:95:298"},{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120778,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120775,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"15500:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120776,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"15500:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"id":120777,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15513:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15500:20:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a206272696467696e6720455448206d75737420696e636c7564652073756666696369656e74204554482076616c7565","id":120779,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"15522:64:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""},"value":"StandardBridge: bridging ETH must include sufficient ETH value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_950f54835f4d06e00870356a5c9513a8179dddf76cd62de2e9f0d1ce59b30241","typeString":"literal_string \"StandardBridge: bridging ETH must include sufficient ETH value\""}],"id":120774,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"15492:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120780,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15492:95:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120781,"nodeType":"ExpressionStatement","src":"15492:95:298"},{"expression":{"arguments":[{"id":120783,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15789:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120784,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"15796:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120785,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15801:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120786,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"15810:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120782,"name":"_emitETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121003,"src":"15765:23:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":120787,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15765:56:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120788,"nodeType":"ExpressionStatement","src":"15765:56:298"},{"expression":{"arguments":[{"arguments":[{"id":120796,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"15903:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120795,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"15895:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120794,"name":"address","nodeType":"ElementaryTypeName","src":"15895:7:298","typeDescriptions":{}}},"id":120797,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15895:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120800,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"15962:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120801,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeETH","nodeType":"MemberAccess","referencedDeclaration":120672,"src":"15962:22:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory) payable external"}},"id":120802,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"15962:31:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120803,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120755,"src":"15995:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120804,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120757,"src":"16002:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120805,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"16007:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120806,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120763,"src":"16016:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120798,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"15939:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120799,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"15939:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120807,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"15939:88:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120808,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120761,"src":"16055:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120789,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"15832:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120791,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"15832:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120793,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":120792,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120759,"src":"15862:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"15832:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$value","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120809,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"15832:246:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120810,"nodeType":"ExpressionStatement","src":"15832:246:298"}]},"documentation":{"id":120753,"nodeType":"StructuredDocumentation","src":"14609:577:298","text":"@notice Initiates a bridge of ETH through the CrossDomainMessenger.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH being bridged.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeETH","nameLocation":"15200:18:298","parameters":{"id":120764,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120755,"mutability":"mutable","name":"_from","nameLocation":"15236:5:298","nodeType":"VariableDeclaration","scope":120812,"src":"15228:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120754,"name":"address","nodeType":"ElementaryTypeName","src":"15228:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120757,"mutability":"mutable","name":"_to","nameLocation":"15259:3:298","nodeType":"VariableDeclaration","scope":120812,"src":"15251:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120756,"name":"address","nodeType":"ElementaryTypeName","src":"15251:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120759,"mutability":"mutable","name":"_amount","nameLocation":"15280:7:298","nodeType":"VariableDeclaration","scope":120812,"src":"15272:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120758,"name":"uint256","nodeType":"ElementaryTypeName","src":"15272:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120761,"mutability":"mutable","name":"_minGasLimit","nameLocation":"15304:12:298","nodeType":"VariableDeclaration","scope":120812,"src":"15297:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120760,"name":"uint32","nodeType":"ElementaryTypeName","src":"15297:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120763,"mutability":"mutable","name":"_extraData","nameLocation":"15339:10:298","nodeType":"VariableDeclaration","scope":120812,"src":"15326:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120762,"name":"bytes","nodeType":"ElementaryTypeName","src":"15326:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"15218:137:298"},"returnParameters":{"id":120765,"nodeType":"ParameterList","parameters":[],"src":"15377:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120918,"nodeType":"FunctionDefinition","src":"16779:1751:298","nodes":[],"body":{"id":120917,"nodeType":"Block","src":"17026:1504:298","nodes":[],"statements":[{"expression":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":120831,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"17044:3:298","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":120832,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"value","nodeType":"MemberAccess","src":"17044:9:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":120833,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17057:1:298","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17044:14:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2063616e6e6f742073656e642076616c7565","id":120835,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17060:35:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""},"value":"StandardBridge: cannot send value"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5408de193816c02f9b8ffc86ec2714d39cdf1df0a8349b6f84f845081eeae28d","typeString":"literal_string \"StandardBridge: cannot send value\""}],"id":120830,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17036:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120836,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17036:60:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120837,"nodeType":"ExpressionStatement","src":"17036:60:298"},{"condition":{"arguments":[{"id":120839,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17136:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120838,"name":"_isOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120945,"src":"17111:24:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view returns (bool)"}},"id":120840,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17111:37:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120884,"nodeType":"Block","src":"17430:189:298","statements":[{"expression":{"arguments":[{"id":120862,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17481:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":120865,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"17496:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120864,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17488:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120863,"name":"address","nodeType":"ElementaryTypeName","src":"17488:7:298","typeDescriptions":{}}},"id":120866,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17488:13:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120867,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17503:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120859,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17451:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120858,"name":"IERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":43398,"src":"17444:6:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IERC20_$43398_$","typeString":"type(contract IERC20)"}},"id":120860,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:19:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IERC20_$43398","typeString":"contract IERC20"}},"id":120861,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"safeTransferFrom","nodeType":"MemberAccess","referencedDeclaration":44370,"src":"17444:36:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_IERC20_$43398_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$43398_$","typeString":"function (contract IERC20,address,address,uint256)"}},"id":120868,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17444:67:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120869,"nodeType":"ExpressionStatement","src":"17444:67:298"},{"expression":{"id":120882,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":120870,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17525:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120873,"indexExpression":{"id":120871,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17534:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17525:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120874,"indexExpression":{"id":120872,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17547:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"17525:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":120881,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":120875,"name":"deposits","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120306,"src":"17563:8:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$","typeString":"mapping(address => mapping(address => uint256))"}},"id":120877,"indexExpression":{"id":120876,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17572:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:21:298","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_uint256_$","typeString":"mapping(address => uint256)"}},"id":120879,"indexExpression":{"id":120878,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17585:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17563:35:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":120880,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17601:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17563:45:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17525:83:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":120883,"nodeType":"ExpressionStatement","src":"17525:83:298"}]},"id":120885,"nodeType":"IfStatement","src":"17107:512:298","trueBody":{"id":120857,"nodeType":"Block","src":"17150:274:298","statements":[{"expression":{"arguments":[{"arguments":[{"id":120843,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17209:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120844,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17222:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"id":120842,"name":"_isCorrectTokenPair","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120983,"src":"17189:19:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$","typeString":"function (address,address) view returns (bool)"}},"id":120845,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17189:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},{"hexValue":"5374616e646172644272696467653a2077726f6e672072656d6f746520746f6b656e20666f72204f7074696d69736d204d696e7461626c65204552433230206c6f63616c20746f6b656e","id":120846,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"17253:76:298","typeDescriptions":{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""},"value":"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_843f9e9cdac865c94e891377948e585b969802f0a09d901439bce110be0b2c39","typeString":"literal_string \"StandardBridge: wrong remote token for Optimism Mintable ERC20 local token\""}],"id":120841,"name":"require","nodeType":"Identifier","overloadedDeclarations":[-18,-18],"referencedDeclaration":-18,"src":"17164:7:298","typeDescriptions":{"typeIdentifier":"t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$","typeString":"function (bool,string memory) pure"}},"id":120847,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17164:179:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120848,"nodeType":"ExpressionStatement","src":"17164:179:298"},{"expression":{"arguments":[{"id":120853,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17398:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120854,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17405:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"arguments":[{"id":120850,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17380:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120849,"name":"OptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":118972,"src":"17358:21:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_OptimismMintableERC20_$118972_$","typeString":"type(contract OptimismMintableERC20)"}},"id":120851,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:34:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_OptimismMintableERC20_$118972","typeString":"contract OptimismMintableERC20"}},"id":120852,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"burn","nodeType":"MemberAccess","referencedDeclaration":118893,"src":"17358:39:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256) external"}},"id":120855,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17358:55:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120856,"nodeType":"ExpressionStatement","src":"17358:55:298"}]}},{"expression":{"arguments":[{"id":120887,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"17835:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120888,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"17848:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120889,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"17862:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120890,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"17869:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120891,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"17874:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120892,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"17883:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120886,"name":"_emitERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121049,"src":"17809:25:298","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":120893,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17809:85:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120894,"nodeType":"ExpressionStatement","src":"17809:85:298"},{"expression":{"arguments":[{"arguments":[{"id":120900,"name":"otherBridge","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120314,"src":"17958:11:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}],"id":120899,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"17950:7:298","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":120898,"name":"address","nodeType":"ElementaryTypeName","src":"17950:7:298","typeDescriptions":{}}},"id":120901,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17950:20:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"expression":{"expression":{"id":120904,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18034:4:298","typeDescriptions":{"typeIdentifier":"t_contract$_StandardBridge_$121076","typeString":"contract StandardBridge"}},"id":120905,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"finalizeBridgeERC20","nodeType":"MemberAccess","referencedDeclaration":120752,"src":"18034:24:298","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory) external"}},"id":120906,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"selector","nodeType":"MemberAccess","src":"18034:33:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}},{"id":120907,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120817,"src":"18320:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120908,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120815,"src":"18350:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120909,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120819,"src":"18379:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120910,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120821,"src":"18402:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120911,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120823,"src":"18423:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120912,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120827,"src":"18448:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"id":120902,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"17994:3:298","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":120903,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"encodeWithSelector","nodeType":"MemberAccess","src":"17994:22:298","typeDescriptions":{"typeIdentifier":"t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$","typeString":"function (bytes4) pure returns (bytes memory)"}},"id":120913,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"17994:478:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":120914,"name":"_minGasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120825,"src":"18500:12:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint32","typeString":"uint32"}],"expression":{"id":120895,"name":"messenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120310,"src":"17905:9:298","typeDescriptions":{"typeIdentifier":"t_contract$_ICrossDomainMessenger_$121721","typeString":"contract ICrossDomainMessenger"}},"id":120897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sendMessage","nodeType":"MemberAccess","referencedDeclaration":121705,"src":"17905:21:298","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_bytes_memory_ptr_$_t_uint32_$returns$__$","typeString":"function (address,bytes memory,uint32) payable external"}},"id":120915,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_target","_message","_minGasLimit"],"nodeType":"FunctionCall","src":"17905:618:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":120916,"nodeType":"ExpressionStatement","src":"17905:618:298"}]},"documentation":{"id":120813,"nodeType":"StructuredDocumentation","src":"16091:683:298","text":"@notice Sends ERC20 tokens to a receiver's address on the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the corresponding token on the remote chain.\n @param _to Address of the receiver.\n @param _amount Amount of local tokens to deposit.\n @param _minGasLimit Minimum amount of gas that the bridge can be relayed with.\n @param _extraData Extra data to be sent with the transaction. Note that the recipient will\n not be triggered with this data, but it will be emitted and can be used\n to identify the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_initiateBridgeERC20","nameLocation":"16788:20:298","parameters":{"id":120828,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120815,"mutability":"mutable","name":"_localToken","nameLocation":"16826:11:298","nodeType":"VariableDeclaration","scope":120918,"src":"16818:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120814,"name":"address","nodeType":"ElementaryTypeName","src":"16818:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120817,"mutability":"mutable","name":"_remoteToken","nameLocation":"16855:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16847:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120816,"name":"address","nodeType":"ElementaryTypeName","src":"16847:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120819,"mutability":"mutable","name":"_from","nameLocation":"16885:5:298","nodeType":"VariableDeclaration","scope":120918,"src":"16877:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120818,"name":"address","nodeType":"ElementaryTypeName","src":"16877:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120821,"mutability":"mutable","name":"_to","nameLocation":"16908:3:298","nodeType":"VariableDeclaration","scope":120918,"src":"16900:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120820,"name":"address","nodeType":"ElementaryTypeName","src":"16900:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120823,"mutability":"mutable","name":"_amount","nameLocation":"16929:7:298","nodeType":"VariableDeclaration","scope":120918,"src":"16921:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120822,"name":"uint256","nodeType":"ElementaryTypeName","src":"16921:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120825,"mutability":"mutable","name":"_minGasLimit","nameLocation":"16953:12:298","nodeType":"VariableDeclaration","scope":120918,"src":"16946:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"},"typeName":{"id":120824,"name":"uint32","nodeType":"ElementaryTypeName","src":"16946:6:298","typeDescriptions":{"typeIdentifier":"t_uint32","typeString":"uint32"}},"visibility":"internal"},{"constant":false,"id":120827,"mutability":"mutable","name":"_extraData","nameLocation":"16988:10:298","nodeType":"VariableDeclaration","scope":120918,"src":"16975:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120826,"name":"bytes","nodeType":"ElementaryTypeName","src":"16975:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"16808:196:298"},"returnParameters":{"id":120829,"nodeType":"ParameterList","parameters":[],"src":"17026:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":120945,"nodeType":"FunctionDefinition","src":"18794:279:298","nodes":[],"body":{"id":120944,"nodeType":"Block","src":"18873:200:298","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":120942,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"id":120928,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"18922:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120930,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"18935:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120929,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"18930:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120931,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18930:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120932,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"18930:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120926,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18890:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120927,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18890:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120933,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18890:79:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"arguments":[{"id":120936,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120921,"src":"19017:6:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120938,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19030:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}],"id":120937,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19025:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120939,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19025:28:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_IOptimismMintableERC20_$121886","typeString":"type(contract IOptimismMintableERC20)"}},"id":120940,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19025:40:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120934,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"18985:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120935,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"18985:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120941,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"18985:81:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"18890:176:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120925,"id":120943,"nodeType":"Return","src":"18883:183:298"}]},"documentation":{"id":120919,"nodeType":"StructuredDocumentation","src":"18536:253:298","text":"@notice Checks if a given address is an OptimismMintableERC20. Not perfect, but good enough.\n Just the way we like it.\n @param _token Address of the token to check.\n @return True if the token is an OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isOptimismMintableERC20","nameLocation":"18803:24:298","parameters":{"id":120922,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120921,"mutability":"mutable","name":"_token","nameLocation":"18836:6:298","nodeType":"VariableDeclaration","scope":120945,"src":"18828:14:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120920,"name":"address","nodeType":"ElementaryTypeName","src":"18828:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"18827:16:298"},"returnParameters":{"id":120925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120924,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120945,"src":"18867:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120923,"name":"bool","nodeType":"ElementaryTypeName","src":"18867:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"18866:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":120983,"nodeType":"FunctionDefinition","src":"19520:410:298","nodes":[],"body":{"id":120982,"nodeType":"Block","src":"19623:307:298","nodes":[],"statements":[{"condition":{"arguments":[{"id":120957,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19669:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"arguments":[{"id":120959,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19690:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}],"id":120958,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"19685:4:298","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":120960,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19685:26:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_contract$_ILegacyMintableERC20_$121854","typeString":"type(contract ILegacyMintableERC20)"}},"id":120961,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberName":"interfaceId","nodeType":"MemberAccess","src":"19685:38:298","typeDescriptions":{"typeIdentifier":"t_bytes4","typeString":"bytes4"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"expression":{"id":120955,"name":"ERC165Checker","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":47367,"src":"19637:13:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC165Checker_$47367_$","typeString":"type(library ERC165Checker)"}},"id":120956,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"supportsInterface","nodeType":"MemberAccess","referencedDeclaration":47223,"src":"19637:31:298","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_bytes4_$returns$_t_bool_$","typeString":"function (address,bytes4) view returns (bool)"}},"id":120962,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19637:87:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":120980,"nodeType":"Block","src":"19825:99:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120972,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19846:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120974,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19884:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120973,"name":"IOptimismMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121886,"src":"19861:22:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_IOptimismMintableERC20_$121886_$","typeString":"type(contract IOptimismMintableERC20)"}},"id":120975,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:38:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_IOptimismMintableERC20_$121886","typeString":"contract IOptimismMintableERC20"}},"id":120976,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"remoteToken","nodeType":"MemberAccess","referencedDeclaration":121866,"src":"19861:50:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120977,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19861:52:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19846:67:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120979,"nodeType":"Return","src":"19839:74:298"}]},"id":120981,"nodeType":"IfStatement","src":"19633:291:298","trueBody":{"id":120971,"nodeType":"Block","src":"19726:93:298","statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":120969,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":120963,"name":"_otherToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120950,"src":"19747:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[],"expression":{"argumentTypes":[],"expression":{"arguments":[{"id":120965,"name":"_mintableToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120948,"src":"19783:14:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":120964,"name":"ILegacyMintableERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121854,"src":"19762:20:298","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ILegacyMintableERC20_$121854_$","typeString":"type(contract ILegacyMintableERC20)"}},"id":120966,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:36:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ILegacyMintableERC20_$121854","typeString":"contract ILegacyMintableERC20"}},"id":120967,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"l1Token","nodeType":"MemberAccess","referencedDeclaration":121839,"src":"19762:44:298","typeDescriptions":{"typeIdentifier":"t_function_external_view$__$returns$_t_address_$","typeString":"function () view external returns (address)"}},"id":120968,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"19762:46:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"19747:61:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":120954,"id":120970,"nodeType":"Return","src":"19740:68:298"}]}}]},"documentation":{"id":120946,"nodeType":"StructuredDocumentation","src":"19079:436:298","text":"@notice Checks if the \"other token\" is the correct pair token for the OptimismMintableERC20.\n Calls can be saved in the future by combining this logic with\n `_isOptimismMintableERC20`.\n @param _mintableToken OptimismMintableERC20 to check against.\n @param _otherToken Pair token to check.\n @return True if the other token is the correct pair token for the OptimismMintableERC20."},"implemented":true,"kind":"function","modifiers":[],"name":"_isCorrectTokenPair","nameLocation":"19529:19:298","parameters":{"id":120951,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120948,"mutability":"mutable","name":"_mintableToken","nameLocation":"19557:14:298","nodeType":"VariableDeclaration","scope":120983,"src":"19549:22:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120947,"name":"address","nodeType":"ElementaryTypeName","src":"19549:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120950,"mutability":"mutable","name":"_otherToken","nameLocation":"19581:11:298","nodeType":"VariableDeclaration","scope":120983,"src":"19573:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120949,"name":"address","nodeType":"ElementaryTypeName","src":"19573:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"19548:45:298"},"returnParameters":{"id":120954,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120953,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":120983,"src":"19617:4:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":120952,"name":"bool","nodeType":"ElementaryTypeName","src":"19617:4:298","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"19616:6:298"},"scope":121076,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":121003,"nodeType":"FunctionDefinition","src":"20306:251:298","nodes":[],"body":{"id":121002,"nodeType":"Block","src":"20484:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":120996,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120986,"src":"20518:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120997,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120988,"src":"20525:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":120998,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120990,"src":"20530:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":120999,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120992,"src":"20539:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":120995,"name":"ETHBridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120330,"src":"20499:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121000,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"20499:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121001,"nodeType":"EmitStatement","src":"20494:56:298"}]},"documentation":{"id":120984,"nodeType":"StructuredDocumentation","src":"19936:365:298","text":"@notice Emits the ETHBridgeInitiated event and if necessary the appropriate legacy event\n when an ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeInitiated","nameLocation":"20315:23:298","parameters":{"id":120993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":120986,"mutability":"mutable","name":"_from","nameLocation":"20356:5:298","nodeType":"VariableDeclaration","scope":121003,"src":"20348:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120985,"name":"address","nodeType":"ElementaryTypeName","src":"20348:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120988,"mutability":"mutable","name":"_to","nameLocation":"20379:3:298","nodeType":"VariableDeclaration","scope":121003,"src":"20371:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":120987,"name":"address","nodeType":"ElementaryTypeName","src":"20371:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":120990,"mutability":"mutable","name":"_amount","nameLocation":"20400:7:298","nodeType":"VariableDeclaration","scope":121003,"src":"20392:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":120989,"name":"uint256","nodeType":"ElementaryTypeName","src":"20392:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":120992,"mutability":"mutable","name":"_extraData","nameLocation":"20430:10:298","nodeType":"VariableDeclaration","scope":121003,"src":"20417:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":120991,"name":"bytes","nodeType":"ElementaryTypeName","src":"20417:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20338:108:298"},"returnParameters":{"id":120994,"nodeType":"ParameterList","parameters":[],"src":"20484:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121023,"nodeType":"FunctionDefinition","src":"20927:251:298","nodes":[],"body":{"id":121022,"nodeType":"Block","src":"21105:73:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121016,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121006,"src":"21139:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121017,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121008,"src":"21146:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121018,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121010,"src":"21151:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121019,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121012,"src":"21160:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121015,"name":"ETHBridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120341,"src":"21120:18:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,uint256,bytes memory)"}},"id":121020,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21120:51:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121021,"nodeType":"EmitStatement","src":"21115:56:298"}]},"documentation":{"id":121004,"nodeType":"StructuredDocumentation","src":"20563:359:298","text":"@notice Emits the ETHBridgeFinalized and if necessary the appropriate legacy event when an\n ETH bridge is finalized on this chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of ETH sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitETHBridgeFinalized","nameLocation":"20936:23:298","parameters":{"id":121013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121006,"mutability":"mutable","name":"_from","nameLocation":"20977:5:298","nodeType":"VariableDeclaration","scope":121023,"src":"20969:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121005,"name":"address","nodeType":"ElementaryTypeName","src":"20969:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121008,"mutability":"mutable","name":"_to","nameLocation":"21000:3:298","nodeType":"VariableDeclaration","scope":121023,"src":"20992:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121007,"name":"address","nodeType":"ElementaryTypeName","src":"20992:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121010,"mutability":"mutable","name":"_amount","nameLocation":"21021:7:298","nodeType":"VariableDeclaration","scope":121023,"src":"21013:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121009,"name":"uint256","nodeType":"ElementaryTypeName","src":"21013:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121012,"mutability":"mutable","name":"_extraData","nameLocation":"21051:10:298","nodeType":"VariableDeclaration","scope":121023,"src":"21038:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121011,"name":"bytes","nodeType":"ElementaryTypeName","src":"21038:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"20959:108:298"},"returnParameters":{"id":121014,"nodeType":"ParameterList","parameters":[],"src":"21105:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121049,"nodeType":"FunctionDefinition","src":"21711:341:298","nodes":[],"body":{"id":121048,"nodeType":"Block","src":"21950:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121040,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121026,"src":"21986:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121041,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121028,"src":"21999:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121042,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121030,"src":"22013:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121043,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121032,"src":"22020:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121044,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121034,"src":"22025:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121045,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121036,"src":"22034:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121039,"name":"ERC20BridgeInitiated","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120356,"src":"21965:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121046,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"21965:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121047,"nodeType":"EmitStatement","src":"21960:85:298"}]},"documentation":{"id":121024,"nodeType":"StructuredDocumentation","src":"21184:522:298","text":"@notice Emits the ERC20BridgeInitiated event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeInitiated","nameLocation":"21720:25:298","parameters":{"id":121037,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121026,"mutability":"mutable","name":"_localToken","nameLocation":"21763:11:298","nodeType":"VariableDeclaration","scope":121049,"src":"21755:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121025,"name":"address","nodeType":"ElementaryTypeName","src":"21755:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121028,"mutability":"mutable","name":"_remoteToken","nameLocation":"21792:12:298","nodeType":"VariableDeclaration","scope":121049,"src":"21784:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121027,"name":"address","nodeType":"ElementaryTypeName","src":"21784:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121030,"mutability":"mutable","name":"_from","nameLocation":"21822:5:298","nodeType":"VariableDeclaration","scope":121049,"src":"21814:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121029,"name":"address","nodeType":"ElementaryTypeName","src":"21814:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121032,"mutability":"mutable","name":"_to","nameLocation":"21845:3:298","nodeType":"VariableDeclaration","scope":121049,"src":"21837:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121031,"name":"address","nodeType":"ElementaryTypeName","src":"21837:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121034,"mutability":"mutable","name":"_amount","nameLocation":"21866:7:298","nodeType":"VariableDeclaration","scope":121049,"src":"21858:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121033,"name":"uint256","nodeType":"ElementaryTypeName","src":"21858:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121036,"mutability":"mutable","name":"_extraData","nameLocation":"21896:10:298","nodeType":"VariableDeclaration","scope":121049,"src":"21883:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121035,"name":"bytes","nodeType":"ElementaryTypeName","src":"21883:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"21745:167:298"},"returnParameters":{"id":121038,"nodeType":"ParameterList","parameters":[],"src":"21950:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"},{"id":121075,"nodeType":"FunctionDefinition","src":"22585:341:298","nodes":[],"body":{"id":121074,"nodeType":"Block","src":"22824:102:298","nodes":[],"statements":[{"eventCall":{"arguments":[{"id":121066,"name":"_localToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121052,"src":"22860:11:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121067,"name":"_remoteToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121054,"src":"22873:12:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121068,"name":"_from","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121056,"src":"22887:5:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121069,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121058,"src":"22894:3:298","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":121070,"name":"_amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121060,"src":"22899:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":121071,"name":"_extraData","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121062,"src":"22908:10:298","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":121065,"name":"ERC20BridgeFinalized","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":120371,"src":"22839:20:298","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,address,address,address,uint256,bytes memory)"}},"id":121072,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"22839:80:298","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":121073,"nodeType":"EmitStatement","src":"22834:85:298"}]},"documentation":{"id":121050,"nodeType":"StructuredDocumentation","src":"22058:522:298","text":"@notice Emits the ERC20BridgeFinalized event and if necessary the appropriate legacy\n event when an ERC20 bridge is initiated to the other chain.\n @param _localToken Address of the ERC20 on this chain.\n @param _remoteToken Address of the ERC20 on the remote chain.\n @param _from Address of the sender.\n @param _to Address of the receiver.\n @param _amount Amount of the ERC20 sent.\n @param _extraData Extra data sent with the transaction."},"implemented":true,"kind":"function","modifiers":[],"name":"_emitERC20BridgeFinalized","nameLocation":"22594:25:298","parameters":{"id":121063,"nodeType":"ParameterList","parameters":[{"constant":false,"id":121052,"mutability":"mutable","name":"_localToken","nameLocation":"22637:11:298","nodeType":"VariableDeclaration","scope":121075,"src":"22629:19:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121051,"name":"address","nodeType":"ElementaryTypeName","src":"22629:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121054,"mutability":"mutable","name":"_remoteToken","nameLocation":"22666:12:298","nodeType":"VariableDeclaration","scope":121075,"src":"22658:20:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121053,"name":"address","nodeType":"ElementaryTypeName","src":"22658:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121056,"mutability":"mutable","name":"_from","nameLocation":"22696:5:298","nodeType":"VariableDeclaration","scope":121075,"src":"22688:13:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121055,"name":"address","nodeType":"ElementaryTypeName","src":"22688:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121058,"mutability":"mutable","name":"_to","nameLocation":"22719:3:298","nodeType":"VariableDeclaration","scope":121075,"src":"22711:11:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":121057,"name":"address","nodeType":"ElementaryTypeName","src":"22711:7:298","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":121060,"mutability":"mutable","name":"_amount","nameLocation":"22740:7:298","nodeType":"VariableDeclaration","scope":121075,"src":"22732:15:298","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":121059,"name":"uint256","nodeType":"ElementaryTypeName","src":"22732:7:298","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":121062,"mutability":"mutable","name":"_extraData","nameLocation":"22770:10:298","nodeType":"VariableDeclaration","scope":121075,"src":"22757:23:298","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":121061,"name":"bytes","nodeType":"ElementaryTypeName","src":"22757:5:298","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"22619:167:298"},"returnParameters":{"id":121064,"nodeType":"ParameterList","parameters":[],"src":"22824:0:298"},"scope":121076,"stateMutability":"nonpayable","virtual":true,"visibility":"internal"}],"abstract":true,"baseContracts":[{"baseName":{"id":120284,"name":"Initializable","nodeType":"IdentifierPath","referencedDeclaration":42694,"src":"1296:13:298"},"id":120285,"nodeType":"InheritanceSpecifier","src":"1296:13:298"}],"canonicalName":"StandardBridge","contractDependencies":[],"contractKind":"contract","documentation":{"id":120283,"nodeType":"StructuredDocumentation","src":"936:324:298","text":"@custom:upgradeable\n @title StandardBridge\n @notice StandardBridge is a base contract for the L1 and L2 standard ERC20 bridges. It handles\n the core bridging logic, including escrowing tokens that are native to the local chain\n and minting/burning tokens that are native to the remote chain."},"fullyImplemented":false,"linearizedBaseContracts":[121076,42694],"name":"StandardBridge","nameLocation":"1278:14:298","scope":121077,"usedErrors":[]}],"license":"MIT"},"id":298}