{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"MESSAGE_VERSION","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_CALLDATA_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"OTHER_MESSENGER","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"RELAY_CALL_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_CONSTANT_OVERHEAD","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_GAS_CHECK_BUFFER","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"RELAY_RESERVED_GAS","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"baseGas","inputs":[{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"pure"},{"type":"function","name":"failedMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_l1CrossDomainMessenger","type":"address","internalType":"contract CrossDomainMessenger"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"l1CrossDomainMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"messageNonce","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"otherMessenger","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract CrossDomainMessenger"}],"stateMutability":"view"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"relayMessage","inputs":[{"name":"_nonce","type":"uint256","internalType":"uint256"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_target","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"},{"name":"_minGasLimit","type":"uint256","internalType":"uint256"},{"name":"_message","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"sendMessage","inputs":[{"name":"_target","type":"address","internalType":"address"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_minGasLimit","type":"uint32","internalType":"uint32"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"successfulMessages","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"xDomainMessageSender","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"FailedRelayedMessage","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint8","indexed":false,"internalType":"uint8"}],"anonymous":false},{"type":"event","name":"RelayedMessage","inputs":[{"name":"msgHash","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SentMessage","inputs":[{"name":"target","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":false,"internalType":"address"},{"name":"message","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"messageNonce","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"gasLimit","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SentMessageExtension1","inputs":[{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"value","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x60806040523480156200001157600080fd5b506200001e600062000024565b62000239565b600054600160a81b900460ff16158080156200004d57506000546001600160a01b90910460ff16105b806200008457506200006a306200017360201b620013101760201c565b158015620000845750600054600160a01b900460ff166001145b620000ed5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff60a01b1916600160a01b17905580156200011b576000805460ff60a81b1916600160a81b1790555b620001268262000182565b80156200016f576000805460ff60a81b19169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b6001600160a01b03163b151590565b600054600160a81b900460ff16620001f15760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401620000e4565b60cc546001600160a01b0316620002175760cc80546001600160a01b03191661dead1790555b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b611c8b80620002496000396000f3fe6080604052600436106101755760003560e01c806383a74074116100cb578063b1b1b2091161007f578063d764ad0b11610059578063d764ad0b146103d2578063db505d80146103e5578063ecc704281461041257600080fd5b8063b1b1b20914610362578063b28ade2514610392578063c4d66de8146103b257600080fd5b80639fce812c116100b05780639fce812c14610307578063a4e7f8bd14610332578063a71198691461030757600080fd5b806383a74074146102f05780638cbeeef21461021457600080fd5b80634c1d6a691161012d5780635c975abb116101075780635c975abb146102965780636e296e45146102b65780637f87f5201461021457600080fd5b80634c1d6a691461021457806354fd4d501461022a5780635644cfdf1461028057600080fd5b80632828d7e81161015e5780632828d7e8146101c25780633dbb202b146101d75780633f827a5a146101ec57600080fd5b8063028f85f71461017a5780630c568498146101ad575b600080fd5b34801561018657600080fd5b5061018f601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101b957600080fd5b5061018f603f81565b3480156101ce57600080fd5b5061018f604081565b6101ea6101e5366004611784565b610477565b005b3480156101f857600080fd5b50610201600181565b60405161ffff90911681526020016101a4565b34801561022057600080fd5b5061018f619c4081565b34801561023657600080fd5b506102736040518060400160405280600581526020017f322e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a49190611856565b34801561028c57600080fd5b5061018f61138881565b3480156102a257600080fd5b5060005b60405190151581526020016101a4565b3480156102c257600080fd5b506102cb6106d4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a4565b3480156102fc57600080fd5b5061018f62030d4081565b34801561031357600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff166102cb565b34801561033e57600080fd5b506102a661034d366004611870565b60ce6020526000908152604090205460ff1681565b34801561036e57600080fd5b506102a661037d366004611870565b60cb6020526000908152604090205460ff1681565b34801561039e57600080fd5b5061018f6103ad366004611889565b6107c0565b3480156103be57600080fd5b506101ea6103cd3660046118dd565b61082c565b6101ea6103e03660046118fa565b610a2b565b3480156103f157600080fd5b5060cf546102cb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041e57600080fd5b5061046960cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101a4565b60cf546105a99073ffffffffffffffffffffffffffffffffffffffff1661049f8585856107c0565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061050b60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c60405160240161052797969594939291906119c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261132c565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a33858561062e60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b86604051610640959493929190611a28565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000619c408080603f6107da604063ffffffff8816611aa5565b6107e49190611ad5565b6107ef601088611aa5565b6107fc9062030d40611b23565b6108069190611b23565b6108109190611b23565b61081a9190611b23565b6108249190611b23565b949350505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610877575060005460017401000000000000000000000000000000000000000090910460ff16105b806108a95750303b1580156108a9575060005474010000000000000000000000000000000000000000900460ff166001145b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161079a565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156109bb57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6109c4826113ba565b8015610a2757600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60f087901c60028110610ae6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a40161079a565b8061ffff16600003610bdb576000610b37878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506114f6915050565b600081815260cb602052604090205490915060ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c61796564000000000000000000606482015260840161079a565b505b6000610c21898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061151592505050565b9050610c6a60cf54337fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef0173ffffffffffffffffffffffffffffffffffffffff90811691161490565b15610ca257853414610c7e57610c7e611b4f565b600081815260ce602052604090205460ff1615610c9d57610c9d611b4f565b610df4565b3415610d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a40161079a565b600081815260ce602052604090205460ff16610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c6179656400000000000000000000000000000000606482015260840161079a565b610dfd87611538565b15610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a40161079a565b600081815260cb602052604090205460ff1615610f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c6179656400000000000000000000606482015260840161079a565b610f7085610f61611388619c40611b23565b67ffffffffffffffff1661158d565b1580610f96575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110af57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161079a565b5050611307565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061114088619c405a6111039190611b7e565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ab92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055905080156111f657600082815260cb602052604090205460ff161561119357611193611b4f565b600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611303565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611303576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161079a565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac90849061138290889088908790600401611b95565b6000604051808303818588803b15801561139b57600080fd5b505af11580156113af573d6000803e3d6000fd5b505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff16611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161079a565b60cc5473ffffffffffffffffffffffffffffffffffffffff166114af5760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611504858585856115c5565b805190602001209050949350505050565b600061152587878787878761165e565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301480611587575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016115de9493929190611bdd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161167b96959493929190611c27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461171f57600080fd5b50565b60008083601f84011261173457600080fd5b50813567ffffffffffffffff81111561174c57600080fd5b60208301915083602082850101111561176457600080fd5b9250929050565b803563ffffffff8116811461177f57600080fd5b919050565b6000806000806060858703121561179a57600080fd5b84356117a5816116fd565b9350602085013567ffffffffffffffff8111156117c157600080fd5b6117cd87828801611722565b90945092506117e090506040860161176b565b905092959194509250565b6000815180845260005b81811015611811576020818501810151868301820152016117f5565b81811115611823576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061186960208301846117eb565b9392505050565b60006020828403121561188257600080fd5b5035919050565b60008060006040848603121561189e57600080fd5b833567ffffffffffffffff8111156118b557600080fd5b6118c186828701611722565b90945092506118d490506020850161176b565b90509250925092565b6000602082840312156118ef57600080fd5b8135611869816116fd565b600080600080600080600060c0888a03121561191557600080fd5b873596506020880135611927816116fd565b95506040880135611937816116fd565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561196157600080fd5b61196d8a828b01611722565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611a1b60c083018486611980565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611a58608083018688611980565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611acc57611acc611a76565b02949350505050565b600067ffffffffffffffff80841680611b17577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611b4657611b46611a76565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611b9057611b90611a76565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611bd460608301846117eb565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611c1660808301856117eb565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611c7260c08301846117eb565b9897505050505050505056fea164736f6c634300080f000a","sourceMap":"917:1937:164:-:0;;;1129:127;;;;;;;;;-1:-1:-1;1176:73:164::1;1243:1;1176:10;:73::i;:::-;917:1937:::0;;1384:175;3111:19:32;3134:13;-1:-1:-1;;;3134:13:32;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:32;;3212:1;-1:-1:-1;;;3197:12:32;;;;;:16;3179:34;3178:108;;;;3220:44;3258:4;3220:29;;;;;:44;;:::i;:::-;3219:45;:66;;;;-1:-1:-1;3268:12:32;;-1:-1:-1;;;3268:12:32;;;;3284:1;3268:17;3219:66;3157:201;;;;-1:-1:-1;;;3157:201:32;;216:2:416;3157:201:32;;;198:21:416;255:2;235:18;;;228:30;294:34;274:18;;;267:62;-1:-1:-1;;;345:18:416;;;338:44;399:19;;3157:201:32;;;;;;;;;3368:12;:16;;-1:-1:-1;;;;3368:16:32;-1:-1:-1;;;3368:16:32;;;3394:65;;;;3428:13;:20;;-1:-1:-1;;;;3428:20:32;-1:-1:-1;;;3428:20:32;;;3394:65;1479:73:164::1;1526:23:::0;1479:27:::1;:73::i;:::-;3483:14:32::0;3479:99;;;3529:5;3513:21;;-1:-1:-1;;;;3513:21:32;;;3553:14;;-1:-1:-1;581:36:416;;3553:14:32;;569:2:416;554:18;3553:14:32;;;;;;;3479:99;3101:483;1384:175:164;:::o;1186:320:38:-;-1:-1:-1;;;;;1476:19:38;;:23;;;1186:320::o;18772:636:267:-;4910:13:32;;-1:-1:-1;;;4910:13:32;;;;4902:69;;;;-1:-1:-1;;;4902:69:32;;830:2:416;4902:69:32;;;812:21:416;869:2;849:18;;;842:30;908:34;888:18;;;881:62;-1:-1:-1;;;959:18:416;;;952:41;1010:19;;4902:69:32;628:407:416;4902:69:32;19257:16:267::1;::::0;-1:-1:-1;;;;;19257:16:267::1;19253:107;;19303:16;:46:::0;;-1:-1:-1;;;;;;19303:46:267::1;1338:42:215;19303:46:267;::::0;;19253:107:::1;19369:14;:32:::0;;-1:-1:-1;;;;;;19369:32:267::1;-1:-1:-1::0;;;;;19369:32:267;;;::::1;::::0;;;::::1;::::0;;18772:636::o;628:407:416:-;917:1937:164;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101755760003560e01c806383a74074116100cb578063b1b1b2091161007f578063d764ad0b11610059578063d764ad0b146103d2578063db505d80146103e5578063ecc704281461041257600080fd5b8063b1b1b20914610362578063b28ade2514610392578063c4d66de8146103b257600080fd5b80639fce812c116100b05780639fce812c14610307578063a4e7f8bd14610332578063a71198691461030757600080fd5b806383a74074146102f05780638cbeeef21461021457600080fd5b80634c1d6a691161012d5780635c975abb116101075780635c975abb146102965780636e296e45146102b65780637f87f5201461021457600080fd5b80634c1d6a691461021457806354fd4d501461022a5780635644cfdf1461028057600080fd5b80632828d7e81161015e5780632828d7e8146101c25780633dbb202b146101d75780633f827a5a146101ec57600080fd5b8063028f85f71461017a5780630c568498146101ad575b600080fd5b34801561018657600080fd5b5061018f601081565b60405167ffffffffffffffff90911681526020015b60405180910390f35b3480156101b957600080fd5b5061018f603f81565b3480156101ce57600080fd5b5061018f604081565b6101ea6101e5366004611784565b610477565b005b3480156101f857600080fd5b50610201600181565b60405161ffff90911681526020016101a4565b34801561022057600080fd5b5061018f619c4081565b34801561023657600080fd5b506102736040518060400160405280600581526020017f322e312e3000000000000000000000000000000000000000000000000000000081525081565b6040516101a49190611856565b34801561028c57600080fd5b5061018f61138881565b3480156102a257600080fd5b5060005b60405190151581526020016101a4565b3480156102c257600080fd5b506102cb6106d4565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101a4565b3480156102fc57600080fd5b5061018f62030d4081565b34801561031357600080fd5b5060cf5473ffffffffffffffffffffffffffffffffffffffff166102cb565b34801561033e57600080fd5b506102a661034d366004611870565b60ce6020526000908152604090205460ff1681565b34801561036e57600080fd5b506102a661037d366004611870565b60cb6020526000908152604090205460ff1681565b34801561039e57600080fd5b5061018f6103ad366004611889565b6107c0565b3480156103be57600080fd5b506101ea6103cd3660046118dd565b61082c565b6101ea6103e03660046118fa565b610a2b565b3480156103f157600080fd5b5060cf546102cb9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561041e57600080fd5b5061046960cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b6040519081526020016101a4565b60cf546105a99073ffffffffffffffffffffffffffffffffffffffff1661049f8585856107c0565b347fd764ad0b0000000000000000000000000000000000000000000000000000000061050b60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b338a34898c8c60405160240161052797969594939291906119c9565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915261132c565b8373ffffffffffffffffffffffffffffffffffffffff167fcb0f7ffd78f9aee47a248fae8db181db6eee833039123e026dcbff529522e52a33858561062e60cd547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167e010000000000000000000000000000000000000000000000000000000000001790565b86604051610640959493929190611a28565b60405180910390a260405134815233907f8ebb2ec2465bdb2a06a66fc37a0963af8a2a6a1479d81d56fdb8cbb98096d5469060200160405180910390a2505060cd80547dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff808216600101167fffff0000000000000000000000000000000000000000000000000000000000009091161790555050565b60cc5460009073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff2153016107a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603560248201527f43726f7373446f6d61696e4d657373656e6765723a2078446f6d61696e4d657360448201527f7361676553656e646572206973206e6f7420736574000000000000000000000060648201526084015b60405180910390fd5b5060cc5473ffffffffffffffffffffffffffffffffffffffff1690565b6000619c408080603f6107da604063ffffffff8816611aa5565b6107e49190611ad5565b6107ef601088611aa5565b6107fc9062030d40611b23565b6108069190611b23565b6108109190611b23565b61081a9190611b23565b6108249190611b23565b949350505050565b6000547501000000000000000000000000000000000000000000900460ff1615808015610877575060005460017401000000000000000000000000000000000000000090910460ff16105b806108a95750303b1580156108a9575060005474010000000000000000000000000000000000000000900460ff166001145b610935576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a6564000000000000000000000000000000000000606482015260840161079a565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000017905580156109bb57600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff1675010000000000000000000000000000000000000000001790555b6109c4826113ba565b8015610a2757600080547fffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffffff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60f087901c60028110610ae6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604d60248201527f43726f7373446f6d61696e4d657373656e6765723a206f6e6c7920766572736960448201527f6f6e2030206f722031206d657373616765732061726520737570706f7274656460648201527f20617420746869732074696d6500000000000000000000000000000000000000608482015260a40161079a565b8061ffff16600003610bdb576000610b37878986868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508f92506114f6915050565b600081815260cb602052604090205490915060ff1615610bd9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603760248201527f43726f7373446f6d61696e4d657373656e6765723a206c65676163792077697460448201527f6864726177616c20616c72656164792072656c61796564000000000000000000606482015260840161079a565b505b6000610c21898989898989898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061151592505050565b9050610c6a60cf54337fffffffffffffffffffffffffeeeeffffffffffffffffffffffffffffffffeeef0173ffffffffffffffffffffffffffffffffffffffff90811691161490565b15610ca257853414610c7e57610c7e611b4f565b600081815260ce602052604090205460ff1615610c9d57610c9d611b4f565b610df4565b3415610d56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152605060248201527f43726f7373446f6d61696e4d657373656e6765723a2076616c7565206d75737460448201527f206265207a65726f20756e6c657373206d6573736167652069732066726f6d2060648201527f612073797374656d206164647265737300000000000000000000000000000000608482015260a40161079a565b600081815260ce602052604090205460ff16610df4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603060248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520636160448201527f6e6e6f74206265207265706c6179656400000000000000000000000000000000606482015260840161079a565b610dfd87611538565b15610eb0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152604360248201527f43726f7373446f6d61696e4d657373656e6765723a2063616e6e6f742073656e60448201527f64206d65737361676520746f20626c6f636b65642073797374656d206164647260648201527f6573730000000000000000000000000000000000000000000000000000000000608482015260a40161079a565b600081815260cb602052604090205460ff1615610f4f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603660248201527f43726f7373446f6d61696e4d657373656e6765723a206d65737361676520686160448201527f7320616c7265616479206265656e2072656c6179656400000000000000000000606482015260840161079a565b610f7085610f61611388619c40611b23565b67ffffffffffffffff1661158d565b1580610f96575060cc5473ffffffffffffffffffffffffffffffffffffffff1661dead14155b156110af57600081815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555182917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff32016110a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161079a565b5050611307565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8a16179055600061114088619c405a6111039190611b7e565b8988888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506115ab92505050565b60cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead179055905080156111f657600082815260cb602052604090205460ff161561119357611193611b4f565b600082815260cb602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f4641df4a962071e12719d8c8c8e5ac7fc4d97b927346a3d7a335b1f7517e133c91a2611303565b600082815260ce602052604080822080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790555183917f99d0e048484baa1b1540b1367cb128acd7ab2946d1ed91ec10e3c85e4bf51b8f91a27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3201611303576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602d60248201527f43726f7373446f6d61696e4d657373656e6765723a206661696c656420746f2060448201527f72656c6179206d65737361676500000000000000000000000000000000000000606482015260840161079a565b5050505b50505050505050565b73ffffffffffffffffffffffffffffffffffffffff163b151590565b6040517fc2b3e5ac0000000000000000000000000000000000000000000000000000000081527342000000000000000000000000000000000000169063c2b3e5ac90849061138290889088908790600401611b95565b6000604051808303818588803b15801561139b57600080fd5b505af11580156113af573d6000803e3d6000fd5b505050505050505050565b6000547501000000000000000000000000000000000000000000900460ff16611465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e67000000000000000000000000000000000000000000606482015260840161079a565b60cc5473ffffffffffffffffffffffffffffffffffffffff166114af5760cc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001661dead1790555b60cf80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000611504858585856115c5565b805190602001209050949350505050565b600061152587878787878761165e565b8051906020012090509695505050505050565b600073ffffffffffffffffffffffffffffffffffffffff8216301480611587575073ffffffffffffffffffffffffffffffffffffffff8216734200000000000000000000000000000000000016145b92915050565b600080603f83619c4001026040850201603f5a021015949350505050565b600080600080845160208601878a8af19695505050505050565b6060848484846040516024016115de9493929190611bdd565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fcbd4ece9000000000000000000000000000000000000000000000000000000001790529050949350505050565b606086868686868660405160240161167b96959493929190611c27565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fd764ad0b0000000000000000000000000000000000000000000000000000000017905290509695505050505050565b73ffffffffffffffffffffffffffffffffffffffff8116811461171f57600080fd5b50565b60008083601f84011261173457600080fd5b50813567ffffffffffffffff81111561174c57600080fd5b60208301915083602082850101111561176457600080fd5b9250929050565b803563ffffffff8116811461177f57600080fd5b919050565b6000806000806060858703121561179a57600080fd5b84356117a5816116fd565b9350602085013567ffffffffffffffff8111156117c157600080fd5b6117cd87828801611722565b90945092506117e090506040860161176b565b905092959194509250565b6000815180845260005b81811015611811576020818501810151868301820152016117f5565b81811115611823576000602083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60208152600061186960208301846117eb565b9392505050565b60006020828403121561188257600080fd5b5035919050565b60008060006040848603121561189e57600080fd5b833567ffffffffffffffff8111156118b557600080fd5b6118c186828701611722565b90945092506118d490506020850161176b565b90509250925092565b6000602082840312156118ef57600080fd5b8135611869816116fd565b600080600080600080600060c0888a03121561191557600080fd5b873596506020880135611927816116fd565b95506040880135611937816116fd565b9450606088013593506080880135925060a088013567ffffffffffffffff81111561196157600080fd5b61196d8a828b01611722565b989b979a50959850939692959293505050565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b878152600073ffffffffffffffffffffffffffffffffffffffff808916602084015280881660408401525085606083015263ffffffff8516608083015260c060a0830152611a1b60c083018486611980565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff86168152608060208201526000611a58608083018688611980565b905083604083015263ffffffff831660608301529695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600067ffffffffffffffff80831681851681830481118215151615611acc57611acc611a76565b02949350505050565b600067ffffffffffffffff80841680611b17577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b92169190910492915050565b600067ffffffffffffffff808316818516808303821115611b4657611b46611a76565b01949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600082821015611b9057611b90611a76565b500390565b73ffffffffffffffffffffffffffffffffffffffff8416815267ffffffffffffffff83166020820152606060408201526000611bd460608301846117eb565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808716835280861660208401525060806040830152611c1660808301856117eb565b905082606083015295945050505050565b868152600073ffffffffffffffffffffffffffffffffffffffff808816602084015280871660408401525084606083015283608083015260c060a0830152611c7260c08301846117eb565b9897505050505050505056fea164736f6c634300080f000a","sourceMap":"917:1937:164:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4456:53:267;;;;;;;;;;;;4507:2;4456:53;;;;;188:18:416;176:31;;;158:50;;146:2;131:18;4456:53:267;;;;;;;;4301:64;;;;;;;;;;;;4363:2;4301:64;;4146:62;;;;;;;;;;;;4206:2;4146:62;;8881:995;;;;;;:::i;:::-;;:::i;:::-;;3879:42;;;;;;;;;;;;3920:1;3879:42;;;;;1693:6:416;1681:19;;;1663:38;;1651:2;1636:18;3879:42:267;1519:188:416;4597:51:267;;;;;;;;;;;;4642:6;4597:51;;1018:40:164;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;4943:53:267:-;;;;;;;;;;;;4991:5;4943:53;;21567:82;;;;;;;;;;-1:-1:-1;21614:4:267;21567:82;;;2638:14:416;;2631:22;2613:41;;2601:2;2586:18;21567:82:267;2473:187:416;16033:250:267;;;;;;;;;;;;;:::i;:::-;;;2841:42:416;2829:55;;;2811:74;;2799:2;2784:18;16033:250:267;2665:226:416;3999:56:267;;;;;;;;;;;;4048:7;3999:56;;16586:108;;;;;;;;;;-1:-1:-1;16673:14:267;;;;16586:108;;6494:46;;;;;;;;;;-1:-1:-1;6494:46:267;;;;;:::i;:::-;;;;;;;;;;;;;;;;5512:50;;;;;;;;;;-1:-1:-1;5512:50:267;;;;;:::i;:::-;;;;;;;;;;;;;;;;17762:894;;;;;;;;;;-1:-1:-1;17762:894:267;;;;;:::i;:::-;;:::i;1384:175:164:-;;;;;;;;;;-1:-1:-1;1384:175:164;;;;;:::i;:::-;;:::i;10564:5082:267:-;;;;;;:::i;:::-;;:::i;6646:42::-;;;;;;;;;;-1:-1:-1;6646:42:267;;;;;;;;17015:134;;;;;;;;;;;;17116:8;;;;4855:18:216;4852:30;;17015:134:267;;;;5155:25:416;;;5143:2;5128:18;17015:134:267;5009:177:416;8881:995:267;9381:14;;9341:326;;9381:14;;9421:31;9429:8;;9439:12;9421:7;:31::i;:::-;9474:9;9544:26;9572:14;17116:8;;;;4855:18:216;4852:30;;17015:134:267;9572:14;9588:10;9600:7;9609:9;9620:12;9634:8;;9504:152;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9341:12;:326::i;:::-;9695:7;9683:72;;;9704:10;9716:8;;9726:14;17116:8;;;;4855:18:216;4852:30;;17015:134:267;9726:14;9742:12;9683:72;;;;;;;;;;:::i;:::-;;;;;;;;9770:44;;9804:9;5155:25:416;;9792:10:267;;9770:44;;5143:2:416;5128:18;9770:44:267;;;;;;;-1:-1:-1;;9851:8:267;9849:10;;;;;;;;;;;;;;;;-1:-1:-1;;8881:995:267:o;16033:250::-;16128:16;;16088:7;;16128:47;:16;:47;;16107:135;;;;;;;6954:2:416;16107:135:267;;;6936:21:416;6993:2;6973:18;;;6966:30;7032:34;7012:18;;;7005:62;7103:23;7083:18;;;7076:51;7144:19;;16107:135:267;;;;;;;;;-1:-1:-1;16260:16:267;;;;;16033:250::o;17762:894::-;17846:6;5250;4796;;4363:2;18075:49;4206:2;18075:49;;;;:::i;:::-;18074:90;;;;:::i;:::-;17972:51;4507:2;17979:8;17972:51;:::i;:::-;17908:116;;4048:7;17908:116;:::i;:::-;:257;;;;:::i;:::-;:412;;;;:::i;:::-;:587;;;;:::i;:::-;:741;;;;:::i;:::-;17864:785;17762:894;-1:-1:-1;;;;17762:894:267:o;1384:175:164:-;3111:19:32;3134:13;;;;;;3133:14;;3179:34;;;;-1:-1:-1;3197:12:32;;3212:1;3197:12;;;;;;:16;3179:34;3178:108;;;-1:-1:-1;3258:4:32;1476:19:38;:23;;;3219:66:32;;-1:-1:-1;3268:12:32;;;;;;;3284:1;3268:17;3219:66;3157:201;;;;;;;8439:2:416;3157:201:32;;;8421:21:416;8478:2;8458:18;;;8451:30;8517:34;8497:18;;;8490:62;8588:16;8568:18;;;8561:44;8622:19;;3157:201:32;8237:410:416;3157:201:32;3368:12;:16;;;;;;;;3394:65;;;;3428:13;:20;;;;;;;;3394:65;1479:73:164::1;1526:23;1479:27;:73::i;:::-;3483:14:32::0;3479:99;;;3529:5;3513:21;;;;;;3553:14;;-1:-1:-1;8804:36:416;;3553:14:32;;8792:2:416;8777:18;3553:14:32;;;;;;;3479:99;3101:483;1384:175:164;:::o;10564:5082:267:-;5444:3:216;5440:16;;;11138:1:267;11128:11;;11120:101;;;;;;;9410:2:416;11120:101:267;;;9392:21:416;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;9559:34;9539:18;;;9532:62;9631:15;9610:19;;;9603:44;9664:19;;11120:101:267;9208:481:416;11120:101:267;11423:7;:12;;11434:1;11423:12;11419:247;;11451:15;11469:68;11502:7;11511;11520:8;;11469:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11530:6:267;;-1:-1:-1;11469:32:267;;-1:-1:-1;;11469:68:267:i;:::-;11559:27;;;;:18;:27;;;;;;11451:86;;-1:-1:-1;11559:27:267;;:36;11551:104;;;;;;;9896:2:416;11551:104:267;;;9878:21:416;9935:2;9915:18;;;9908:30;9974:34;9954:18;;;9947:62;10045:25;10025:18;;;10018:53;10088:19;;11551:104:267;9694:419:416;11551:104:267;11437:229;11419:247;11836:21;11872:90;11905:6;11913:7;11922;11931:6;11939:12;11953:8;;11872:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11872:32:267;;-1:-1:-1;;;11872:90:267:i;:::-;11836:126;;11977:19;2597:14:164;;2574:10;1685:27:281;;2597:14:164;2539:73;;;2597:14;;2539:73;;2455:164;11977:19:267;11973:506;;;12166:6;12153:9;:19;12146:27;;;;:::i;:::-;12195:29;;;;:14;:29;;;;;;;;12194:30;12187:38;;;;:::i;:::-;11973:506;;;12264:9;:14;12256:107;;;;;;;10509:2:416;12256:107:267;;;10491:21:416;10548:2;10528:18;;;10521:30;10587:34;10567:18;;;10560:62;10658:34;10638:18;;;10631:62;10730:18;10709:19;;;10702:47;10766:19;;12256:107:267;10307:484:416;12256:107:267;12386:29;;;;:14;:29;;;;;;;;12378:90;;;;;;;10998:2:416;12378:90:267;;;10980:21:416;11037:2;11017:18;;;11010:30;11076:34;11056:18;;;11049:62;11147:18;11127;;;11120:46;11183:19;;12378:90:267;10796:412:416;12378:90:267;12510:24;12526:7;12510:15;:24::i;:::-;:33;12489:135;;;;;;;11415:2:416;12489:135:267;;;11397:21:416;11454:2;11434:18;;;11427:30;11493:34;11473:18;;;11466:62;11564:34;11544:18;;;11537:62;11636:5;11615:19;;;11608:34;11659:19;;12489:135:267;11213:471:416;12489:135:267;12643:33;;;;:18;:33;;;;;;;;:42;12635:109;;;;;;;11891:2:416;12635:109:267;;;11873:21:416;11930:2;11910:18;;;11903:30;11969:34;11949:18;;;11942:62;12040:24;12020:18;;;12013:52;12082:19;;12635:109:267;11689:418:416;12635:109:267;13438:77;13457:12;13471:43;4991:5;4796:6;13471:43;:::i;:::-;13438:77;;:18;:77::i;:::-;13437:78;:145;;;-1:-1:-1;13535:16:267;;:47;:16;1338:42:215;13535:47:267;;13437:145;13420:919;;;13607:29;;;;:14;:29;;;;;;:36;;;;13639:4;13607:36;;;13662:35;13622:13;;13662:35;;;14177:41;:9;:41;14173:135;;14238:55;;;;;12314:2:416;14238:55:267;;;12296:21:416;12353:2;12333:18;;;12326:30;12392:34;12372:18;;;12365:62;12463:15;12443:18;;;12436:43;12496:19;;14238:55:267;12112:409:416;14173:135:267;14322:7;;;;13420:919;14349:16;:26;;;;;;;;;;-1:-1:-1;14400:72:267;14414:7;4796:6;14423:9;:30;;;;:::i;:::-;14455:6;14463:8;;14400:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14400:13:267;;-1:-1:-1;;;14400:72:267:i;:::-;14482:16;:46;;;;1338:42:215;14482:46:267;;;14385:87;-1:-1:-1;14539:1101:267;;;;14753:33;;;;:18;:33;;;;;;;;:42;14746:50;;;;:::i;:::-;14810:33;;;;:18;:33;;;;;;:40;;;;14846:4;14810:40;;;14869:29;14829:13;;14869:29;;;14539:1101;;;14929:29;;;;:14;:29;;;;;;:36;;;;14961:4;14929:36;;;14984:35;14944:13;;14984:35;;;15499:41;:9;:41;15495:135;;15560:55;;;;;12314:2:416;15560:55:267;;;12296:21:416;12353:2;12333:18;;;12326:30;12392:34;12372:18;;;12365:62;12463:15;12443:18;;;12436:43;12496:19;;15560:55:267;12112:409:416;15495:135:267;10806:4840;;;10564:5082;;;;;;;;:::o;1186:320:38:-;1476:19;;;:23;;;1186:320::o;2139:269:164:-;2256:145;;;;;2990:42:222;;2256:83:164;;2348:6;;2256:145;;2370:3;;2375:9;;2386:5;;2256:145;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2139:269;;;;:::o;18772:636:267:-;4910:13:32;;;;;;;4902:69;;;;;;;13296:2:416;4902:69:32;;;13278:21:416;13335:2;13315:18;;;13308:30;13374:34;13354:18;;;13347:62;13445:13;13425:18;;;13418:41;13476:19;;4902:69:32;13094:407:416;4902:69:32;19257:16:267::1;::::0;:30:::1;:16;19253:107;;19303:16;:46:::0;;;::::1;1338:42:215;19303:46:267;::::0;;19253:107:::1;19369:14;:32:::0;;;::::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18772:636::o;3100:305:218:-;3289:7;3329:68;3365:7;3374;3383:5;3390:6;3329:35;:68::i;:::-;3319:79;;;;;;3312:86;;3100:305;;;;;;:::o;3877:375::-;4117:7;4157:87;4193:6;4201:7;4210;4219:6;4227:9;4238:5;4157:35;:87::i;:::-;4147:98;;;;;;4140:105;;3877:375;;;;;;;;:::o;2666:186:164:-;2740:4;2763:24;;;2782:4;2763:24;;:82;;-1:-1:-1;2791:54:164;;;2990:42:222;2791:54:164;2763:82;2756:89;2666:186;-1:-1:-1;;2666:186:164:o;3615:365:224:-;3696:4;3712:15;3931:2;3916:12;3909:5;3905:24;3901:33;3896:2;3887:7;3883:16;3879:56;3874:2;3867:5;3863:14;3860:76;3853:84;;3615:365;-1:-1:-1;;;;3615:365:224:o;1202:536::-;1305:4;1321:13;1668:1;1635;1594:9;1588:16;1554:2;1543:9;1539:18;1496:6;1454:7;1421:4;1395:302;1367:330;1202:536;-1:-1:-1;;;;;;1202:536:224:o;3073:336:216:-;3264:12;3370:7;3379;3388:5;3395:6;3299:103;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3073:336:216;;;;;;:::o;3883:516::-;4125:12;4272:6;4292:7;4313;4334:6;4354:9;4377:5;4160:232;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3883:516:216;;;;;;;;:::o;219:154:416:-;305:42;298:5;294:54;287:5;284:65;274:93;;363:1;360;353:12;274:93;219:154;:::o;378:347::-;429:8;439:6;493:3;486:4;478:6;474:17;470:27;460:55;;511:1;508;501:12;460:55;-1:-1:-1;534:20:416;;577:18;566:30;;563:50;;;609:1;606;599:12;563:50;646:4;638:6;634:17;622:29;;698:3;691:4;682:6;674;670:19;666:30;663:39;660:59;;;715:1;712;705:12;660:59;378:347;;;;;:::o;730:163::-;797:20;;857:10;846:22;;836:33;;826:61;;883:1;880;873:12;826:61;730:163;;;:::o;898:616::-;985:6;993;1001;1009;1062:2;1050:9;1041:7;1037:23;1033:32;1030:52;;;1078:1;1075;1068:12;1030:52;1117:9;1104:23;1136:31;1161:5;1136:31;:::i;:::-;1186:5;-1:-1:-1;1242:2:416;1227:18;;1214:32;1269:18;1258:30;;1255:50;;;1301:1;1298;1291:12;1255:50;1340:58;1390:7;1381:6;1370:9;1366:22;1340:58;:::i;:::-;1417:8;;-1:-1:-1;1314:84:416;-1:-1:-1;1471:37:416;;-1:-1:-1;1504:2:416;1489:18;;1471:37;:::i;:::-;1461:47;;898:616;;;;;;;:::o;1712:531::-;1754:3;1792:5;1786:12;1819:6;1814:3;1807:19;1844:1;1854:162;1868:6;1865:1;1862:13;1854:162;;;1930:4;1986:13;;;1982:22;;1976:29;1958:11;;;1954:20;;1947:59;1883:12;1854:162;;;2034:6;2031:1;2028:13;2025:87;;;2100:1;2093:4;2084:6;2079:3;2075:16;2071:27;2064:38;2025:87;-1:-1:-1;2157:2:416;2145:15;2162:66;2141:88;2132:98;;;;2232:4;2128:109;;1712:531;-1:-1:-1;;1712:531:416:o;2248:220::-;2397:2;2386:9;2379:21;2360:4;2417:45;2458:2;2447:9;2443:18;2435:6;2417:45;:::i;:::-;2409:53;2248:220;-1:-1:-1;;;2248:220:416:o;3158:180::-;3217:6;3270:2;3258:9;3249:7;3245:23;3241:32;3238:52;;;3286:1;3283;3276:12;3238:52;-1:-1:-1;3309:23:416;;3158:180;-1:-1:-1;3158:180:416:o;3343:481::-;3421:6;3429;3437;3490:2;3478:9;3469:7;3465:23;3461:32;3458:52;;;3506:1;3503;3496:12;3458:52;3546:9;3533:23;3579:18;3571:6;3568:30;3565:50;;;3611:1;3608;3601:12;3565:50;3650:58;3700:7;3691:6;3680:9;3676:22;3650:58;:::i;:::-;3727:8;;-1:-1:-1;3624:84:416;-1:-1:-1;3781:37:416;;-1:-1:-1;3814:2:416;3799:18;;3781:37;:::i;:::-;3771:47;;3343:481;;;;;:::o;3829:278::-;3919:6;3972:2;3960:9;3951:7;3947:23;3943:32;3940:52;;;3988:1;3985;3978:12;3940:52;4027:9;4014:23;4046:31;4071:5;4046:31;:::i;4112:892::-;4227:6;4235;4243;4251;4259;4267;4275;4328:3;4316:9;4307:7;4303:23;4299:33;4296:53;;;4345:1;4342;4335:12;4296:53;4381:9;4368:23;4358:33;;4441:2;4430:9;4426:18;4413:32;4454:31;4479:5;4454:31;:::i;:::-;4504:5;-1:-1:-1;4561:2:416;4546:18;;4533:32;4574:33;4533:32;4574:33;:::i;:::-;4626:7;-1:-1:-1;4680:2:416;4665:18;;4652:32;;-1:-1:-1;4731:3:416;4716:19;;4703:33;;-1:-1:-1;4787:3:416;4772:19;;4759:33;4815:18;4804:30;;4801:50;;;4847:1;4844;4837:12;4801:50;4886:58;4936:7;4927:6;4916:9;4912:22;4886:58;:::i;:::-;4112:892;;;;-1:-1:-1;4112:892:416;;-1:-1:-1;4112:892:416;;;;4860:84;;-1:-1:-1;;;4112:892:416:o;5191:325::-;5279:6;5274:3;5267:19;5331:6;5324:5;5317:4;5312:3;5308:14;5295:43;;5383:1;5376:4;5367:6;5362:3;5358:16;5354:27;5347:38;5249:3;5505:4;5435:66;5430:2;5422:6;5418:15;5414:88;5409:3;5405:98;5401:109;5394:116;;5191:325;;;;:::o;5521:697::-;5816:6;5805:9;5798:25;5779:4;5842:42;5932:2;5924:6;5920:15;5915:2;5904:9;5900:18;5893:43;5984:2;5976:6;5972:15;5967:2;5956:9;5952:18;5945:43;;6024:6;6019:2;6008:9;6004:18;5997:34;6080:10;6072:6;6068:23;6062:3;6051:9;6047:19;6040:52;6129:3;6123;6112:9;6108:19;6101:32;6150:62;6207:3;6196:9;6192:19;6184:6;6176;6150:62;:::i;:::-;6142:70;5521:697;-1:-1:-1;;;;;;;;;5521:697:416:o;6223:524::-;6475:42;6467:6;6463:55;6452:9;6445:74;6555:3;6550:2;6539:9;6535:18;6528:31;6426:4;6576:62;6633:3;6622:9;6618:19;6610:6;6602;6576:62;:::i;:::-;6568:70;;6674:6;6669:2;6658:9;6654:18;6647:34;6729:10;6721:6;6717:23;6712:2;6701:9;6697:18;6690:51;6223:524;;;;;;;;:::o;7174:184::-;7226:77;7223:1;7216:88;7323:4;7320:1;7313:15;7347:4;7344:1;7337:15;7363:270;7402:7;7434:18;7479:2;7476:1;7472:10;7509:2;7506:1;7502:10;7565:3;7561:2;7557:12;7552:3;7549:21;7542:3;7535:11;7528:19;7524:47;7521:73;;;7574:18;;:::i;:::-;7614:13;;7363:270;-1:-1:-1;;;;7363:270:416:o;7638:353::-;7677:1;7703:18;7748:2;7745:1;7741:10;7770:3;7760:191;;7807:77;7804:1;7797:88;7908:4;7905:1;7898:15;7936:4;7933:1;7926:15;7760:191;7969:10;;7965:20;;;;;7638:353;-1:-1:-1;;7638:353:416:o;7996:236::-;8035:3;8063:18;8108:2;8105:1;8101:10;8138:2;8135:1;8131:10;8169:3;8165:2;8161:12;8156:3;8153:21;8150:47;;;8177:18;;:::i;:::-;8213:13;;7996:236;-1:-1:-1;;;;7996:236:416:o;10118:184::-;10170:77;10167:1;10160:88;10267:4;10264:1;10257:15;10291:4;10288:1;10281:15;12526:125;12566:4;12594:1;12591;12588:8;12585:34;;;12599:18;;:::i;:::-;-1:-1:-1;12636:9:416;;12526:125::o;12656:433::-;12870:42;12862:6;12858:55;12847:9;12840:74;12962:18;12954:6;12950:31;12945:2;12934:9;12930:18;12923:59;13018:2;13013;13002:9;12998:18;12991:30;12821:4;13038:45;13079:2;13068:9;13064:18;13056:6;13038:45;:::i;:::-;13030:53;12656:433;-1:-1:-1;;;;;12656:433:416:o;13506:512::-;13700:4;13729:42;13810:2;13802:6;13798:15;13787:9;13780:34;13862:2;13854:6;13850:15;13845:2;13834:9;13830:18;13823:43;;13902:3;13897:2;13886:9;13882:18;13875:31;13923:46;13964:3;13953:9;13949:19;13941:6;13923:46;:::i;:::-;13915:54;;14005:6;14000:2;13989:9;13985:18;13978:34;13506:512;;;;;;;:::o;14023:656::-;14310:6;14299:9;14292:25;14273:4;14336:42;14426:2;14418:6;14414:15;14409:2;14398:9;14394:18;14387:43;14478:2;14470:6;14466:15;14461:2;14450:9;14446:18;14439:43;;14518:6;14513:2;14502:9;14498:18;14491:34;14562:6;14556:3;14545:9;14541:19;14534:35;14606:3;14600;14589:9;14585:19;14578:32;14627:46;14668:3;14657:9;14653:19;14645:6;14627:46;:::i;:::-;14619:54;14023:656;-1:-1:-1;;;;;;;;14023:656:416:o","linkReferences":{}},"methodIdentifiers":{"MESSAGE_VERSION()":"3f827a5a","MIN_GAS_CALLDATA_OVERHEAD()":"028f85f7","MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":"0c568498","MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":"2828d7e8","OTHER_MESSENGER()":"9fce812c","RELAY_CALL_OVERHEAD()":"4c1d6a69","RELAY_CONSTANT_OVERHEAD()":"83a74074","RELAY_GAS_CHECK_BUFFER()":"5644cfdf","RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":"7f87f520","RELAY_RESERVED_GAS()":"8cbeeef2","baseGas(bytes,uint32)":"b28ade25","failedMessages(bytes32)":"a4e7f8bd","initialize(address)":"c4d66de8","l1CrossDomainMessenger()":"a7119869","messageNonce()":"ecc70428","otherMessenger()":"db505d80","paused()":"5c975abb","relayMessage(uint256,address,address,uint256,uint256,bytes)":"d764ad0b","sendMessage(address,bytes,uint32)":"3dbb202b","successfulMessages(bytes32)":"b1b1b209","version()":"54fd4d50","xDomainMessageSender()":"6e296e45"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.15+commit.e14f2714\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"FailedRelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"msgHash\",\"type\":\"bytes32\"}],\"name\":\"RelayedMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"messageNonce\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"gasLimit\",\"type\":\"uint256\"}],\"name\":\"SentMessage\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"SentMessageExtension1\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MESSAGE_VERSION\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_CALLDATA_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"OTHER_MESSENGER\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CALL_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_CONSTANT_OVERHEAD\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_GAS_CHECK_BUFFER\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAY_RESERVED_GAS\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"baseGas\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"failedMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"_l1CrossDomainMessenger\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"l1CrossDomainMessenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"messageNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"otherMessenger\",\"outputs\":[{\"internalType\":\"contract CrossDomainMessenger\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minGasLimit\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"}],\"name\":\"relayMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_message\",\"type\":\"bytes\"},{\"internalType\":\"uint32\",\"name\":\"_minGasLimit\",\"type\":\"uint32\"}],\"name\":\"sendMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"successfulMessages\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"xDomainMessageSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"custom:proxied\":\"@custom:predeploy 0x4200000000000000000000000000000000000007\",\"kind\":\"dev\",\"methods\":{\"OTHER_MESSENGER()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"CrossDomainMessenger contract on the other chain.\"}},\"baseGas(bytes,uint32)\":{\"params\":{\"_message\":\"Message to compute the amount of required gas for.\",\"_minGasLimit\":\"Minimum desired gas limit when message goes to target.\"},\"returns\":{\"_0\":\"Amount of gas required to guarantee message receipt.\"}},\"initialize(address)\":{\"params\":{\"_l1CrossDomainMessenger\":\"L1CrossDomainMessenger contract on the other network.\"}},\"l1CrossDomainMessenger()\":{\"custom:legacy\":\"\",\"returns\":{\"_0\":\"L1CrossDomainMessenger contract.\"}},\"messageNonce()\":{\"returns\":{\"_0\":\"Nonce of the next message to be sent, with added message version.\"}},\"paused()\":{\"returns\":{\"_0\":\"Whether or not the contract is paused.\"}},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"params\":{\"_message\":\"Message to send to the target.\",\"_minGasLimit\":\"Minimum amount of gas that the message can be executed with.\",\"_nonce\":\"Nonce of the message being relayed.\",\"_sender\":\"Address of the user who sent the message.\",\"_target\":\"Address that the message is targeted at.\",\"_value\":\"ETH value to send with the message.\"}},\"sendMessage(address,bytes,uint32)\":{\"params\":{\"_message\":\"Message to trigger the target address with.\",\"_minGasLimit\":\"Minimum gas limit that the message can be executed with.\",\"_target\":\"Target contract or wallet address.\"}},\"xDomainMessageSender()\":{\"returns\":{\"_0\":\"Address of the sender of the currently executing message on the other chain.\"}}},\"stateVariables\":{\"version\":{\"custom:semver\":\"2.1.0\"}},\"title\":\"L2CrossDomainMessenger\",\"version\":1},\"userdoc\":{\"events\":{\"FailedRelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message fails to be relayed on this chain.\"},\"RelayedMessage(bytes32)\":{\"notice\":\"Emitted whenever a message is successfully relayed on this chain.\"},\"SentMessage(address,address,bytes,uint256,uint256)\":{\"notice\":\"Emitted whenever a message is sent to the other chain.\"},\"SentMessageExtension1(address,uint256)\":{\"notice\":\"Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough.\"}},\"kind\":\"user\",\"methods\":{\"MESSAGE_VERSION()\":{\"notice\":\"Current message version identifier.\"},\"MIN_GAS_CALLDATA_OVERHEAD()\":{\"notice\":\"Extra gas added to base gas for each byte of calldata in a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()\":{\"notice\":\"Denominator for dynamic overhead added to the base gas for a message.\"},\"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()\":{\"notice\":\"Numerator for dynamic overhead added to the base gas for a message.\"},\"OTHER_MESSENGER()\":{\"notice\":\"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead.\"},\"RELAY_CALL_OVERHEAD()\":{\"notice\":\"Gas reserved for performing the external call in `relayMessage`.\"},\"RELAY_CONSTANT_OVERHEAD()\":{\"notice\":\"Constant overhead added to the base gas for a message.\"},\"RELAY_GAS_CHECK_BUFFER()\":{\"notice\":\"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`.\"},\"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()\":{\"notice\":\"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)\"},\"RELAY_RESERVED_GAS()\":{\"notice\":\"Gas reserved for finalizing the execution of `relayMessage` after the safe call.\"},\"baseGas(bytes,uint32)\":{\"notice\":\"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely.\"},\"constructor\":{\"notice\":\"Constructs the L2CrossDomainMessenger contract.\"},\"failedMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt.\"},\"initialize(address)\":{\"notice\":\"Initializer.\"},\"l1CrossDomainMessenger()\":{\"notice\":\"Getter for the remote messenger.         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead.\"},\"messageNonce()\":{\"notice\":\"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures.\"},\"otherMessenger()\":{\"notice\":\"CrossDomainMessenger contract on the other chain.\"},\"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.\"},\"relayMessage(uint256,address,address,uint256,uint256,bytes)\":{\"notice\":\"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed.\"},\"sendMessage(address,bytes,uint32)\":{\"notice\":\"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function).\"},\"successfulMessages(bytes32)\":{\"notice\":\"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again.\"},\"xDomainMessageSender()\":{\"notice\":\"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it.\"}},\"notice\":\"The L2CrossDomainMessenger is a high-level interface for message passing between L1 and         L2 on the L2 side. Users are generally encouraged to use this contract instead of lower         level message passing contracts.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/L2/L2CrossDomainMessenger.sol\":\"L2CrossDomainMessenger\"},\"evmVersion\":\"london\",\"libraries\":{\"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker\":\"0x4200000000000000000000000000000000000776\"},\"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/=lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/\",\":@rari-capital/solmate/=lib/solmate/\",\":@solady-test/=lib/lib-keccak/lib/solady/test/\",\":@solady/=lib/solady/src/\",\":automate/=lib/automate/contracts/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/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/=lib/openzeppelin-contracts/\",\":openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/\",\":openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/\",\":prb-test/=lib/automate/lib/prb-test/src/\",\":prb/-est/=lib/automate/lib/prb-test/src/\",\":safe-contracts/=lib/safe-contracts/contracts/\",\":solady/=lib/solady/\",\":solmate/=lib/solmate/src/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497\",\"dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4\",\"dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt\"]},\"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f\",\"dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV\"]},\"lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0xd6153ce99bcdcce22b124f755e72553295be6abcd63804cfdffceb188b8bef10\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://35c47bece3c03caaa07fab37dd2bb3413bfbca20db7bd9895024390e0a469487\",\"dweb:/ipfs/QmPGWT2x3QHcKxqe6gRmAkdakhbaRgx3DLzcakHz5M4eXG\"]},\"lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929\",\"dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC\"]},\"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689\",\"dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy\"]},\"lib/solady/src/utils/LibString.sol\":{\"keccak256\":\"0x74ec81acbea6db4afe149ab51e26961bcb801af42f7af98242be71b866066200\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://16bb49824fcfa9667aeed0eb515fdefda1016225085cf78ed852078c67168229\",\"dweb:/ipfs/QmZ59xrx5QLSx5N5CiTLrfwsPKR7kpK4RRpiEWSMEpvDzQ\"]},\"lib/solmate/src/utils/FixedPointMathLib.sol\":{\"keccak256\":\"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c\",\"dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8\"]},\"src/L1/ResourceMetering.sol\":{\"keccak256\":\"0x069f3449a0408d7a9d05f3a5e01cce5e9c746591d8f3c87b43fcf9723bf7301d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://124fff8e3b3c5992f04f1c92ceac09b003b880ec43031ef4ce816b2750184805\",\"dweb:/ipfs/QmfRxhi3hRdAhFkMLjX6RgHeFnWtkTJveQe8DVJcvRv3Er\"]},\"src/L2/L1Block.sol\":{\"keccak256\":\"0x1f8894a2ab02b402c2e9d4d94b8f3d3bc4423e4b1236fb167f7e705f2a115e80\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://291b05252e8e5394ec13718d6f2d15750f55f11d79224961abcd1c03689f66fc\",\"dweb:/ipfs/QmRGQXadbHNy3ZHbCNCKU8XPg4wqvQBzRMAk5JTRucioFZ\"]},\"src/L2/L2CrossDomainMessenger.sol\":{\"keccak256\":\"0x0f33dd89e43592759c6b18c99deab4f094906ad268b241f4a735061f7ea0dd6d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a36b88a869b733513021462d75d317d4d6b90c9efb4027c389f9c0a9dafea4d6\",\"dweb:/ipfs/QmNxFVRLVweCH7kPiqtx3ABCYuYrnTXhuAKqTLwe2rusmX\"]},\"src/L2/L2ToL1MessagePasser.sol\":{\"keccak256\":\"0x11ed508ce01a9a9726fcf8966c1e51fc5229686a9efdb883cc21f5ad57f77472\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5c4e7e928cda73675bfeb4c6c620fd6cb74e25bc5bb97725e3007aac9c305bf9\",\"dweb:/ipfs/QmcZoug2nnve5CtAdFtxVxmFBiCBkJPfHciGhtCFhWiFRh\"]},\"src/libraries/Arithmetic.sol\":{\"keccak256\":\"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72\",\"dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq\"]},\"src/libraries/Burn.sol\":{\"keccak256\":\"0x8676782233b8ee5735e9f09225a40acb8d9bdcb6b223ef356fda91058c24ed14\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://53956d4ade06cd8c76b81c71a35a5d3f139c4f992753deac68edb3232bfe5265\",\"dweb:/ipfs/QmX9H6eVXpUNDEXcGDYgTAksR2quinGXDds275svLRt2fd\"]},\"src/libraries/Constants.sol\":{\"keccak256\":\"0x0a52edff4eb90806c5fd570e9c4be2e04327facb9af24e8d15c6cdea9f7a6395\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9b009c00e43bfc2794ee8954a57e37084eb6fdc05c215aab19f8d697d1a86ca5\",\"dweb:/ipfs/QmQNzUfs95W6dLVPrHj8ik51uhiD5acihYcxZBDhpTCw4f\"]},\"src/libraries/Encoding.sol\":{\"keccak256\":\"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11\",\"dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE\"]},\"src/libraries/GasPayingToken.sol\":{\"keccak256\":\"0xf19e06af2387c0febaa4a77f93e35dfaf367cac318c804b9023eba0cb5b35237\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c1b26566a54ea67c802261882e26322baf6100480613c6582337fb85d7d82d8\",\"dweb:/ipfs/QmPt5FLyGAeJVx1tDXHP55B91xgn4AwQk91WaCJkFV7kTw\"]},\"src/libraries/Hashing.sol\":{\"keccak256\":\"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12\",\"dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF\"]},\"src/libraries/L1BlockErrors.sol\":{\"keccak256\":\"0x34996ccf6dad2275743a9cfc9b5bed1295ab58afd3ad23c2f3e099b0eec22cdc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://faa82b96c691f9293dac833ef3afc10ca59a306e00de0334b1882cdfcad49594\",\"dweb:/ipfs/QmZzwimfHtv9tF8d31MWMUq9w7Gks6edMqc21JQkm6RoP2\"]},\"src/libraries/Predeploys.sol\":{\"keccak256\":\"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3\",\"dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3\"]},\"src/libraries/SafeCall.sol\":{\"keccak256\":\"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a\",\"dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq\"]},\"src/libraries/Storage.sol\":{\"keccak256\":\"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269\",\"dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK\"]},\"src/libraries/Types.sol\":{\"keccak256\":\"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e\",\"dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc\"]},\"src/libraries/rlp/RLPWriter.sol\":{\"keccak256\":\"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b\",\"dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV\"]},\"src/universal/CrossDomainMessenger.sol\":{\"keccak256\":\"0xc6a6b5488294c0e36fd830f412cb0b3f40039a70a9b194a3795b4a29683419f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e92cd0f6faa2f2654a80dd86d7cbbdb1d9be424f1977e83c301dd65705c32163\",\"dweb:/ipfs/QmVv3EhKikz2vmK4NWi6xEBVusaAs4nWM3owoRV7wgba8V\"]},\"src/universal/ISemver.sol\":{\"keccak256\":\"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a\",\"dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR\"]},\"src/vendor/AddressAliasHelper.sol\":{\"keccak256\":\"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88\",\"dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.15+commit.e14f2714"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"FailedRelayedMessage","anonymous":false},{"inputs":[{"internalType":"uint8","name":"version","type":"uint8","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"msgHash","type":"bytes32","indexed":true}],"type":"event","name":"RelayedMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"target","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":false},{"internalType":"bytes","name":"message","type":"bytes","indexed":false},{"internalType":"uint256","name":"messageNonce","type":"uint256","indexed":false},{"internalType":"uint256","name":"gasLimit","type":"uint256","indexed":false}],"type":"event","name":"SentMessage","anonymous":false},{"inputs":[{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint256","name":"value","type":"uint256","indexed":false}],"type":"event","name":"SentMessageExtension1","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MESSAGE_VERSION","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_CALLDATA_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"OTHER_MESSENGER","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_CALL_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_CONSTANT_OVERHEAD","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_GAS_CHECK_BUFFER","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"RELAY_RESERVED_GAS","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"pure","type":"function","name":"baseGas","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"failedMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"contract CrossDomainMessenger","name":"_l1CrossDomainMessenger","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"l1CrossDomainMessenger","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"messageNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"otherMessenger","outputs":[{"internalType":"contract CrossDomainMessenger","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"_nonce","type":"uint256"},{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_target","type":"address"},{"internalType":"uint256","name":"_value","type":"uint256"},{"internalType":"uint256","name":"_minGasLimit","type":"uint256"},{"internalType":"bytes","name":"_message","type":"bytes"}],"stateMutability":"payable","type":"function","name":"relayMessage"},{"inputs":[{"internalType":"address","name":"_target","type":"address"},{"internalType":"bytes","name":"_message","type":"bytes"},{"internalType":"uint32","name":"_minGasLimit","type":"uint32"}],"stateMutability":"payable","type":"function","name":"sendMessage"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function","name":"successfulMessages","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"version","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"xDomainMessageSender","outputs":[{"internalType":"address","name":"","type":"address"}]}],"devdoc":{"kind":"dev","methods":{"OTHER_MESSENGER()":{"custom:legacy":"","returns":{"_0":"CrossDomainMessenger contract on the other chain."}},"baseGas(bytes,uint32)":{"params":{"_message":"Message to compute the amount of required gas for.","_minGasLimit":"Minimum desired gas limit when message goes to target."},"returns":{"_0":"Amount of gas required to guarantee message receipt."}},"initialize(address)":{"params":{"_l1CrossDomainMessenger":"L1CrossDomainMessenger contract on the other network."}},"l1CrossDomainMessenger()":{"custom:legacy":"","returns":{"_0":"L1CrossDomainMessenger contract."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"params":{"_message":"Message to send to the target.","_minGasLimit":"Minimum amount of gas that the message can be executed with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_target":"Address that the message is targeted at.","_value":"ETH value to send with the message."}},"sendMessage(address,bytes,uint32)":{"params":{"_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"xDomainMessageSender()":{"returns":{"_0":"Address of the sender of the currently executing message on the other chain."}}},"version":1},"userdoc":{"kind":"user","methods":{"MESSAGE_VERSION()":{"notice":"Current message version identifier."},"MIN_GAS_CALLDATA_OVERHEAD()":{"notice":"Extra gas added to base gas for each byte of calldata in a message."},"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":{"notice":"Denominator for dynamic overhead added to the base gas for a message."},"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":{"notice":"Numerator for dynamic overhead added to the base gas for a message."},"OTHER_MESSENGER()":{"notice":"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"RELAY_CALL_OVERHEAD()":{"notice":"Gas reserved for performing the external call in `relayMessage`."},"RELAY_CONSTANT_OVERHEAD()":{"notice":"Constant overhead added to the base gas for a message."},"RELAY_GAS_CHECK_BUFFER()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`."},"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)"},"RELAY_RESERVED_GAS()":{"notice":"Gas reserved for finalizing the execution of `relayMessage` after the safe call."},"baseGas(bytes,uint32)":{"notice":"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely."},"constructor":{"notice":"Constructs the L2CrossDomainMessenger contract."},"failedMessages(bytes32)":{"notice":"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt."},"initialize(address)":{"notice":"Initializer."},"l1CrossDomainMessenger()":{"notice":"Getter for the remote messenger.         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures."},"otherMessenger()":{"notice":"CrossDomainMessenger contract on the other chain."},"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."},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(address,bytes,uint32)":{"notice":"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again."},"xDomainMessageSender()":{"notice":"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it."}},"version":1}},"settings":{"remappings":["@lib-keccak/=lib/lib-keccak/contracts/lib/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@openzeppelin/contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","@openzeppelin/contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/contracts/","@rari-capital/solmate/=lib/solmate/","@solady-test/=lib/lib-keccak/lib/solady/test/","@solady/=lib/solady/src/","automate/=lib/automate/contracts/","ds-test/=lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts_v5.0.1/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/=lib/openzeppelin-contracts/","openzeppelin-contracts_v3.1.0/=lib/openzeppelin-contracts_v3.1.0/contracts/","openzeppelin-contracts_v5.0.1/=lib/openzeppelin-contracts_v5.0.1/","prb-test/=lib/automate/lib/prb-test/src/","prb/-est/=lib/automate/lib/prb-test/src/","safe-contracts/=lib/safe-contracts/contracts/","solady/=lib/solady/","solmate/=lib/solmate/src/"],"optimizer":{"enabled":true,"runs":999999},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/L2/L2CrossDomainMessenger.sol":"L2CrossDomainMessenger"},"evmVersion":"london","libraries":{"src/tokamak-contracts/USDC/L2/tokamak-USDC/v2/FiatTokenV2_2.sol:SignatureChecker":"0x4200000000000000000000000000000000000776"}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x0203dcadc5737d9ef2c211d6fa15d18ebc3b30dfa51903b64870b01a062b0b4e","urls":["bzz-raw://6eb2fd1e9894dbe778f4b8131adecebe570689e63cf892f4e21257bfe1252497","dweb:/ipfs/QmXgUGNfZvrn6N2miv3nooSs7Jm34A41qz94fu2GtDFcx8"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/AddressUpgradeable.sol":{"keccak256":"0x611aa3f23e59cfdd1863c536776407b3e33d695152a266fa7cfb34440a29a8a3","urls":["bzz-raw://9b4b2110b7f2b3eb32951bc08046fa90feccffa594e1176cb91cdfb0e94726b4","dweb:/ipfs/QmSxLwYjicf9zWFuieRc8WQwE4FisA1Um5jp1iSa731TGt"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x2a21b14ff90012878752f230d3ffd5c3405e5938d06c97a7d89c0a64561d0d66","urls":["bzz-raw://3313a8f9bb1f9476857c9050067b31982bf2140b83d84f3bc0cec1f62bbe947f","dweb:/ipfs/Qma17Pk8NRe7aB4UD3jjVxk7nSFaov3eQyv86hcyqkwJRV"],"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/math/Math.sol":{"keccak256":"0xd15c3e400531f00203839159b2b8e7209c5158b35618f570c695b7e47f12e9f0","urls":["bzz-raw://b600b852e0597aa69989cc263111f02097e2827edc1bdc70306303e3af5e9929","dweb:/ipfs/QmU4WfM28A1nDqghuuGeFmN3CnVrk6opWtiF65K4vhFPeC"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb3ebde1c8d27576db912d87c3560dab14adfb9cd001be95890ec4ba035e652e7","urls":["bzz-raw://a709421c4f5d4677db8216055d2d4dac96a613efdb08178a9f7041f0c5cef689","dweb:/ipfs/QmYs2rStvVLDnSJs8HgaMD1ABwoKKWdiVbQyNfLfFWTjTy"],"license":"MIT"},"lib/solady/src/utils/LibString.sol":{"keccak256":"0x74ec81acbea6db4afe149ab51e26961bcb801af42f7af98242be71b866066200","urls":["bzz-raw://16bb49824fcfa9667aeed0eb515fdefda1016225085cf78ed852078c67168229","dweb:/ipfs/QmZ59xrx5QLSx5N5CiTLrfwsPKR7kpK4RRpiEWSMEpvDzQ"],"license":"MIT"},"lib/solmate/src/utils/FixedPointMathLib.sol":{"keccak256":"0x622fcd8a49e132df5ec7651cc6ae3aaf0cf59bdcd67a9a804a1b9e2485113b7d","urls":["bzz-raw://af77088eb606427d4c55e578984a615779c86bc30646a20f7bb27299ba390f7c","dweb:/ipfs/QmZGQdhdQDtHc7gZXWrKXgA3govc74X8U63BiWhPQK3mK8"],"license":"MIT"},"src/L1/ResourceMetering.sol":{"keccak256":"0x069f3449a0408d7a9d05f3a5e01cce5e9c746591d8f3c87b43fcf9723bf7301d","urls":["bzz-raw://124fff8e3b3c5992f04f1c92ceac09b003b880ec43031ef4ce816b2750184805","dweb:/ipfs/QmfRxhi3hRdAhFkMLjX6RgHeFnWtkTJveQe8DVJcvRv3Er"],"license":"MIT"},"src/L2/L1Block.sol":{"keccak256":"0x1f8894a2ab02b402c2e9d4d94b8f3d3bc4423e4b1236fb167f7e705f2a115e80","urls":["bzz-raw://291b05252e8e5394ec13718d6f2d15750f55f11d79224961abcd1c03689f66fc","dweb:/ipfs/QmRGQXadbHNy3ZHbCNCKU8XPg4wqvQBzRMAk5JTRucioFZ"],"license":"MIT"},"src/L2/L2CrossDomainMessenger.sol":{"keccak256":"0x0f33dd89e43592759c6b18c99deab4f094906ad268b241f4a735061f7ea0dd6d","urls":["bzz-raw://a36b88a869b733513021462d75d317d4d6b90c9efb4027c389f9c0a9dafea4d6","dweb:/ipfs/QmNxFVRLVweCH7kPiqtx3ABCYuYrnTXhuAKqTLwe2rusmX"],"license":"MIT"},"src/L2/L2ToL1MessagePasser.sol":{"keccak256":"0x11ed508ce01a9a9726fcf8966c1e51fc5229686a9efdb883cc21f5ad57f77472","urls":["bzz-raw://5c4e7e928cda73675bfeb4c6c620fd6cb74e25bc5bb97725e3007aac9c305bf9","dweb:/ipfs/QmcZoug2nnve5CtAdFtxVxmFBiCBkJPfHciGhtCFhWiFRh"],"license":"MIT"},"src/libraries/Arithmetic.sol":{"keccak256":"0x91345e053584f82ad04d682ba821cf3ede808304f5b2a88116a894cf692c21db","urls":["bzz-raw://005e3c42d2edfca0a506cbda94d3b0104eddf20c00bd1bd25272f53f2ef74c72","dweb:/ipfs/QmdaW6Nge6NKoGvFqRpQjBpM2fXpc5y8WpZyBnDnKicdJq"],"license":"MIT"},"src/libraries/Burn.sol":{"keccak256":"0x8676782233b8ee5735e9f09225a40acb8d9bdcb6b223ef356fda91058c24ed14","urls":["bzz-raw://53956d4ade06cd8c76b81c71a35a5d3f139c4f992753deac68edb3232bfe5265","dweb:/ipfs/QmX9H6eVXpUNDEXcGDYgTAksR2quinGXDds275svLRt2fd"],"license":"MIT"},"src/libraries/Constants.sol":{"keccak256":"0x0a52edff4eb90806c5fd570e9c4be2e04327facb9af24e8d15c6cdea9f7a6395","urls":["bzz-raw://9b009c00e43bfc2794ee8954a57e37084eb6fdc05c215aab19f8d697d1a86ca5","dweb:/ipfs/QmQNzUfs95W6dLVPrHj8ik51uhiD5acihYcxZBDhpTCw4f"],"license":"MIT"},"src/libraries/Encoding.sol":{"keccak256":"0x5586d9715d8fbdd48245220f13a96573555fd847a333869e862ae186802e0311","urls":["bzz-raw://3f34dbd5a0a8918120e226f549a8337bd6fc7176653159a85929ce6fe3d66e11","dweb:/ipfs/QmQKnhRPMnhKBRLmV2C1BqAsPpQg8xVFXi7ZLuHU9XQ1BE"],"license":"MIT"},"src/libraries/GasPayingToken.sol":{"keccak256":"0xf19e06af2387c0febaa4a77f93e35dfaf367cac318c804b9023eba0cb5b35237","urls":["bzz-raw://3c1b26566a54ea67c802261882e26322baf6100480613c6582337fb85d7d82d8","dweb:/ipfs/QmPt5FLyGAeJVx1tDXHP55B91xgn4AwQk91WaCJkFV7kTw"],"license":"MIT"},"src/libraries/Hashing.sol":{"keccak256":"0x89c07a0ca102cbe57b4e082543f2dd6dae0e1fd4a87908a334bd076fc914e7b8","urls":["bzz-raw://69c83489c9544ab442dc244c2feb2c6811b726a5eb5a509b97fc5ccb90b98c12","dweb:/ipfs/QmPGGJeLasc1HWHzd6odvWcNvFPQrbYtDubZcv8yp1HLtF"],"license":"MIT"},"src/libraries/L1BlockErrors.sol":{"keccak256":"0x34996ccf6dad2275743a9cfc9b5bed1295ab58afd3ad23c2f3e099b0eec22cdc","urls":["bzz-raw://faa82b96c691f9293dac833ef3afc10ca59a306e00de0334b1882cdfcad49594","dweb:/ipfs/QmZzwimfHtv9tF8d31MWMUq9w7Gks6edMqc21JQkm6RoP2"],"license":"MIT"},"src/libraries/Predeploys.sol":{"keccak256":"0xbc21e07126b325cf053f1c5a26968f02fb0a0da503634044a8e84c9d642acb8f","urls":["bzz-raw://7af279cd7b3b12189894ae43f33d19ba84931670ba10b78c108b9d31b767c6b3","dweb:/ipfs/QmWA4qha4WjQToAYhQbqVPe8WrniBAoktVNSSxCCqBraH3"],"license":"MIT"},"src/libraries/SafeCall.sol":{"keccak256":"0x0636a7abb242bb5d6f5606967c8929e6aa7e63468c1e2ce40ad4780d4c4bf94f","urls":["bzz-raw://a4daec2ac8f9907bbf84ef0a1c48f03bae8657619bc6f42b3a672f25c516f17a","dweb:/ipfs/Qmf8gfRxBv8gEmCkP8YMPb2GGfj9QUnoNUyKE7UR2SWGnq"],"license":"MIT"},"src/libraries/Storage.sol":{"keccak256":"0x7ce27a05552aa69afa6b2ab6684dfe99f27366cf8ef2046baeb1fb62fff0022f","urls":["bzz-raw://a6a24f3ed56681720707a5ab0372fd67fcb1a4f6fb072c7140cda28bdb70f269","dweb:/ipfs/QmW9uTpUULV4xmP7A7MoBDeDhVfQgmJG5qVUFGtXxWpWWK"],"license":"MIT"},"src/libraries/Types.sol":{"keccak256":"0x75900d651301940d24c00d14f0b3b6cbd6dcf379173ceaa31d9bf5be934a9aa4","urls":["bzz-raw://99c2632c5bf4fa3982391c32110eec9fa07917b483b2442cbaf18bdde5bdb24e","dweb:/ipfs/QmSUs6Amkeootf5gKGbKi4mJpvhN2U8i1ED6ef2dskV5xc"],"license":"MIT"},"src/libraries/rlp/RLPWriter.sol":{"keccak256":"0x60ac401490f321c9c55e996a2c65151cd5e60de5f8f297e7c94d541c29820bb6","urls":["bzz-raw://070f5814db07e4a89173d44a36d90e4261ce530f7336034c01635347f2c2d88b","dweb:/ipfs/QmXqr9yW5Kc8MYgr5wSehU5AiqS9pZ4FKxv7vwiwpZCcyV"],"license":"MIT"},"src/universal/CrossDomainMessenger.sol":{"keccak256":"0xc6a6b5488294c0e36fd830f412cb0b3f40039a70a9b194a3795b4a29683419f2","urls":["bzz-raw://e92cd0f6faa2f2654a80dd86d7cbbdb1d9be424f1977e83c301dd65705c32163","dweb:/ipfs/QmVv3EhKikz2vmK4NWi6xEBVusaAs4nWM3owoRV7wgba8V"],"license":"MIT"},"src/universal/ISemver.sol":{"keccak256":"0xba34562a8026f59886d2e07d1d58d90b9691d00e0788c6263cef6c22740cab44","urls":["bzz-raw://0826f998632f83c103c3085bf2e872db79a69022b6d2e0444c83a64ca5283c2a","dweb:/ipfs/QmcJ7PNqkAfKqbjFGRordtAg1v9DvcBSKvdTkVvciLyvQR"],"license":"MIT"},"src/vendor/AddressAliasHelper.sol":{"keccak256":"0x6ecb83b4ec80fbe49c22f4f95d90482de64660ef5d422a19f4d4b04df31c1237","urls":["bzz-raw://1d0885be6e473962f9a0622176a22300165ac0cc1a1d7f2e22b11c3d656ace88","dweb:/ipfs/QmPRa3KmRpXW5P9ykveKRDgYN5zYo4cYLAYSnoqHX3KnXR"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":121212,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_0_0_20","offset":0,"slot":"0","type":"t_address"},{"astId":47581,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"_initialized","offset":20,"slot":"0","type":"t_uint8"},{"astId":47584,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"_initializing","offset":21,"slot":"0","type":"t_bool"},{"astId":121219,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_1_0_1600","offset":0,"slot":"1","type":"t_array(t_uint256)50_storage"},{"astId":121222,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_51_0_20","offset":0,"slot":"51","type":"t_address"},{"astId":121227,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_52_0_1568","offset":0,"slot":"52","type":"t_array(t_uint256)49_storage"},{"astId":121230,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_101_0_1","offset":0,"slot":"101","type":"t_bool"},{"astId":121235,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_102_0_1568","offset":0,"slot":"102","type":"t_array(t_uint256)49_storage"},{"astId":121238,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_151_0_32","offset":0,"slot":"151","type":"t_uint256"},{"astId":121243,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_152_0_1568","offset":0,"slot":"152","type":"t_array(t_uint256)49_storage"},{"astId":121248,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_201_0_32","offset":0,"slot":"201","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121253,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"spacer_202_0_32","offset":0,"slot":"202","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121302,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"successfulMessages","offset":0,"slot":"203","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121305,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"xDomainMsgSender","offset":0,"slot":"204","type":"t_address"},{"astId":121308,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"msgNonce","offset":0,"slot":"205","type":"t_uint240"},{"astId":121313,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"failedMessages","offset":0,"slot":"206","type":"t_mapping(t_bytes32,t_bool)"},{"astId":121317,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"otherMessenger","offset":0,"slot":"207","type":"t_contract(CrossDomainMessenger)121789"},{"astId":121322,"contract":"src/L2/L2CrossDomainMessenger.sol:L2CrossDomainMessenger","label":"__gap","offset":0,"slot":"208","type":"t_array(t_uint256)43_storage"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_uint256)43_storage":{"encoding":"inplace","label":"uint256[43]","numberOfBytes":"1376","base":"t_uint256"},"t_array(t_uint256)49_storage":{"encoding":"inplace","label":"uint256[49]","numberOfBytes":"1568","base":"t_uint256"},"t_array(t_uint256)50_storage":{"encoding":"inplace","label":"uint256[50]","numberOfBytes":"1600","base":"t_uint256"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_contract(CrossDomainMessenger)121789":{"encoding":"inplace","label":"contract CrossDomainMessenger","numberOfBytes":"20"},"t_mapping(t_bytes32,t_bool)":{"encoding":"mapping","key":"t_bytes32","label":"mapping(bytes32 => bool)","numberOfBytes":"32","value":"t_bool"},"t_uint240":{"encoding":"inplace","label":"uint240","numberOfBytes":"30"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"userdoc":{"version":1,"kind":"user","methods":{"MESSAGE_VERSION()":{"notice":"Current message version identifier."},"MIN_GAS_CALLDATA_OVERHEAD()":{"notice":"Extra gas added to base gas for each byte of calldata in a message."},"MIN_GAS_DYNAMIC_OVERHEAD_DENOMINATOR()":{"notice":"Denominator for dynamic overhead added to the base gas for a message."},"MIN_GAS_DYNAMIC_OVERHEAD_NUMERATOR()":{"notice":"Numerator for dynamic overhead added to the base gas for a message."},"OTHER_MESSENGER()":{"notice":"Retrieves the address of the paired CrossDomainMessenger contract on the other chain         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"RELAY_CALL_OVERHEAD()":{"notice":"Gas reserved for performing the external call in `relayMessage`."},"RELAY_CONSTANT_OVERHEAD()":{"notice":"Constant overhead added to the base gas for a message."},"RELAY_GAS_CHECK_BUFFER()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage`."},"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL()":{"notice":"Gas reserved for the execution between the `hasMinGas` check and the external         call in `relayMessage` on L1 (include gas for the approve() function)"},"RELAY_RESERVED_GAS()":{"notice":"Gas reserved for finalizing the execution of `relayMessage` after the safe call."},"baseGas(bytes,uint32)":{"notice":"Computes the amount of gas required to guarantee that a given message will be         received on the other chain without running out of gas. Guaranteeing that a message         will not run out of gas is important because this ensures that a message can always         be replayed on the other chain if it fails to execute completely."},"constructor":{"notice":"Constructs the L2CrossDomainMessenger contract."},"failedMessages(bytes32)":{"notice":"Mapping of message hashes to a boolean if and only if the message has failed to be         executed at least once. A message will not be present in this mapping if it         successfully executed on the first attempt."},"initialize(address)":{"notice":"Initializer."},"l1CrossDomainMessenger()":{"notice":"Getter for the remote messenger.         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead."},"messageNonce()":{"notice":"Retrieves the next message nonce. Message version will be added to the upper two         bytes of the message nonce. Message version allows us to treat messages as having         different structures."},"otherMessenger()":{"notice":"CrossDomainMessenger contract on the other chain."},"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."},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"notice":"Relays a message that was sent by the other CrossDomainMessenger contract. Can only         be executed via cross-chain call from the other messenger OR if the message was         already received once and is currently being replayed."},"sendMessage(address,bytes,uint32)":{"notice":"Sends a message to some target address on the other chain. Note that if the call         always reverts, then the message will be unrelayable, and any ETH sent will be         permanently locked. The same will occur if the target on the other chain is         considered unsafe (see the _isUnsafeTarget() function)."},"successfulMessages(bytes32)":{"notice":"Mapping of message hashes to boolean receipt values. Note that a message will only         be present in this mapping if it has successfully been relayed on this chain, and         can therefore not be relayed again."},"xDomainMessageSender()":{"notice":"Retrieves the address of the contract or wallet that initiated the currently         executing message on the other chain. Will throw an error if there is no message         currently being executed. Allows the recipient of a call to see who triggered it."}},"events":{"FailedRelayedMessage(bytes32)":{"notice":"Emitted whenever a message fails to be relayed on this chain."},"RelayedMessage(bytes32)":{"notice":"Emitted whenever a message is successfully relayed on this chain."},"SentMessage(address,address,bytes,uint256,uint256)":{"notice":"Emitted whenever a message is sent to the other chain."},"SentMessageExtension1(address,uint256)":{"notice":"Additional event data to emit, required as of Bedrock. Cannot be merged with the         SentMessage event without breaking the ABI of this contract, this is good enough."}},"notice":"The L2CrossDomainMessenger is a high-level interface for message passing between L1 and         L2 on the L2 side. Users are generally encouraged to use this contract instead of lower         level message passing contracts."},"devdoc":{"version":1,"kind":"dev","methods":{"OTHER_MESSENGER()":{"returns":{"_0":"CrossDomainMessenger contract on the other chain."}},"baseGas(bytes,uint32)":{"params":{"_message":"Message to compute the amount of required gas for.","_minGasLimit":"Minimum desired gas limit when message goes to target."},"returns":{"_0":"Amount of gas required to guarantee message receipt."}},"initialize(address)":{"params":{"_l1CrossDomainMessenger":"L1CrossDomainMessenger contract on the other network."}},"l1CrossDomainMessenger()":{"returns":{"_0":"L1CrossDomainMessenger contract."}},"messageNonce()":{"returns":{"_0":"Nonce of the next message to be sent, with added message version."}},"paused()":{"returns":{"_0":"Whether or not the contract is paused."}},"relayMessage(uint256,address,address,uint256,uint256,bytes)":{"params":{"_message":"Message to send to the target.","_minGasLimit":"Minimum amount of gas that the message can be executed with.","_nonce":"Nonce of the message being relayed.","_sender":"Address of the user who sent the message.","_target":"Address that the message is targeted at.","_value":"ETH value to send with the message."}},"sendMessage(address,bytes,uint32)":{"params":{"_message":"Message to trigger the target address with.","_minGasLimit":"Minimum gas limit that the message can be executed with.","_target":"Target contract or wallet address."}},"xDomainMessageSender()":{"returns":{"_0":"Address of the sender of the currently executing message on the other chain."}}},"title":"L2CrossDomainMessenger"},"ast":{"absolutePath":"src/L2/L2CrossDomainMessenger.sol","id":97624,"exportedSymbols":{"AddressAliasHelper":[124874],"Constants":[112830],"CrossDomainMessenger":[121789],"ISemver":[122319],"L1Block":[97187],"L2CrossDomainMessenger":[97623],"L2ToL1MessagePasser":[98904],"Predeploys":[114341]},"nodeType":"SourceUnit","src":"32:2823:164","nodes":[{"id":97474,"nodeType":"PragmaDirective","src":"32:23:164","nodes":[],"literals":["solidity","0.8",".15"]},{"id":97476,"nodeType":"ImportDirective","src":"57:71:164","nodes":[],"absolutePath":"src/vendor/AddressAliasHelper.sol","file":"src/vendor/AddressAliasHelper.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":124875,"symbolAliases":[{"foreign":{"id":97475,"name":"AddressAliasHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124874,"src":"66:18:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97478,"nodeType":"ImportDirective","src":"129:58:164","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":114342,"symbolAliases":[{"foreign":{"id":97477,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"138:10:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97480,"nodeType":"ImportDirective","src":"188:78:164","nodes":[],"absolutePath":"src/universal/CrossDomainMessenger.sol","file":"src/universal/CrossDomainMessenger.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":121790,"symbolAliases":[{"foreign":{"id":97479,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121789,"src":"197:20:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97482,"nodeType":"ImportDirective","src":"267:52:164","nodes":[],"absolutePath":"src/universal/ISemver.sol","file":"src/universal/ISemver.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":122320,"symbolAliases":[{"foreign":{"id":97481,"name":"ISemver","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":122319,"src":"276:7:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97484,"nodeType":"ImportDirective","src":"320:69:164","nodes":[],"absolutePath":"src/L2/L2ToL1MessagePasser.sol","file":"src/L2/L2ToL1MessagePasser.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":98905,"symbolAliases":[{"foreign":{"id":97483,"name":"L2ToL1MessagePasser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98904,"src":"329:19:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97486,"nodeType":"ImportDirective","src":"390:56:164","nodes":[],"absolutePath":"src/libraries/Constants.sol","file":"src/libraries/Constants.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":112831,"symbolAliases":[{"foreign":{"id":97485,"name":"Constants","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":112830,"src":"399:9:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97488,"nodeType":"ImportDirective","src":"447:45:164","nodes":[],"absolutePath":"src/L2/L1Block.sol","file":"src/L2/L1Block.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":97188,"symbolAliases":[{"foreign":{"id":97487,"name":"L1Block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97187,"src":"456:7:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97490,"nodeType":"ImportDirective","src":"493:58:164","nodes":[],"absolutePath":"src/libraries/Predeploys.sol","file":"src/libraries/Predeploys.sol","nameLocation":"-1:-1:-1","scope":97624,"sourceUnit":114342,"symbolAliases":[{"foreign":{"id":97489,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"502:10:164","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":97623,"nodeType":"ContractDefinition","src":"917:1937:164","nodes":[{"id":97499,"nodeType":"VariableDeclaration","src":"1018:40:164","nodes":[],"baseFunctions":[122318],"constant":true,"documentation":{"id":97496,"nodeType":"StructuredDocumentation","src":"989:24:164","text":"@custom:semver 2.1.0"},"functionSelector":"54fd4d50","mutability":"constant","name":"version","nameLocation":"1041:7:164","scope":97623,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_string_memory_ptr","typeString":"string"},"typeName":{"id":97497,"name":"string","nodeType":"ElementaryTypeName","src":"1018:6:164","typeDescriptions":{"typeIdentifier":"t_string_storage_ptr","typeString":"string"}},"value":{"hexValue":"322e312e30","id":97498,"isConstant":false,"isLValue":false,"isPure":true,"kind":"string","lValueRequested":false,"nodeType":"Literal","src":"1051:7:164","typeDescriptions":{"typeIdentifier":"t_stringliteral_3bb4aeded157fe72f9bc813a9dc1bd69961c5b5f35dafc6dc601ab742eacac6b","typeString":"literal_string \"2.1.0\""},"value":"2.1.0"},"visibility":"public"},{"id":97515,"nodeType":"FunctionDefinition","src":"1129:127:164","nodes":[],"body":{"id":97514,"nodeType":"Block","src":"1166:90:164","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[{"arguments":[{"hexValue":"30","id":97509,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"1243:1:164","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":97508,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"1235:7:164","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":97507,"name":"address","nodeType":"ElementaryTypeName","src":"1235:7:164","typeDescriptions":{}}},"id":97510,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1235:10:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":97506,"name":"CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121789,"src":"1214:20:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_CrossDomainMessenger_$121789_$","typeString":"type(contract CrossDomainMessenger)"}},"id":97511,"isConstant":false,"isLValue":false,"isPure":true,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"1214:32:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":97505,"name":"initialize","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97529,"src":"1176:10:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$121789_$returns$__$","typeString":"function (contract CrossDomainMessenger)"}},"id":97512,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_l1CrossDomainMessenger"],"nodeType":"FunctionCall","src":"1176:73:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":97513,"nodeType":"ExpressionStatement","src":"1176:73:164"}]},"documentation":{"id":97500,"nodeType":"StructuredDocumentation","src":"1065:59:164","text":"@notice Constructs the L2CrossDomainMessenger contract."},"implemented":true,"kind":"constructor","modifiers":[{"arguments":[],"id":97503,"kind":"baseConstructorSpecifier","modifierName":{"id":97502,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"1143:20:164"},"nodeType":"ModifierInvocation","src":"1143:22:164"}],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":97501,"nodeType":"ParameterList","parameters":[],"src":"1140:2:164"},"returnParameters":{"id":97504,"nodeType":"ParameterList","parameters":[],"src":"1166:0:164"},"scope":97623,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":97529,"nodeType":"FunctionDefinition","src":"1384:175:164","nodes":[],"body":{"id":97528,"nodeType":"Block","src":"1469:90:164","nodes":[],"statements":[{"expression":{"arguments":[{"id":97525,"name":"_l1CrossDomainMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97519,"src":"1526:23:164","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":97524,"name":"__CrossDomainMessenger_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121745,"src":"1479:27:164","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_contract$_CrossDomainMessenger_$121789_$returns$__$","typeString":"function (contract CrossDomainMessenger)"}},"id":97526,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":["_otherMessenger"],"nodeType":"FunctionCall","src":"1479:73:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":97527,"nodeType":"ExpressionStatement","src":"1479:73:164"}]},"documentation":{"id":97516,"nodeType":"StructuredDocumentation","src":"1262:117:164","text":"@notice Initializer.\n @param _l1CrossDomainMessenger L1CrossDomainMessenger contract on the other network."},"functionSelector":"c4d66de8","implemented":true,"kind":"function","modifiers":[{"id":97522,"kind":"modifierInvocation","modifierName":{"id":97521,"name":"initializer","nodeType":"IdentifierPath","referencedDeclaration":47645,"src":"1457:11:164"},"nodeType":"ModifierInvocation","src":"1457:11:164"}],"name":"initialize","nameLocation":"1393:10:164","parameters":{"id":97520,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97519,"mutability":"mutable","name":"_l1CrossDomainMessenger","nameLocation":"1425:23:164","nodeType":"VariableDeclaration","scope":97529,"src":"1404:44:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"},"typeName":{"id":97518,"nodeType":"UserDefinedTypeName","pathNode":{"id":97517,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"1404:20:164"},"referencedDeclaration":121789,"src":"1404:20:164","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}},"visibility":"internal"}],"src":"1403:46:164"},"returnParameters":{"id":97523,"nodeType":"ParameterList","parameters":[],"src":"1469:0:164"},"scope":97623,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":97539,"nodeType":"FunctionDefinition","src":"1793:115:164","nodes":[],"body":{"id":97538,"nodeType":"Block","src":"1870:38:164","nodes":[],"statements":[{"expression":{"id":97536,"name":"otherMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121317,"src":"1887:14:164","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}},"functionReturnParameters":97535,"id":97537,"nodeType":"Return","src":"1880:21:164"}]},"documentation":{"id":97530,"nodeType":"StructuredDocumentation","src":"1565:223:164","text":"@notice Getter for the remote messenger.\n         Public getter is legacy and will be removed in the future. Use `otherMessenger()` instead.\n @return L1CrossDomainMessenger contract.\n @custom:legacy"},"functionSelector":"a7119869","implemented":true,"kind":"function","modifiers":[],"name":"l1CrossDomainMessenger","nameLocation":"1802:22:164","parameters":{"id":97531,"nodeType":"ParameterList","parameters":[],"src":"1824:2:164"},"returnParameters":{"id":97535,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97534,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":97539,"src":"1848:20:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"},"typeName":{"id":97533,"nodeType":"UserDefinedTypeName","pathNode":{"id":97532,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"1848:20:164"},"referencedDeclaration":121789,"src":"1848:20:164","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}},"visibility":"internal"}],"src":"1847:22:164"},"scope":97623,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":97549,"nodeType":"FunctionDefinition","src":"1955:137:164","nodes":[],"body":{"id":97548,"nodeType":"Block","src":"2027:65:164","nodes":[],"statements":[{"expression":{"id":97546,"name":"RELAY_GAS_CHECK_BUFFER_INCLUDING_APPROVAL","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121297,"src":"2044:41:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"functionReturnParameters":97545,"id":97547,"nodeType":"Return","src":"2037:48:164"}]},"baseFunctions":[121753],"documentation":{"id":97540,"nodeType":"StructuredDocumentation","src":"1914:36:164","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_relayGasCheckBuffer","nameLocation":"1964:20:164","overrides":{"id":97542,"nodeType":"OverrideSpecifier","overrides":[],"src":"2001:8:164"},"parameters":{"id":97541,"nodeType":"ParameterList","parameters":[],"src":"1984:2:164"},"returnParameters":{"id":97545,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97544,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":97549,"src":"2019:6:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":97543,"name":"uint64","nodeType":"ElementaryTypeName","src":"2019:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"}],"src":"2018:8:164"},"scope":97623,"stateMutability":"pure","virtual":false,"visibility":"internal"},{"id":97578,"nodeType":"FunctionDefinition","src":"2139:269:164","nodes":[],"body":{"id":97577,"nodeType":"Block","src":"2246:162:164","nodes":[],"statements":[{"expression":{"arguments":[{"id":97572,"name":"_to","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97552,"src":"2370:3:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":97573,"name":"_gasLimit","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97554,"src":"2375:9:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},{"id":97574,"name":"_data","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97558,"src":"2386:5:164","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint64","typeString":"uint64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"expression":{"arguments":[{"arguments":[{"expression":{"id":97565,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"2284:10:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$114341_$","typeString":"type(library Predeploys)"}},"id":97566,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_TO_L1_MESSAGE_PASSER","nodeType":"MemberAccess","referencedDeclaration":113902,"src":"2284:34:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":97564,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2276:8:164","typeDescriptions":{"typeIdentifier":"t_type$_t_address_payable_$","typeString":"type(address payable)"},"typeName":{"id":97563,"name":"address","nodeType":"ElementaryTypeName","src":"2276:8:164","stateMutability":"payable","typeDescriptions":{}}},"id":97567,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2276:43:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address_payable","typeString":"address payable"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"id":97562,"name":"L2ToL1MessagePasser","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":98904,"src":"2256:19:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_L2ToL1MessagePasser_$98904_$","typeString":"type(contract L2ToL1MessagePasser)"}},"id":97568,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:64:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_L2ToL1MessagePasser_$98904","typeString":"contract L2ToL1MessagePasser"}},"id":97569,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"initiateWithdrawal","nodeType":"MemberAccess","referencedDeclaration":98890,"src":"2256:83:164","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$","typeString":"function (address,uint256,bytes memory) payable external"}},"id":97571,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"names":["value"],"nodeType":"FunctionCallOptions","options":[{"id":97570,"name":"_value","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97556,"src":"2348:6:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"src":"2256:100:164","typeDescriptions":{"typeIdentifier":"t_function_external_payable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$value","typeString":"function (address,uint256,bytes memory) payable external"}},"id":97575,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2256:145:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":97576,"nodeType":"ExpressionStatement","src":"2256:145:164"}]},"baseFunctions":[121765],"documentation":{"id":97550,"nodeType":"StructuredDocumentation","src":"2098:36:164","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_sendMessage","nameLocation":"2148:12:164","overrides":{"id":97560,"nodeType":"OverrideSpecifier","overrides":[],"src":"2237:8:164"},"parameters":{"id":97559,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97552,"mutability":"mutable","name":"_to","nameLocation":"2169:3:164","nodeType":"VariableDeclaration","scope":97578,"src":"2161:11:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97551,"name":"address","nodeType":"ElementaryTypeName","src":"2161:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":97554,"mutability":"mutable","name":"_gasLimit","nameLocation":"2181:9:164","nodeType":"VariableDeclaration","scope":97578,"src":"2174:16:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"},"typeName":{"id":97553,"name":"uint64","nodeType":"ElementaryTypeName","src":"2174:6:164","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"visibility":"internal"},{"constant":false,"id":97556,"mutability":"mutable","name":"_value","nameLocation":"2200:6:164","nodeType":"VariableDeclaration","scope":97578,"src":"2192:14:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":97555,"name":"uint256","nodeType":"ElementaryTypeName","src":"2192:7:164","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":97558,"mutability":"mutable","name":"_data","nameLocation":"2221:5:164","nodeType":"VariableDeclaration","scope":97578,"src":"2208:18:164","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":97557,"name":"bytes","nodeType":"ElementaryTypeName","src":"2208:5:164","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"2160:67:164"},"returnParameters":{"id":97561,"nodeType":"ParameterList","parameters":[],"src":"2246:0:164"},"scope":97623,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":97597,"nodeType":"FunctionDefinition","src":"2455:164:164","nodes":[],"body":{"id":97596,"nodeType":"Block","src":"2522:97:164","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":97594,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":97587,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"2574:3:164","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":97588,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"sender","nodeType":"MemberAccess","src":"2574:10:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":97585,"name":"AddressAliasHelper","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":124874,"src":"2539:18:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_AddressAliasHelper_$124874_$","typeString":"type(library AddressAliasHelper)"}},"id":97586,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"undoL1ToL2Alias","nodeType":"MemberAccess","referencedDeclaration":124873,"src":"2539:34:164","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_address_$returns$_t_address_$","typeString":"function (address) pure returns (address)"}},"id":97589,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2539:46:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":97592,"name":"otherMessenger","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":121317,"src":"2597:14:164","typeDescriptions":{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_CrossDomainMessenger_$121789","typeString":"contract CrossDomainMessenger"}],"id":97591,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2589:7:164","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":97590,"name":"address","nodeType":"ElementaryTypeName","src":"2589:7:164","typeDescriptions":{}}},"id":97593,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2589:23:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2539:73:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":97584,"id":97595,"nodeType":"Return","src":"2532:80:164"}]},"baseFunctions":[121771],"documentation":{"id":97579,"nodeType":"StructuredDocumentation","src":"2414:36:164","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_isOtherMessenger","nameLocation":"2464:17:164","overrides":{"id":97581,"nodeType":"OverrideSpecifier","overrides":[],"src":"2498:8:164"},"parameters":{"id":97580,"nodeType":"ParameterList","parameters":[],"src":"2481:2:164"},"returnParameters":{"id":97584,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97583,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":97597,"src":"2516:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":97582,"name":"bool","nodeType":"ElementaryTypeName","src":"2516:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2515:6:164"},"scope":97623,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":97622,"nodeType":"FunctionDefinition","src":"2666:186:164","nodes":[],"body":{"id":97621,"nodeType":"Block","src":"2746:106:164","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":97619,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":97611,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":97606,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97600,"src":"2763:7:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"id":97609,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"2782:4:164","typeDescriptions":{"typeIdentifier":"t_contract$_L2CrossDomainMessenger_$97623","typeString":"contract L2CrossDomainMessenger"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_L2CrossDomainMessenger_$97623","typeString":"contract L2CrossDomainMessenger"}],"id":97608,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2774:7:164","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":97607,"name":"address","nodeType":"ElementaryTypeName","src":"2774:7:164","typeDescriptions":{}}},"id":97610,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2774:13:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2763:24:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":97618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":97612,"name":"_target","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":97600,"src":"2791:7:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"id":97615,"name":"Predeploys","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":114341,"src":"2810:10:164","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Predeploys_$114341_$","typeString":"type(library Predeploys)"}},"id":97616,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberName":"L2_TO_L1_MESSAGE_PASSER","nodeType":"MemberAccess","referencedDeclaration":113902,"src":"2810:34:164","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":97614,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"2802:7:164","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":97613,"name":"address","nodeType":"ElementaryTypeName","src":"2802:7:164","typeDescriptions":{}}},"id":97617,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"names":[],"nodeType":"FunctionCall","src":"2802:43:164","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"2791:54:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"2763:82:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":97605,"id":97620,"nodeType":"Return","src":"2756:89:164"}]},"baseFunctions":[121779],"documentation":{"id":97598,"nodeType":"StructuredDocumentation","src":"2625:36:164","text":"@inheritdoc CrossDomainMessenger"},"implemented":true,"kind":"function","modifiers":[],"name":"_isUnsafeTarget","nameLocation":"2675:15:164","overrides":{"id":97602,"nodeType":"OverrideSpecifier","overrides":[],"src":"2722:8:164"},"parameters":{"id":97601,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97600,"mutability":"mutable","name":"_target","nameLocation":"2699:7:164","nodeType":"VariableDeclaration","scope":97622,"src":"2691:15:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":97599,"name":"address","nodeType":"ElementaryTypeName","src":"2691:7:164","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2690:17:164"},"returnParameters":{"id":97605,"nodeType":"ParameterList","parameters":[{"constant":false,"id":97604,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":97622,"src":"2740:4:164","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":97603,"name":"bool","nodeType":"ElementaryTypeName","src":"2740:4:164","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"2739:6:164"},"scope":97623,"stateMutability":"view","virtual":false,"visibility":"internal"}],"abstract":false,"baseContracts":[{"baseName":{"id":97492,"name":"CrossDomainMessenger","nodeType":"IdentifierPath","referencedDeclaration":121789,"src":"952:20:164"},"id":97493,"nodeType":"InheritanceSpecifier","src":"952:20:164"},{"baseName":{"id":97494,"name":"ISemver","nodeType":"IdentifierPath","referencedDeclaration":122319,"src":"974:7:164"},"id":97495,"nodeType":"InheritanceSpecifier","src":"974:7:164"}],"canonicalName":"L2CrossDomainMessenger","contractDependencies":[],"contractKind":"contract","documentation":{"id":97491,"nodeType":"StructuredDocumentation","src":"553:364:164","text":"@custom:proxied\n @custom:predeploy 0x4200000000000000000000000000000000000007\n @title L2CrossDomainMessenger\n @notice The L2CrossDomainMessenger is a high-level interface for message passing between L1 and\n         L2 on the L2 side. Users are generally encouraged to use this contract instead of lower\n         level message passing contracts."},"fullyImplemented":true,"linearizedBaseContracts":[97623,122319,121789,121254,47725,121213],"name":"L2CrossDomainMessenger","nameLocation":"926:22:164","scope":97624,"usedErrors":[]}],"license":"MIT"},"id":164}