{
  "contractName": "OutsourceDepositLogging",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{\"logCourtesyCalled(DepositUtils.Deposit storage)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logCreated(DepositUtils.Deposit storage,address)\":{\"details\":\"`DepositLog.logCreated` fires a Created event with                       _keepAddress, msg.sender and block.timestamp.                       msg.sender will be the calling Deposit's address.\",\"params\":{\"_keepAddress\":\"The address of the associated keep.\"}},\"logExitedCourtesyCall(DepositUtils.Deposit storage)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logFraudDuringSetup(DepositUtils.Deposit storage)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logFunded(DepositUtils.Deposit storage,bytes32)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logFunderRequestedAbort(DepositUtils.Deposit storage,bytes)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logGotRedemptionSignature(DepositUtils.Deposit storage,bytes32,bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_digest\":\"Signed digest.\",\"_r\":\"Signature r value.\",\"_s\":\"Signature s value.\"},\"return\":\"True if successful, else revert.\"},\"logLiquidated(DepositUtils.Deposit storage)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logRedeemed(DepositUtils.Deposit storage,bytes32)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logRedemptionRequested(DepositUtils.Deposit storage,address,bytes32,uint256,bytes,uint256,bytes)\":{\"details\":\"This is the only event without an explicit timestamp.\",\"params\":{\"_digest\":\"The calculated sighash digest.\",\"_outpoint\":\"The 36 byte outpoint.\",\"_redeemer\":\"The ethereum address of the redeemer.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\",\"_requestedFee\":\"The redeemer or bump-system specified fee.\",\"_utxoValue\":\"The size of the utxo in sat.\"},\"return\":\"True if successful, else revert.\"},\"logRegisteredPubkey(DepositUtils.Deposit storage,bytes32,bytes32)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logSetupFailed(DepositUtils.Deposit storage)\":{\"details\":\"The logger is on a system contract, so all logs from all deposits are from the same address.\"},\"logStartedLiquidation(DepositUtils.Deposit storage,bool)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_wasFraud\":\"True if liquidating for fraud.\"}}}},\"userdoc\":{\"methods\":{\"logCourtesyCalled(DepositUtils.Deposit storage)\":{\"notice\":\"Fires a CourtesyCalled event.\"},\"logCreated(DepositUtils.Deposit storage,address)\":{\"notice\":\"Fires a Created event.\"},\"logExitedCourtesyCall(DepositUtils.Deposit storage)\":{\"notice\":\"Fires a ExitedCourtesyCall event.\"},\"logFraudDuringSetup(DepositUtils.Deposit storage)\":{\"notice\":\"Fires a FraudDuringSetup event.\"},\"logFunded(DepositUtils.Deposit storage,bytes32)\":{\"notice\":\"Fires a Funded event.\"},\"logFunderRequestedAbort(DepositUtils.Deposit storage,bytes)\":{\"notice\":\"Fires a FunderAbortRequested event.\"},\"logGotRedemptionSignature(DepositUtils.Deposit storage,bytes32,bytes32,bytes32)\":{\"notice\":\"Fires a GotRedemptionSignature event.\"},\"logLiquidated(DepositUtils.Deposit storage)\":{\"notice\":\"Fires a Liquidated event.\"},\"logRedeemed(DepositUtils.Deposit storage,bytes32)\":{\"notice\":\"Fires a Redeemed event.\"},\"logRedemptionRequested(DepositUtils.Deposit storage,address,bytes32,uint256,bytes,uint256,bytes)\":{\"notice\":\"Fires a RedemptionRequested event.\"},\"logRegisteredPubkey(DepositUtils.Deposit storage,bytes32,bytes32)\":{\"notice\":\"Fires a RegisteredPubkey event.\"},\"logSetupFailed(DepositUtils.Deposit storage)\":{\"notice\":\"Fires a SetupFailed event.\"},\"logStartedLiquidation(DepositUtils.Deposit storage,bool)\":{\"notice\":\"Fires a StartedLiquidation event.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":\"OutsourceDepositLogging\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol\":{\"keccak256\":\"0x8bddca84b4106ea5d865b5e19c0d49f3dc94a7e614c7403ae05074eda01d6ee9\",\"urls\":[\"bzz-raw://65b05f6e04ae46a16194db335ad21dd806d0b07ad571a126b6981896890c8a4c\",\"dweb:/ipfs/QmTF4RgELhXX7pooNKwW8qNY7Sr7dFY7vfueApjTMa99jt\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x610b0c610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100d95760003560e01c80634a79927811610096578063b2d230b011610070578063b2d230b014610458578063c508578414610488578063cebb22f5146104b8578063e35227b8146104e2576100d9565b80634a799278146103b45780635cba3438146103ea5780639e9b76361461041c576100d9565b806305cf110a146100de57806309d65d24146102435780632557ce681461026d5780632a2542e41461032757806332e42f2d14610351578063425e07511461037b575b600080fd5b8180156100ea57600080fd5b50610241600480360360e081101561010157600080fd5b8135916001600160a01b036020820135169160408201359160608101359181019060a08101608082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359590949093506040810192506020013590506401000000008111156101cc57600080fd5b8201836020820111156101de57600080fd5b8035906020019184600183028401116401000000008311171561020057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061050c945050505050565b005b81801561024f57600080fd5b506102416004803603602081101561026657600080fd5b5035610671565b81801561027957600080fd5b506102416004803603604081101561029057600080fd5b813591908101906040810160208201356401000000008111156102b257600080fd5b8201836020820111156102c457600080fd5b803590602001918460018302840111640100000000831117156102e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106d3945050505050565b81801561033357600080fd5b506102416004803603602081101561034a57600080fd5b503561079b565b81801561035d57600080fd5b506102416004803603602081101561037457600080fd5b50356107e1565b81801561038757600080fd5b506102416004803603604081101561039e57600080fd5b50803590602001356001600160a01b0316610827565b8180156103c057600080fd5b50610241600480360360608110156103d757600080fd5b5080359060208101359060400135610877565b8180156103f657600080fd5b506102416004803603604081101561040d57600080fd5b508035906020013515156108e9565b81801561042857600080fd5b506102416004803603608081101561043f57600080fd5b5080359060208101359060408101359060600135610937565b81801561046457600080fd5b506102416004803603604081101561047b57600080fd5b50803590602001356109b1565b81801561049457600080fd5b50610241600480360360408110156104ab57600080fd5b50803590602001356109fe565b8180156104c457600080fd5b50610241600480360360208110156104db57600080fd5b5035610a4b565b8180156104ee57600080fd5b506102416004803603602081101561050557600080fd5b5035610a91565b86546040516318e647dd60e01b81526001600160a01b038881166004830190815260248301899052604483018890526084830186905260c060648401908152875160c48501528751929094169384936318e647dd938c938c938c938c938c938c939092909160a482019160e40190602088019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156105fd5781810151838201526020016105e5565b50505050905090810190601f16801561062a5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b505050505050505050505050565b805460408051631c58a15b60e31b815290516001600160a01b0390921691829163e2c50ad891600480830192600092919082900301818387803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050505050565b815460405163671603e760e11b81526020600482018181528451602484015284516001600160a01b0390941693849363ce2c07ce9387939283926044019185019080838360005b8381101561073257818101518382015260200161071a565b50505050905090810190601f16801561075f5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b50505050505050565b8054604080516308b95c9360e21b815290516001600160a01b039092169182916322e5724c91600480830192600092919082900301818387803b1580156106b757600080fd5b80546040805163c8fba24360e01b815290516001600160a01b0390921691829163c8fba24391600480830192600092919082900301818387803b1580156106b757600080fd5b8154604080516305057fa760e31b81526001600160a01b03848116600483015291519190921691829163282bfd389160248082019260009290919082900301818387803b15801561077e57600080fd5b82546040805163869f946960e01b8152600481018590526024810184905290516001600160a01b0390921691829163869f946991604480830192600092919082900301818387803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050505050505050565b815460408051633aac346760e01b8152831515600482015290516001600160a01b03909216918291633aac346791602480830192600092919082900301818387803b15801561077e57600080fd5b835460408051637bb0310f60e11b815260048101869052602481018590526044810184905290516001600160a01b0390921691829163f760621e91606480830192600092919082900301818387803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050505050505050565b815460408051636e1ba28360e01b81526004810184905290516001600160a01b03909216918291636e1ba28391602480830192600092919082900301818387803b15801561077e57600080fd5b815460408051631fb5146960e21b81526004810184905290516001600160a01b03909216918291637ed451a491602480830192600092919082900301818387803b15801561077e57600080fd5b805460408051635418e40b60e11b815290516001600160a01b0390921691829163a831c81691600480830192600092919082900301818387803b1580156106b757600080fd5b805460408051631150a3f360e11b815290516001600160a01b039092169182916322a147e691600480830192600092919082900301818387803b1580156106b757600080fdfea265627a7a723158209705e530dd9b185a312702f931d2525a425d785972bb69256ad47629a4b5aa4e64736f6c63430005110032",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100d95760003560e01c80634a79927811610096578063b2d230b011610070578063b2d230b014610458578063c508578414610488578063cebb22f5146104b8578063e35227b8146104e2576100d9565b80634a799278146103b45780635cba3438146103ea5780639e9b76361461041c576100d9565b806305cf110a146100de57806309d65d24146102435780632557ce681461026d5780632a2542e41461032757806332e42f2d14610351578063425e07511461037b575b600080fd5b8180156100ea57600080fd5b50610241600480360360e081101561010157600080fd5b8135916001600160a01b036020820135169160408201359160608101359181019060a08101608082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359590949093506040810192506020013590506401000000008111156101cc57600080fd5b8201836020820111156101de57600080fd5b8035906020019184600183028401116401000000008311171561020057600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061050c945050505050565b005b81801561024f57600080fd5b506102416004803603602081101561026657600080fd5b5035610671565b81801561027957600080fd5b506102416004803603604081101561029057600080fd5b813591908101906040810160208201356401000000008111156102b257600080fd5b8201836020820111156102c457600080fd5b803590602001918460018302840111640100000000831117156102e657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506106d3945050505050565b81801561033357600080fd5b506102416004803603602081101561034a57600080fd5b503561079b565b81801561035d57600080fd5b506102416004803603602081101561037457600080fd5b50356107e1565b81801561038757600080fd5b506102416004803603604081101561039e57600080fd5b50803590602001356001600160a01b0316610827565b8180156103c057600080fd5b50610241600480360360608110156103d757600080fd5b5080359060208101359060400135610877565b8180156103f657600080fd5b506102416004803603604081101561040d57600080fd5b508035906020013515156108e9565b81801561042857600080fd5b506102416004803603608081101561043f57600080fd5b5080359060208101359060408101359060600135610937565b81801561046457600080fd5b506102416004803603604081101561047b57600080fd5b50803590602001356109b1565b81801561049457600080fd5b50610241600480360360408110156104ab57600080fd5b50803590602001356109fe565b8180156104c457600080fd5b50610241600480360360208110156104db57600080fd5b5035610a4b565b8180156104ee57600080fd5b506102416004803603602081101561050557600080fd5b5035610a91565b86546040516318e647dd60e01b81526001600160a01b038881166004830190815260248301899052604483018890526084830186905260c060648401908152875160c48501528751929094169384936318e647dd938c938c938c938c938c938c939092909160a482019160e40190602088019080838360005b8381101561059d578181015183820152602001610585565b50505050905090810190601f1680156105ca5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156105fd5781810151838201526020016105e5565b50505050905090810190601f16801561062a5780820380516001836020036101000a031916815260200191505b5098505050505050505050600060405180830381600087803b15801561064f57600080fd5b505af1158015610663573d6000803e3d6000fd5b505050505050505050505050565b805460408051631c58a15b60e31b815290516001600160a01b0390921691829163e2c50ad891600480830192600092919082900301818387803b1580156106b757600080fd5b505af11580156106cb573d6000803e3d6000fd5b505050505050565b815460405163671603e760e11b81526020600482018181528451602484015284516001600160a01b0390941693849363ce2c07ce9387939283926044019185019080838360005b8381101561073257818101518382015260200161071a565b50505050905090810190601f16801561075f5780820380516001836020036101000a031916815260200191505b5092505050600060405180830381600087803b15801561077e57600080fd5b505af1158015610792573d6000803e3d6000fd5b50505050505050565b8054604080516308b95c9360e21b815290516001600160a01b039092169182916322e5724c91600480830192600092919082900301818387803b1580156106b757600080fd5b80546040805163c8fba24360e01b815290516001600160a01b0390921691829163c8fba24391600480830192600092919082900301818387803b1580156106b757600080fd5b8154604080516305057fa760e31b81526001600160a01b03848116600483015291519190921691829163282bfd389160248082019260009290919082900301818387803b15801561077e57600080fd5b82546040805163869f946960e01b8152600481018590526024810184905290516001600160a01b0390921691829163869f946991604480830192600092919082900301818387803b1580156108cb57600080fd5b505af11580156108df573d6000803e3d6000fd5b5050505050505050565b815460408051633aac346760e01b8152831515600482015290516001600160a01b03909216918291633aac346791602480830192600092919082900301818387803b15801561077e57600080fd5b835460408051637bb0310f60e11b815260048101869052602481018590526044810184905290516001600160a01b0390921691829163f760621e91606480830192600092919082900301818387803b15801561099257600080fd5b505af11580156109a6573d6000803e3d6000fd5b505050505050505050565b815460408051636e1ba28360e01b81526004810184905290516001600160a01b03909216918291636e1ba28391602480830192600092919082900301818387803b15801561077e57600080fd5b815460408051631fb5146960e21b81526004810184905290516001600160a01b03909216918291637ed451a491602480830192600092919082900301818387803b15801561077e57600080fd5b805460408051635418e40b60e11b815290516001600160a01b0390921691829163a831c81691600480830192600092919082900301818387803b1580156106b757600080fd5b805460408051631150a3f360e11b815290516001600160a01b039092169182916322a147e691600480830192600092919082900301818387803b1580156106b757600080fdfea265627a7a723158209705e530dd9b185a312702f931d2525a425d785972bb69256ad47629a4b5aa4e64736f6c63430005110032",
  "sourceMap": "121:6349:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "121:6349:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1357:605;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1357:605:8;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;1357:605:8;;;-1:-1:-1;;;;;1357:605:8;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;1357:605:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1357:605:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1357:605:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1357:605:8;;;;;;;;;-1:-1:-1;1357:605:8;;;;-1:-1:-1;1357:605:8;;;;-1:-1:-1;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;1357:605:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1357:605:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;1357:605:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1357:605:8;;-1:-1:-1;1357:605:8;;-1:-1:-1;;;;;1357:605:8:i;:::-;;4076:182;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4076:182:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4076:182:8;;:::i;3587:318::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3587:318:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3587:318:8;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3587:318:8;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3587:318:8;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;3587:318:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3587:318:8;;-1:-1:-1;3587:318:8;;-1:-1:-1;;;;;3587:318:8:i;6282:186::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6282:186:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6282:186:8;;:::i;5939:170::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5939:170:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5939:170:8;;:::i;515:210::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;515:210:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;515:210:8;;;;;;-1:-1:-1;;;;;515:210:8;;:::i;2760:314::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2760:314:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2760:314:8;;;;;;;;;;;;:::i;5180:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5180:233:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5180:233:8;;;;;;;;;:::i;2301:288::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2301:288:8;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2301:288:8;;;;;;;;;;;;;;;;;:::i;5576:198::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5576:198:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5576:198:8;;;;;;;:::i;4419:194::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4419:194:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4419:194:8;;;;;;;:::i;3240:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3240:172:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3240:172:8;;:::i;4782:178::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4782:178:8;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4782:178:8;;:::i;1357:605::-;1737:13;;1762:193;;-1:-1:-1;;;1762:193:8;;-1:-1:-1;;;;;1762:193:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:13;;;;;;;1762:30;;1806:9;;1829:7;;1850:10;;1874:21;;1909:13;;1936:9;;1762:193;;;;;;;;;;;;;;;;;;1697:18;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1762:193:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1762:193:8;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;1762:193:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1762:193:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1762:193:8;;;;1357:605;;;;;;;;:::o;4076:182::-;4197:13;;4222:29;;;-1:-1:-1;;;4222:29:8;;;;-1:-1:-1;;;;;4197:13:8;;;;;;4222:27;;:29;;;;;4157:18;;4222:29;;;;;;;4157:18;4197:13;4222:29;;;5:2:-1;;;;30:1;27;20:12;5:2;4222:29:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4222:29:8;;;;4076:182;;:::o;3587:318::-;3822:13;;3847:51;;-1:-1:-1;;;3847:51:8;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3822:13:8;;;;;;3847:31;;3879:18;;3847:51;;;;;;;;;;;;3782:18;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3847:51:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3847:51:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3847:51:8;;;;3587:318;;;:::o;6282:186::-;6405:13;;6430:31;;;-1:-1:-1;;;6430:31:8;;;;-1:-1:-1;;;;;6405:13:8;;;;;;6430:29;;:31;;;;;6365:18;;6430:31;;;;;;;6365:18;6405:13;6430:31;;;5:2:-1;;;;30:1;27;20:12;5939:170:8;6054:13;;6079:23;;;-1:-1:-1;;;6079:23:8;;;;-1:-1:-1;;;;;6054:13:8;;;;;;6079:21;;:23;;;;;6014:18;;6079:23;;;;;;;6014:18;6054:13;6079:23;;;5:2:-1;;;;30:1;27;20:12;515:210:8;661:13;;686:32;;;-1:-1:-1;;;686:32:8;;-1:-1:-1;;;;;686:32:8;;;;;;;;;661:13;;;;;;;686:18;;:32;;;;;621:18;;686:32;;;;;;;;621:18;661:13;686:32;;;5:2:-1;;;;30:1;27;20:12;2760:314:8;2971:13;;2996:71;;;-1:-1:-1;;;2996:71:8;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2971:13:8;;;;;;2996:27;;:71;;;;;2931:18;;2996:71;;;;;;;2931:18;2971:13;2996:71;;;5:2:-1;;;;30:1;27;20:12;5:2;2996:71:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2996:71:8;;;;2760:314;;;;:::o;5180:233::-;5341:13;;5366:40;;;-1:-1:-1;;;5366:40:8;;;;;;;;;;;-1:-1:-1;;;;;5341:13:8;;;;;;5366:29;;:40;;;;;5301:18;;5366:40;;;;;;;5301:18;5341:13;5366:40;;;5:2:-1;;;;30:1;27;20:12;2301:288:8;2507:13;;2532:50;;;-1:-1:-1;;;2532:50:8;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2507:13:8;;;;;;2532:33;;:50;;;;;2467:18;;2532:50;;;;;;;2467:18;2507:13;2532:50;;;5:2:-1;;;;30:1;27;20:12;5:2;2532:50:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2532:50:8;;;;2301:288;;;;;:::o;5576:198::-;5716:13;;5741:26;;;-1:-1:-1;;;5741:26:8;;;;;;;;;;-1:-1:-1;;;;;5716:13:8;;;;;;5741:19;;:26;;;;;5676:18;;5741:26;;;;;;;5676:18;5716:13;5741:26;;;5:2:-1;;;;30:1;27;20:12;4419:194:8;4557:13;;4582:24;;;-1:-1:-1;;;4582:24:8;;;;;;;;;;-1:-1:-1;;;;;4557:13:8;;;;;;4582:17;;:24;;;;;4517:18;;4582:24;;;;;;;4517:18;4557:13;4582:24;;;5:2:-1;;;;30:1;27;20:12;3240:172:8;3356:13;;3381:24;;;-1:-1:-1;;;3381:24:8;;;;-1:-1:-1;;;;;3356:13:8;;;;;;3381:22;;:24;;;;;3316:18;;3381:24;;;;;;;3316:18;3356:13;3381:24;;;5:2:-1;;;;30:1;27;20:12;4782:178:8;4901:13;;4926:27;;;-1:-1:-1;;;4926:27:8;;;;-1:-1:-1;;;;;4901:13:8;;;;;;4926:25;;:27;;;;;4861:18;;4926:27;;;;;;;4861:18;4901:13;4926:27;;;5:2:-1;;;;30:1;27;20:12",
  "source": "pragma solidity 0.5.17;\n\nimport {DepositLog} from \"../DepositLog.sol\";\nimport {DepositUtils} from \"./DepositUtils.sol\";\n\nlibrary OutsourceDepositLogging {\n    /// @notice               Fires a Created event.\n    /// @dev                  `DepositLog.logCreated` fires a Created event with\n    ///                       _keepAddress, msg.sender and block.timestamp.\n    ///                       msg.sender will be the calling Deposit's address.\n    /// @param  _keepAddress  The address of the associated keep.\n    function logCreated(DepositUtils.Deposit storage _d, address _keepAddress)\n        external\n    {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logCreated(_keepAddress);\n    }\n\n    /// @notice                 Fires a RedemptionRequested event.\n    /// @dev                    This is the only event without an explicit timestamp.\n    /// @param  _redeemer       The ethereum address of the redeemer.\n    /// @param  _digest         The calculated sighash digest.\n    /// @param  _utxoValue       The size of the utxo in sat.\n    /// @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n    /// @param  _requestedFee   The redeemer or bump-system specified fee.\n    /// @param  _outpoint       The 36 byte outpoint.\n    /// @return                 True if successful, else revert.\n    function logRedemptionRequested(\n        DepositUtils.Deposit storage _d,\n        address _redeemer,\n        bytes32 _digest,\n        uint256 _utxoValue,\n        bytes memory _redeemerOutputScript,\n        uint256 _requestedFee,\n        bytes memory _outpoint\n    ) public {\n        // not external to allow bytes memory parameters\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logRedemptionRequested(\n            _redeemer,\n            _digest,\n            _utxoValue,\n            _redeemerOutputScript,\n            _requestedFee,\n            _outpoint\n        );\n    }\n\n    /// @notice         Fires a GotRedemptionSignature event.\n    /// @dev            We append the sender, which is the deposit contract that called.\n    /// @param  _digest Signed digest.\n    /// @param  _r      Signature r value.\n    /// @param  _s      Signature s value.\n    /// @return         True if successful, else revert.\n    function logGotRedemptionSignature(\n        DepositUtils.Deposit storage _d,\n        bytes32 _digest,\n        bytes32 _r,\n        bytes32 _s\n    ) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logGotRedemptionSignature(_digest, _r, _s);\n    }\n\n    /// @notice     Fires a RegisteredPubkey event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logRegisteredPubkey(\n        DepositUtils.Deposit storage _d,\n        bytes32 _signingGroupPubkeyX,\n        bytes32 _signingGroupPubkeyY\n    ) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logRegisteredPubkey(_signingGroupPubkeyX, _signingGroupPubkeyY);\n    }\n\n    /// @notice     Fires a SetupFailed event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logSetupFailed(DepositUtils.Deposit storage _d) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logSetupFailed();\n    }\n\n    /// @notice     Fires a FunderAbortRequested event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logFunderRequestedAbort(\n        DepositUtils.Deposit storage _d,\n        bytes memory _abortOutputScript\n    ) public {\n        // not external to allow bytes memory parameters\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logFunderRequestedAbort(_abortOutputScript);\n    }\n\n    /// @notice     Fires a FraudDuringSetup event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logFraudDuringSetup(DepositUtils.Deposit storage _d) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logFraudDuringSetup();\n    }\n\n    /// @notice     Fires a Funded event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logFunded(DepositUtils.Deposit storage _d, bytes32 _txid)\n        external\n    {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logFunded(_txid);\n    }\n\n    /// @notice     Fires a CourtesyCalled event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logCourtesyCalled(DepositUtils.Deposit storage _d) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logCourtesyCalled();\n    }\n\n    /// @notice             Fires a StartedLiquidation event.\n    /// @dev                We append the sender, which is the deposit contract that called.\n    /// @param _wasFraud    True if liquidating for fraud.\n    function logStartedLiquidation(\n        DepositUtils.Deposit storage _d,\n        bool _wasFraud\n    ) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logStartedLiquidation(_wasFraud);\n    }\n\n    /// @notice     Fires a Redeemed event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logRedeemed(DepositUtils.Deposit storage _d, bytes32 _txid)\n        external\n    {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logRedeemed(_txid);\n    }\n\n    /// @notice     Fires a Liquidated event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logLiquidated(DepositUtils.Deposit storage _d) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logLiquidated();\n    }\n\n    /// @notice     Fires a ExitedCourtesyCall event.\n    /// @dev        The logger is on a system contract, so all logs from all deposits are from the same address.\n    function logExitedCourtesyCall(DepositUtils.Deposit storage _d) external {\n        DepositLog _logger = DepositLog(address(_d.tbtcSystem));\n        _logger.logExitedCourtesyCall();\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
    "exportedSymbols": {
      "OutsourceDepositLogging": [
        5418
      ]
    },
    "id": 5419,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5105,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:8"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol",
        "file": "../DepositLog.sol",
        "id": 5107,
        "nodeType": "ImportDirective",
        "scope": 5419,
        "sourceUnit": 440,
        "src": "25:45:8",
        "symbolAliases": [
          {
            "foreign": 5106,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
        "file": "./DepositUtils.sol",
        "id": 5109,
        "nodeType": "ImportDirective",
        "scope": 5419,
        "sourceUnit": 5104,
        "src": "71:48:8",
        "symbolAliases": [
          {
            "foreign": 5108,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 5418,
        "linearizedBaseContracts": [
          5418
        ],
        "name": "OutsourceDepositLogging",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 5131,
              "nodeType": "Block",
              "src": "611:114:8",
              "statements": [
                {
                  "assignments": [
                    5117
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5117,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5131,
                      "src": "621:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5116,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "621:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5124,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5120,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5111,
                              "src": "661:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5121,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "661:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5119,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "653:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "653:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5118,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "642:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5123,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "642:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "621:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5128,
                        "name": "_keepAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5113,
                        "src": "705:12:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5125,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5117,
                        "src": "686:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5127,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logCreated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 133,
                      "src": "686:18:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 5129,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "686:32:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5130,
                  "nodeType": "ExpressionStatement",
                  "src": "686:32:8"
                }
              ]
            },
            "documentation": "@notice               Fires a Created event.\n @dev                  `DepositLog.logCreated` fires a Created event with\n                       _keepAddress, msg.sender and block.timestamp.\n                       msg.sender will be the calling Deposit's address.\n @param  _keepAddress  The address of the associated keep.",
            "id": 5132,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logCreated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5111,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5132,
                  "src": "535:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5110,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "535:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5113,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 5132,
                  "src": "568:20:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "568:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "534:55:8"
            },
            "returnParameters": {
              "id": 5115,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "611:0:8"
            },
            "scope": 5418,
            "src": "515:210:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5169,
              "nodeType": "Block",
              "src": "1630:332:8",
              "statements": [
                {
                  "assignments": [
                    5150
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5150,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5169,
                      "src": "1697:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5149,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "1697:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5157,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5153,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5134,
                              "src": "1737:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5154,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "1737:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1729:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1729:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5151,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "1718:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5156,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1718:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1697:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5161,
                        "name": "_redeemer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5136,
                        "src": "1806:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5162,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5138,
                        "src": "1829:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5163,
                        "name": "_utxoValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5140,
                        "src": "1850:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5164,
                        "name": "_redeemerOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5142,
                        "src": "1874:21:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5165,
                        "name": "_requestedFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5144,
                        "src": "1909:13:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5166,
                        "name": "_outpoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5146,
                        "src": "1936:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5158,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5150,
                        "src": "1762:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5160,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logRedemptionRequested",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 168,
                      "src": "1762:30:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes32,uint256,bytes memory,uint256,bytes memory) external"
                      }
                    },
                    "id": 5167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1762:193:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5168,
                  "nodeType": "ExpressionStatement",
                  "src": "1762:193:8"
                }
              ]
            },
            "documentation": "@notice                 Fires a RedemptionRequested event.\n @dev                    This is the only event without an explicit timestamp.\n @param  _redeemer       The ethereum address of the redeemer.\n @param  _digest         The calculated sighash digest.\n @param  _utxoValue       The size of the utxo in sat.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n @param  _requestedFee   The redeemer or bump-system specified fee.\n @param  _outpoint       The 36 byte outpoint.\n @return                 True if successful, else revert.",
            "id": 5170,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRedemptionRequested",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5147,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5134,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1398:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5133,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "1398:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5136,
                  "name": "_redeemer",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1439:17:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 5135,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1439:7:8",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5138,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1466:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5137,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1466:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5140,
                  "name": "_utxoValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1491:18:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5139,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1491:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5142,
                  "name": "_redeemerOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1519:34:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5141,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1519:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5144,
                  "name": "_requestedFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1563:21:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 5143,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1563:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5146,
                  "name": "_outpoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 5170,
                  "src": "1594:22:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5145,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1594:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1388:234:8"
            },
            "returnParameters": {
              "id": 5148,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1630:0:8"
            },
            "scope": 5418,
            "src": "1357:605:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5198,
              "nodeType": "Block",
              "src": "2457:132:8",
              "statements": [
                {
                  "assignments": [
                    5182
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5182,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5198,
                      "src": "2467:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5181,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "2467:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5189,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5185,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5172,
                              "src": "2507:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5186,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "2507:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5184,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2499:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2499:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5183,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "2488:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5188,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2488:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2467:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5193,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5174,
                        "src": "2566:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5194,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5176,
                        "src": "2575:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5195,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5178,
                        "src": "2579:2:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5190,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5182,
                        "src": "2532:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5192,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logGotRedemptionSignature",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 196,
                      "src": "2532:33:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32,bytes32) external"
                      }
                    },
                    "id": 5196,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2532:50:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5197,
                  "nodeType": "ExpressionStatement",
                  "src": "2532:50:8"
                }
              ]
            },
            "documentation": "@notice         Fires a GotRedemptionSignature event.\n @dev            We append the sender, which is the deposit contract that called.\n @param  _digest Signed digest.\n @param  _r      Signature r value.\n @param  _s      Signature s value.\n @return         True if successful, else revert.",
            "id": 5199,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logGotRedemptionSignature",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5179,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5172,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2345:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5171,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2345:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5174,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2386:15:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2386:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5176,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2411:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5175,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2411:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5178,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 5199,
                  "src": "2431:10:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5177,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2431:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2335:112:8"
            },
            "returnParameters": {
              "id": 5180,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2457:0:8"
            },
            "scope": 5418,
            "src": "2301:288:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5224,
              "nodeType": "Block",
              "src": "2921:153:8",
              "statements": [
                {
                  "assignments": [
                    5209
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5209,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5224,
                      "src": "2931:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5208,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "2931:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5216,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5212,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5201,
                              "src": "2971:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5213,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "2971:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5211,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2963:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5214,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2963:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5210,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "2952:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5215,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2952:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2931:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5220,
                        "name": "_signingGroupPubkeyX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5203,
                        "src": "3024:20:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 5221,
                        "name": "_signingGroupPubkeyY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5205,
                        "src": "3046:20:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5217,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5209,
                        "src": "2996:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5219,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logRegisteredPubkey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 221,
                      "src": "2996:27:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,bytes32) external"
                      }
                    },
                    "id": 5222,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2996:71:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5223,
                  "nodeType": "ExpressionStatement",
                  "src": "2996:71:8"
                }
              ]
            },
            "documentation": "@notice     Fires a RegisteredPubkey event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5225,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRegisteredPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5201,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5225,
                  "src": "2798:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5200,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2798:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5203,
                  "name": "_signingGroupPubkeyX",
                  "nodeType": "VariableDeclaration",
                  "scope": 5225,
                  "src": "2839:28:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5202,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5205,
                  "name": "_signingGroupPubkeyY",
                  "nodeType": "VariableDeclaration",
                  "scope": 5225,
                  "src": "2877:28:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5204,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2877:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2788:123:8"
            },
            "returnParameters": {
              "id": 5207,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2921:0:8"
            },
            "scope": 5418,
            "src": "2760:314:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5244,
              "nodeType": "Block",
              "src": "3306:106:8",
              "statements": [
                {
                  "assignments": [
                    5231
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5231,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5244,
                      "src": "3316:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5230,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "3316:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5238,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5234,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5227,
                              "src": "3356:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5235,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "3356:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3348:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3348:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5232,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "3337:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3337:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3316:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5239,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5231,
                        "src": "3381:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5241,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logSetupFailed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 240,
                      "src": "3381:22:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5242,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3381:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5243,
                  "nodeType": "ExpressionStatement",
                  "src": "3381:24:8"
                }
              ]
            },
            "documentation": "@notice     Fires a SetupFailed event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5245,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logSetupFailed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5228,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5227,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5245,
                  "src": "3264:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5226,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3264:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3263:33:8"
            },
            "returnParameters": {
              "id": 5229,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3306:0:8"
            },
            "scope": 5418,
            "src": "3240:172:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5267,
              "nodeType": "Block",
              "src": "3715:190:8",
              "statements": [
                {
                  "assignments": [
                    5253
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5253,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5267,
                      "src": "3782:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5252,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "3782:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5260,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5256,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5247,
                              "src": "3822:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5257,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "3822:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5255,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "3814:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5258,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3814:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5254,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "3803:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5259,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3803:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3782:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5264,
                        "name": "_abortOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5249,
                        "src": "3879:18:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5261,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5253,
                        "src": "3847:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5263,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFunderRequestedAbort",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 260,
                      "src": "3847:31:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 5265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3847:51:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5266,
                  "nodeType": "ExpressionStatement",
                  "src": "3847:51:8"
                }
              ]
            },
            "documentation": "@notice     Fires a FunderAbortRequested event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5268,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFunderRequestedAbort",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5250,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5247,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5268,
                  "src": "3629:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5246,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3629:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5249,
                  "name": "_abortOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 5268,
                  "src": "3670:31:8",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 5248,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3670:5:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3619:88:8"
            },
            "returnParameters": {
              "id": 5251,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3715:0:8"
            },
            "scope": 5418,
            "src": "3587:318:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 5287,
              "nodeType": "Block",
              "src": "4147:111:8",
              "statements": [
                {
                  "assignments": [
                    5274
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5274,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5287,
                      "src": "4157:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5273,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "4157:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5281,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5277,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5270,
                              "src": "4197:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5278,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "4197:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5276,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4189:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5279,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4189:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5275,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "4178:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5280,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4178:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4157:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5282,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5274,
                        "src": "4222:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5284,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFraudDuringSetup",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 279,
                      "src": "4222:27:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5285,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4222:29:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5286,
                  "nodeType": "ExpressionStatement",
                  "src": "4222:29:8"
                }
              ]
            },
            "documentation": "@notice     Fires a FraudDuringSetup event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5288,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFraudDuringSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5271,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5270,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5288,
                  "src": "4105:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5269,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4105:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4104:33:8"
            },
            "returnParameters": {
              "id": 5272,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4147:0:8"
            },
            "scope": 5418,
            "src": "4076:182:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5310,
              "nodeType": "Block",
              "src": "4507:106:8",
              "statements": [
                {
                  "assignments": [
                    5296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5296,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5310,
                      "src": "4517:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5295,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "4517:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5303,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5299,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5290,
                              "src": "4557:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5300,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "4557:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5298,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4549:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5301,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4549:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5297,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "4538:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5302,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4538:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4517:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5307,
                        "name": "_txid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5292,
                        "src": "4600:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5304,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5296,
                        "src": "4582:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5306,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logFunded",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 301,
                      "src": "4582:17:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 5308,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4582:24:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5309,
                  "nodeType": "ExpressionStatement",
                  "src": "4582:24:8"
                }
              ]
            },
            "documentation": "@notice     Fires a Funded event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5311,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFunded",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5290,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5311,
                  "src": "4438:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5289,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4438:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5292,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 5311,
                  "src": "4471:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5291,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4471:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4437:48:8"
            },
            "returnParameters": {
              "id": 5294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4507:0:8"
            },
            "scope": 5418,
            "src": "4419:194:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5330,
              "nodeType": "Block",
              "src": "4851:109:8",
              "statements": [
                {
                  "assignments": [
                    5317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5317,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5330,
                      "src": "4861:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5316,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "4861:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5324,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5320,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5313,
                              "src": "4901:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5321,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "4901:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4893:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4893:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5318,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "4882:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4882:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4861:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5325,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5317,
                        "src": "4926:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5327,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logCourtesyCalled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 320,
                      "src": "4926:25:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5328,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4926:27:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5329,
                  "nodeType": "ExpressionStatement",
                  "src": "4926:27:8"
                }
              ]
            },
            "documentation": "@notice     Fires a CourtesyCalled event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5331,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logCourtesyCalled",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5313,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5331,
                  "src": "4809:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5312,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4809:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4808:33:8"
            },
            "returnParameters": {
              "id": 5315,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4851:0:8"
            },
            "scope": 5418,
            "src": "4782:178:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5353,
              "nodeType": "Block",
              "src": "5291:122:8",
              "statements": [
                {
                  "assignments": [
                    5339
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5339,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5353,
                      "src": "5301:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5338,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "5301:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5346,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5342,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5333,
                              "src": "5341:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5343,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "5341:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5333:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5333:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5340,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "5322:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5322:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5301:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5350,
                        "name": "_wasFraud",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5335,
                        "src": "5396:9:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5347,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5339,
                        "src": "5366:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5349,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logStartedLiquidation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 342,
                      "src": "5366:29:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bool_$returns$__$",
                        "typeString": "function (bool) external"
                      }
                    },
                    "id": 5351,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5366:40:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5352,
                  "nodeType": "ExpressionStatement",
                  "src": "5366:40:8"
                }
              ]
            },
            "documentation": "@notice             Fires a StartedLiquidation event.\n @dev                We append the sender, which is the deposit contract that called.\n @param _wasFraud    True if liquidating for fraud.",
            "id": 5354,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logStartedLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5336,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5333,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5354,
                  "src": "5220:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5332,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5220:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5335,
                  "name": "_wasFraud",
                  "nodeType": "VariableDeclaration",
                  "scope": 5354,
                  "src": "5261:14:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 5334,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5261:4:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5210:71:8"
            },
            "returnParameters": {
              "id": 5337,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5291:0:8"
            },
            "scope": 5418,
            "src": "5180:233:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5376,
              "nodeType": "Block",
              "src": "5666:108:8",
              "statements": [
                {
                  "assignments": [
                    5362
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5362,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5376,
                      "src": "5676:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5361,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "5676:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5369,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5365,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5356,
                              "src": "5716:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5366,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "5716:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "5708:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5708:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5363,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "5697:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5368,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5697:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5676:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 5373,
                        "name": "_txid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5358,
                        "src": "5761:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5370,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5362,
                        "src": "5741:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5372,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logRedeemed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 364,
                      "src": "5741:19:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 5374,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5741:26:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5375,
                  "nodeType": "ExpressionStatement",
                  "src": "5741:26:8"
                }
              ]
            },
            "documentation": "@notice     Fires a Redeemed event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5377,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRedeemed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5359,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5356,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5377,
                  "src": "5597:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5355,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5597:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 5358,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 5377,
                  "src": "5630:13:8",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 5357,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5630:7:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5596:48:8"
            },
            "returnParameters": {
              "id": 5360,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5666:0:8"
            },
            "scope": 5418,
            "src": "5576:198:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5396,
              "nodeType": "Block",
              "src": "6004:105:8",
              "statements": [
                {
                  "assignments": [
                    5383
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5383,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5396,
                      "src": "6014:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5382,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "6014:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5390,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5386,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5379,
                              "src": "6054:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5387,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "6054:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5385,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6046:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6046:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5384,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "6035:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5389,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6035:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6014:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5391,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5383,
                        "src": "6079:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logLiquidated",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 383,
                      "src": "6079:21:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6079:23:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5395,
                  "nodeType": "ExpressionStatement",
                  "src": "6079:23:8"
                }
              ]
            },
            "documentation": "@notice     Fires a Liquidated event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5397,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logLiquidated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5380,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5379,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5397,
                  "src": "5962:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5378,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5962:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5961:33:8"
            },
            "returnParameters": {
              "id": 5381,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6004:0:8"
            },
            "scope": 5418,
            "src": "5939:170:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 5416,
              "nodeType": "Block",
              "src": "6355:113:8",
              "statements": [
                {
                  "assignments": [
                    5403
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 5403,
                      "name": "_logger",
                      "nodeType": "VariableDeclaration",
                      "scope": 5416,
                      "src": "6365:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_DepositLog_$439",
                        "typeString": "contract DepositLog"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5402,
                        "name": "DepositLog",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 439,
                        "src": "6365:10:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 5410,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5406,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5399,
                              "src": "6405:2:8",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 5407,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tbtcSystem",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3828,
                            "src": "6405:13:8",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                              "typeString": "contract ITBTCSystem"
                            }
                          ],
                          "id": 5405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6397:7:8",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 5408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6397:22:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 5404,
                      "name": "DepositLog",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 439,
                      "src": "6386:10:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_DepositLog_$439_$",
                        "typeString": "type(contract DepositLog)"
                      }
                    },
                    "id": 5409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6386:34:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_DepositLog_$439",
                      "typeString": "contract DepositLog"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6365:55:8"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 5411,
                        "name": "_logger",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5403,
                        "src": "6430:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_DepositLog_$439",
                          "typeString": "contract DepositLog"
                        }
                      },
                      "id": 5413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "logExitedCourtesyCall",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 402,
                      "src": "6430:29:8",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$__$returns$__$",
                        "typeString": "function () external"
                      }
                    },
                    "id": 5414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6430:31:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 5415,
                  "nodeType": "ExpressionStatement",
                  "src": "6430:31:8"
                }
              ]
            },
            "documentation": "@notice     Fires a ExitedCourtesyCall event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
            "id": 5417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logExitedCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 5400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 5399,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 5417,
                  "src": "6313:31:8",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 5398,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6313:20:8",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6312:33:8"
            },
            "returnParameters": {
              "id": 5401,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6355:0:8"
            },
            "scope": 5418,
            "src": "6282:186:8",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 5419,
        "src": "121:6349:8"
      }
    ],
    "src": "0:6471:8"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/OutsourceDepositLogging.sol",
      "exportedSymbols": {
        "OutsourceDepositLogging": [
          5418
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 5105,
        "name": "PragmaDirective",
        "src": "0:23:8"
      },
      {
        "attributes": {
          "SourceUnit": 440,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol",
          "file": "../DepositLog.sol",
          "scope": 5419,
          "symbolAliases": [
            {
              "foreign": 5106,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 5107,
        "name": "ImportDirective",
        "src": "25:45:8"
      },
      {
        "attributes": {
          "SourceUnit": 5104,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
          "file": "./DepositUtils.sol",
          "scope": 5419,
          "symbolAliases": [
            {
              "foreign": 5108,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 5109,
        "name": "ImportDirective",
        "src": "71:48:8"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            5418
          ],
          "name": "OutsourceDepositLogging",
          "scope": 5419
        },
        "children": [
          {
            "attributes": {
              "documentation": "@notice               Fires a Created event.\n @dev                  `DepositLog.logCreated` fires a Created event with\n                       _keepAddress, msg.sender and block.timestamp.\n                       msg.sender will be the calling Deposit's address.\n @param  _keepAddress  The address of the associated keep.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logCreated",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5132,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5110,
                        "name": "UserDefinedTypeName",
                        "src": "535:20:8"
                      }
                    ],
                    "id": 5111,
                    "name": "VariableDeclaration",
                    "src": "535:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_keepAddress",
                      "scope": 5132,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5112,
                        "name": "ElementaryTypeName",
                        "src": "568:7:8"
                      }
                    ],
                    "id": 5113,
                    "name": "VariableDeclaration",
                    "src": "568:20:8"
                  }
                ],
                "id": 5114,
                "name": "ParameterList",
                "src": "534:55:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5115,
                "name": "ParameterList",
                "src": "611:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5117
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5131,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5116,
                            "name": "UserDefinedTypeName",
                            "src": "621:10:8"
                          }
                        ],
                        "id": 5117,
                        "name": "VariableDeclaration",
                        "src": "621:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5118,
                            "name": "Identifier",
                            "src": "642:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5119,
                                "name": "ElementaryTypeNameExpression",
                                "src": "653:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5111,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5120,
                                    "name": "Identifier",
                                    "src": "661:2:8"
                                  }
                                ],
                                "id": 5121,
                                "name": "MemberAccess",
                                "src": "661:13:8"
                              }
                            ],
                            "id": 5122,
                            "name": "FunctionCall",
                            "src": "653:22:8"
                          }
                        ],
                        "id": 5123,
                        "name": "FunctionCall",
                        "src": "642:34:8"
                      }
                    ],
                    "id": 5124,
                    "name": "VariableDeclarationStatement",
                    "src": "621:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logCreated",
                              "referencedDeclaration": 133,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5117,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5125,
                                "name": "Identifier",
                                "src": "686:7:8"
                              }
                            ],
                            "id": 5127,
                            "name": "MemberAccess",
                            "src": "686:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5113,
                              "type": "address",
                              "value": "_keepAddress"
                            },
                            "id": 5128,
                            "name": "Identifier",
                            "src": "705:12:8"
                          }
                        ],
                        "id": 5129,
                        "name": "FunctionCall",
                        "src": "686:32:8"
                      }
                    ],
                    "id": 5130,
                    "name": "ExpressionStatement",
                    "src": "686:32:8"
                  }
                ],
                "id": 5131,
                "name": "Block",
                "src": "611:114:8"
              }
            ],
            "id": 5132,
            "name": "FunctionDefinition",
            "src": "515:210:8"
          },
          {
            "attributes": {
              "documentation": "@notice                 Fires a RedemptionRequested event.\n @dev                    This is the only event without an explicit timestamp.\n @param  _redeemer       The ethereum address of the redeemer.\n @param  _digest         The calculated sighash digest.\n @param  _utxoValue       The size of the utxo in sat.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n @param  _requestedFee   The redeemer or bump-system specified fee.\n @param  _outpoint       The 36 byte outpoint.\n @return                 True if successful, else revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRedemptionRequested",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5133,
                        "name": "UserDefinedTypeName",
                        "src": "1398:20:8"
                      }
                    ],
                    "id": 5134,
                    "name": "VariableDeclaration",
                    "src": "1398:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemer",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 5135,
                        "name": "ElementaryTypeName",
                        "src": "1439:7:8"
                      }
                    ],
                    "id": 5136,
                    "name": "VariableDeclaration",
                    "src": "1439:17:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5137,
                        "name": "ElementaryTypeName",
                        "src": "1466:7:8"
                      }
                    ],
                    "id": 5138,
                    "name": "VariableDeclaration",
                    "src": "1466:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_utxoValue",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5139,
                        "name": "ElementaryTypeName",
                        "src": "1491:7:8"
                      }
                    ],
                    "id": 5140,
                    "name": "VariableDeclaration",
                    "src": "1491:18:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerOutputScript",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5141,
                        "name": "ElementaryTypeName",
                        "src": "1519:5:8"
                      }
                    ],
                    "id": 5142,
                    "name": "VariableDeclaration",
                    "src": "1519:34:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_requestedFee",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 5143,
                        "name": "ElementaryTypeName",
                        "src": "1563:7:8"
                      }
                    ],
                    "id": 5144,
                    "name": "VariableDeclaration",
                    "src": "1563:21:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_outpoint",
                      "scope": 5170,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5145,
                        "name": "ElementaryTypeName",
                        "src": "1594:5:8"
                      }
                    ],
                    "id": 5146,
                    "name": "VariableDeclaration",
                    "src": "1594:22:8"
                  }
                ],
                "id": 5147,
                "name": "ParameterList",
                "src": "1388:234:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5148,
                "name": "ParameterList",
                "src": "1630:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5150
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5169,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5149,
                            "name": "UserDefinedTypeName",
                            "src": "1697:10:8"
                          }
                        ],
                        "id": 5150,
                        "name": "VariableDeclaration",
                        "src": "1697:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5151,
                            "name": "Identifier",
                            "src": "1718:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5152,
                                "name": "ElementaryTypeNameExpression",
                                "src": "1729:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5134,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5153,
                                    "name": "Identifier",
                                    "src": "1737:2:8"
                                  }
                                ],
                                "id": 5154,
                                "name": "MemberAccess",
                                "src": "1737:13:8"
                              }
                            ],
                            "id": 5155,
                            "name": "FunctionCall",
                            "src": "1729:22:8"
                          }
                        ],
                        "id": 5156,
                        "name": "FunctionCall",
                        "src": "1718:34:8"
                      }
                    ],
                    "id": 5157,
                    "name": "VariableDeclarationStatement",
                    "src": "1697:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logRedemptionRequested",
                              "referencedDeclaration": 168,
                              "type": "function (address,bytes32,uint256,bytes memory,uint256,bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5150,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5158,
                                "name": "Identifier",
                                "src": "1762:7:8"
                              }
                            ],
                            "id": 5160,
                            "name": "MemberAccess",
                            "src": "1762:30:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5136,
                              "type": "address",
                              "value": "_redeemer"
                            },
                            "id": 5161,
                            "name": "Identifier",
                            "src": "1806:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5138,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 5162,
                            "name": "Identifier",
                            "src": "1829:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5140,
                              "type": "uint256",
                              "value": "_utxoValue"
                            },
                            "id": 5163,
                            "name": "Identifier",
                            "src": "1850:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5142,
                              "type": "bytes memory",
                              "value": "_redeemerOutputScript"
                            },
                            "id": 5164,
                            "name": "Identifier",
                            "src": "1874:21:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5144,
                              "type": "uint256",
                              "value": "_requestedFee"
                            },
                            "id": 5165,
                            "name": "Identifier",
                            "src": "1909:13:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5146,
                              "type": "bytes memory",
                              "value": "_outpoint"
                            },
                            "id": 5166,
                            "name": "Identifier",
                            "src": "1936:9:8"
                          }
                        ],
                        "id": 5167,
                        "name": "FunctionCall",
                        "src": "1762:193:8"
                      }
                    ],
                    "id": 5168,
                    "name": "ExpressionStatement",
                    "src": "1762:193:8"
                  }
                ],
                "id": 5169,
                "name": "Block",
                "src": "1630:332:8"
              }
            ],
            "id": 5170,
            "name": "FunctionDefinition",
            "src": "1357:605:8"
          },
          {
            "attributes": {
              "documentation": "@notice         Fires a GotRedemptionSignature event.\n @dev            We append the sender, which is the deposit contract that called.\n @param  _digest Signed digest.\n @param  _r      Signature r value.\n @param  _s      Signature s value.\n @return         True if successful, else revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logGotRedemptionSignature",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5199,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5171,
                        "name": "UserDefinedTypeName",
                        "src": "2345:20:8"
                      }
                    ],
                    "id": 5172,
                    "name": "VariableDeclaration",
                    "src": "2345:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 5199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5173,
                        "name": "ElementaryTypeName",
                        "src": "2386:7:8"
                      }
                    ],
                    "id": 5174,
                    "name": "VariableDeclaration",
                    "src": "2386:15:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_r",
                      "scope": 5199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5175,
                        "name": "ElementaryTypeName",
                        "src": "2411:7:8"
                      }
                    ],
                    "id": 5176,
                    "name": "VariableDeclaration",
                    "src": "2411:10:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_s",
                      "scope": 5199,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5177,
                        "name": "ElementaryTypeName",
                        "src": "2431:7:8"
                      }
                    ],
                    "id": 5178,
                    "name": "VariableDeclaration",
                    "src": "2431:10:8"
                  }
                ],
                "id": 5179,
                "name": "ParameterList",
                "src": "2335:112:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5180,
                "name": "ParameterList",
                "src": "2457:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5182
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5198,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5181,
                            "name": "UserDefinedTypeName",
                            "src": "2467:10:8"
                          }
                        ],
                        "id": 5182,
                        "name": "VariableDeclaration",
                        "src": "2467:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5183,
                            "name": "Identifier",
                            "src": "2488:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5184,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2499:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5172,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5185,
                                    "name": "Identifier",
                                    "src": "2507:2:8"
                                  }
                                ],
                                "id": 5186,
                                "name": "MemberAccess",
                                "src": "2507:13:8"
                              }
                            ],
                            "id": 5187,
                            "name": "FunctionCall",
                            "src": "2499:22:8"
                          }
                        ],
                        "id": 5188,
                        "name": "FunctionCall",
                        "src": "2488:34:8"
                      }
                    ],
                    "id": 5189,
                    "name": "VariableDeclarationStatement",
                    "src": "2467:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logGotRedemptionSignature",
                              "referencedDeclaration": 196,
                              "type": "function (bytes32,bytes32,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5182,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5190,
                                "name": "Identifier",
                                "src": "2532:7:8"
                              }
                            ],
                            "id": 5192,
                            "name": "MemberAccess",
                            "src": "2532:33:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5174,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 5193,
                            "name": "Identifier",
                            "src": "2566:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5176,
                              "type": "bytes32",
                              "value": "_r"
                            },
                            "id": 5194,
                            "name": "Identifier",
                            "src": "2575:2:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5178,
                              "type": "bytes32",
                              "value": "_s"
                            },
                            "id": 5195,
                            "name": "Identifier",
                            "src": "2579:2:8"
                          }
                        ],
                        "id": 5196,
                        "name": "FunctionCall",
                        "src": "2532:50:8"
                      }
                    ],
                    "id": 5197,
                    "name": "ExpressionStatement",
                    "src": "2532:50:8"
                  }
                ],
                "id": 5198,
                "name": "Block",
                "src": "2457:132:8"
              }
            ],
            "id": 5199,
            "name": "FunctionDefinition",
            "src": "2301:288:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a RegisteredPubkey event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRegisteredPubkey",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5225,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5200,
                        "name": "UserDefinedTypeName",
                        "src": "2798:20:8"
                      }
                    ],
                    "id": 5201,
                    "name": "VariableDeclaration",
                    "src": "2798:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyX",
                      "scope": 5225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5202,
                        "name": "ElementaryTypeName",
                        "src": "2839:7:8"
                      }
                    ],
                    "id": 5203,
                    "name": "VariableDeclaration",
                    "src": "2839:28:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyY",
                      "scope": 5225,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5204,
                        "name": "ElementaryTypeName",
                        "src": "2877:7:8"
                      }
                    ],
                    "id": 5205,
                    "name": "VariableDeclaration",
                    "src": "2877:28:8"
                  }
                ],
                "id": 5206,
                "name": "ParameterList",
                "src": "2788:123:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5207,
                "name": "ParameterList",
                "src": "2921:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5209
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5224,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5208,
                            "name": "UserDefinedTypeName",
                            "src": "2931:10:8"
                          }
                        ],
                        "id": 5209,
                        "name": "VariableDeclaration",
                        "src": "2931:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5210,
                            "name": "Identifier",
                            "src": "2952:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5211,
                                "name": "ElementaryTypeNameExpression",
                                "src": "2963:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5201,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5212,
                                    "name": "Identifier",
                                    "src": "2971:2:8"
                                  }
                                ],
                                "id": 5213,
                                "name": "MemberAccess",
                                "src": "2971:13:8"
                              }
                            ],
                            "id": 5214,
                            "name": "FunctionCall",
                            "src": "2963:22:8"
                          }
                        ],
                        "id": 5215,
                        "name": "FunctionCall",
                        "src": "2952:34:8"
                      }
                    ],
                    "id": 5216,
                    "name": "VariableDeclarationStatement",
                    "src": "2931:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logRegisteredPubkey",
                              "referencedDeclaration": 221,
                              "type": "function (bytes32,bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5209,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5217,
                                "name": "Identifier",
                                "src": "2996:7:8"
                              }
                            ],
                            "id": 5219,
                            "name": "MemberAccess",
                            "src": "2996:27:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5203,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyX"
                            },
                            "id": 5220,
                            "name": "Identifier",
                            "src": "3024:20:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5205,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyY"
                            },
                            "id": 5221,
                            "name": "Identifier",
                            "src": "3046:20:8"
                          }
                        ],
                        "id": 5222,
                        "name": "FunctionCall",
                        "src": "2996:71:8"
                      }
                    ],
                    "id": 5223,
                    "name": "ExpressionStatement",
                    "src": "2996:71:8"
                  }
                ],
                "id": 5224,
                "name": "Block",
                "src": "2921:153:8"
              }
            ],
            "id": 5225,
            "name": "FunctionDefinition",
            "src": "2760:314:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a SetupFailed event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logSetupFailed",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5245,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5226,
                        "name": "UserDefinedTypeName",
                        "src": "3264:20:8"
                      }
                    ],
                    "id": 5227,
                    "name": "VariableDeclaration",
                    "src": "3264:31:8"
                  }
                ],
                "id": 5228,
                "name": "ParameterList",
                "src": "3263:33:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5229,
                "name": "ParameterList",
                "src": "3306:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5231
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5244,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5230,
                            "name": "UserDefinedTypeName",
                            "src": "3316:10:8"
                          }
                        ],
                        "id": 5231,
                        "name": "VariableDeclaration",
                        "src": "3316:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5232,
                            "name": "Identifier",
                            "src": "3337:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5233,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3348:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5227,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5234,
                                    "name": "Identifier",
                                    "src": "3356:2:8"
                                  }
                                ],
                                "id": 5235,
                                "name": "MemberAccess",
                                "src": "3356:13:8"
                              }
                            ],
                            "id": 5236,
                            "name": "FunctionCall",
                            "src": "3348:22:8"
                          }
                        ],
                        "id": 5237,
                        "name": "FunctionCall",
                        "src": "3337:34:8"
                      }
                    ],
                    "id": 5238,
                    "name": "VariableDeclarationStatement",
                    "src": "3316:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logSetupFailed",
                              "referencedDeclaration": 240,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5231,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5239,
                                "name": "Identifier",
                                "src": "3381:7:8"
                              }
                            ],
                            "id": 5241,
                            "name": "MemberAccess",
                            "src": "3381:22:8"
                          }
                        ],
                        "id": 5242,
                        "name": "FunctionCall",
                        "src": "3381:24:8"
                      }
                    ],
                    "id": 5243,
                    "name": "ExpressionStatement",
                    "src": "3381:24:8"
                  }
                ],
                "id": 5244,
                "name": "Block",
                "src": "3306:106:8"
              }
            ],
            "id": 5245,
            "name": "FunctionDefinition",
            "src": "3240:172:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a FunderAbortRequested event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFunderRequestedAbort",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5268,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5246,
                        "name": "UserDefinedTypeName",
                        "src": "3629:20:8"
                      }
                    ],
                    "id": 5247,
                    "name": "VariableDeclaration",
                    "src": "3629:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_abortOutputScript",
                      "scope": 5268,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 5248,
                        "name": "ElementaryTypeName",
                        "src": "3670:5:8"
                      }
                    ],
                    "id": 5249,
                    "name": "VariableDeclaration",
                    "src": "3670:31:8"
                  }
                ],
                "id": 5250,
                "name": "ParameterList",
                "src": "3619:88:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5251,
                "name": "ParameterList",
                "src": "3715:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5253
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5267,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5252,
                            "name": "UserDefinedTypeName",
                            "src": "3782:10:8"
                          }
                        ],
                        "id": 5253,
                        "name": "VariableDeclaration",
                        "src": "3782:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5254,
                            "name": "Identifier",
                            "src": "3803:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5255,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3814:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5247,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5256,
                                    "name": "Identifier",
                                    "src": "3822:2:8"
                                  }
                                ],
                                "id": 5257,
                                "name": "MemberAccess",
                                "src": "3822:13:8"
                              }
                            ],
                            "id": 5258,
                            "name": "FunctionCall",
                            "src": "3814:22:8"
                          }
                        ],
                        "id": 5259,
                        "name": "FunctionCall",
                        "src": "3803:34:8"
                      }
                    ],
                    "id": 5260,
                    "name": "VariableDeclarationStatement",
                    "src": "3782:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFunderRequestedAbort",
                              "referencedDeclaration": 260,
                              "type": "function (bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5253,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5261,
                                "name": "Identifier",
                                "src": "3847:7:8"
                              }
                            ],
                            "id": 5263,
                            "name": "MemberAccess",
                            "src": "3847:31:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5249,
                              "type": "bytes memory",
                              "value": "_abortOutputScript"
                            },
                            "id": 5264,
                            "name": "Identifier",
                            "src": "3879:18:8"
                          }
                        ],
                        "id": 5265,
                        "name": "FunctionCall",
                        "src": "3847:51:8"
                      }
                    ],
                    "id": 5266,
                    "name": "ExpressionStatement",
                    "src": "3847:51:8"
                  }
                ],
                "id": 5267,
                "name": "Block",
                "src": "3715:190:8"
              }
            ],
            "id": 5268,
            "name": "FunctionDefinition",
            "src": "3587:318:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a FraudDuringSetup event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFraudDuringSetup",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5288,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5269,
                        "name": "UserDefinedTypeName",
                        "src": "4105:20:8"
                      }
                    ],
                    "id": 5270,
                    "name": "VariableDeclaration",
                    "src": "4105:31:8"
                  }
                ],
                "id": 5271,
                "name": "ParameterList",
                "src": "4104:33:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5272,
                "name": "ParameterList",
                "src": "4147:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5274
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5287,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5273,
                            "name": "UserDefinedTypeName",
                            "src": "4157:10:8"
                          }
                        ],
                        "id": 5274,
                        "name": "VariableDeclaration",
                        "src": "4157:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5275,
                            "name": "Identifier",
                            "src": "4178:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5276,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4189:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5270,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5277,
                                    "name": "Identifier",
                                    "src": "4197:2:8"
                                  }
                                ],
                                "id": 5278,
                                "name": "MemberAccess",
                                "src": "4197:13:8"
                              }
                            ],
                            "id": 5279,
                            "name": "FunctionCall",
                            "src": "4189:22:8"
                          }
                        ],
                        "id": 5280,
                        "name": "FunctionCall",
                        "src": "4178:34:8"
                      }
                    ],
                    "id": 5281,
                    "name": "VariableDeclarationStatement",
                    "src": "4157:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFraudDuringSetup",
                              "referencedDeclaration": 279,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5274,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5282,
                                "name": "Identifier",
                                "src": "4222:7:8"
                              }
                            ],
                            "id": 5284,
                            "name": "MemberAccess",
                            "src": "4222:27:8"
                          }
                        ],
                        "id": 5285,
                        "name": "FunctionCall",
                        "src": "4222:29:8"
                      }
                    ],
                    "id": 5286,
                    "name": "ExpressionStatement",
                    "src": "4222:29:8"
                  }
                ],
                "id": 5287,
                "name": "Block",
                "src": "4147:111:8"
              }
            ],
            "id": 5288,
            "name": "FunctionDefinition",
            "src": "4076:182:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Funded event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFunded",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5311,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5289,
                        "name": "UserDefinedTypeName",
                        "src": "4438:20:8"
                      }
                    ],
                    "id": 5290,
                    "name": "VariableDeclaration",
                    "src": "4438:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txid",
                      "scope": 5311,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5291,
                        "name": "ElementaryTypeName",
                        "src": "4471:7:8"
                      }
                    ],
                    "id": 5292,
                    "name": "VariableDeclaration",
                    "src": "4471:13:8"
                  }
                ],
                "id": 5293,
                "name": "ParameterList",
                "src": "4437:48:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5294,
                "name": "ParameterList",
                "src": "4507:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5296
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5310,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5295,
                            "name": "UserDefinedTypeName",
                            "src": "4517:10:8"
                          }
                        ],
                        "id": 5296,
                        "name": "VariableDeclaration",
                        "src": "4517:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5297,
                            "name": "Identifier",
                            "src": "4538:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5298,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4549:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5290,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5299,
                                    "name": "Identifier",
                                    "src": "4557:2:8"
                                  }
                                ],
                                "id": 5300,
                                "name": "MemberAccess",
                                "src": "4557:13:8"
                              }
                            ],
                            "id": 5301,
                            "name": "FunctionCall",
                            "src": "4549:22:8"
                          }
                        ],
                        "id": 5302,
                        "name": "FunctionCall",
                        "src": "4538:34:8"
                      }
                    ],
                    "id": 5303,
                    "name": "VariableDeclarationStatement",
                    "src": "4517:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logFunded",
                              "referencedDeclaration": 301,
                              "type": "function (bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5296,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5304,
                                "name": "Identifier",
                                "src": "4582:7:8"
                              }
                            ],
                            "id": 5306,
                            "name": "MemberAccess",
                            "src": "4582:17:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5292,
                              "type": "bytes32",
                              "value": "_txid"
                            },
                            "id": 5307,
                            "name": "Identifier",
                            "src": "4600:5:8"
                          }
                        ],
                        "id": 5308,
                        "name": "FunctionCall",
                        "src": "4582:24:8"
                      }
                    ],
                    "id": 5309,
                    "name": "ExpressionStatement",
                    "src": "4582:24:8"
                  }
                ],
                "id": 5310,
                "name": "Block",
                "src": "4507:106:8"
              }
            ],
            "id": 5311,
            "name": "FunctionDefinition",
            "src": "4419:194:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a CourtesyCalled event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logCourtesyCalled",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5331,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5312,
                        "name": "UserDefinedTypeName",
                        "src": "4809:20:8"
                      }
                    ],
                    "id": 5313,
                    "name": "VariableDeclaration",
                    "src": "4809:31:8"
                  }
                ],
                "id": 5314,
                "name": "ParameterList",
                "src": "4808:33:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5315,
                "name": "ParameterList",
                "src": "4851:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5317
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5330,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5316,
                            "name": "UserDefinedTypeName",
                            "src": "4861:10:8"
                          }
                        ],
                        "id": 5317,
                        "name": "VariableDeclaration",
                        "src": "4861:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5318,
                            "name": "Identifier",
                            "src": "4882:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5319,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4893:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5313,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5320,
                                    "name": "Identifier",
                                    "src": "4901:2:8"
                                  }
                                ],
                                "id": 5321,
                                "name": "MemberAccess",
                                "src": "4901:13:8"
                              }
                            ],
                            "id": 5322,
                            "name": "FunctionCall",
                            "src": "4893:22:8"
                          }
                        ],
                        "id": 5323,
                        "name": "FunctionCall",
                        "src": "4882:34:8"
                      }
                    ],
                    "id": 5324,
                    "name": "VariableDeclarationStatement",
                    "src": "4861:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logCourtesyCalled",
                              "referencedDeclaration": 320,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5317,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5325,
                                "name": "Identifier",
                                "src": "4926:7:8"
                              }
                            ],
                            "id": 5327,
                            "name": "MemberAccess",
                            "src": "4926:25:8"
                          }
                        ],
                        "id": 5328,
                        "name": "FunctionCall",
                        "src": "4926:27:8"
                      }
                    ],
                    "id": 5329,
                    "name": "ExpressionStatement",
                    "src": "4926:27:8"
                  }
                ],
                "id": 5330,
                "name": "Block",
                "src": "4851:109:8"
              }
            ],
            "id": 5331,
            "name": "FunctionDefinition",
            "src": "4782:178:8"
          },
          {
            "attributes": {
              "documentation": "@notice             Fires a StartedLiquidation event.\n @dev                We append the sender, which is the deposit contract that called.\n @param _wasFraud    True if liquidating for fraud.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logStartedLiquidation",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5354,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5332,
                        "name": "UserDefinedTypeName",
                        "src": "5220:20:8"
                      }
                    ],
                    "id": 5333,
                    "name": "VariableDeclaration",
                    "src": "5220:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_wasFraud",
                      "scope": 5354,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 5334,
                        "name": "ElementaryTypeName",
                        "src": "5261:4:8"
                      }
                    ],
                    "id": 5335,
                    "name": "VariableDeclaration",
                    "src": "5261:14:8"
                  }
                ],
                "id": 5336,
                "name": "ParameterList",
                "src": "5210:71:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5337,
                "name": "ParameterList",
                "src": "5291:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5339
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5353,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5338,
                            "name": "UserDefinedTypeName",
                            "src": "5301:10:8"
                          }
                        ],
                        "id": 5339,
                        "name": "VariableDeclaration",
                        "src": "5301:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5340,
                            "name": "Identifier",
                            "src": "5322:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5341,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5333:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5333,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5342,
                                    "name": "Identifier",
                                    "src": "5341:2:8"
                                  }
                                ],
                                "id": 5343,
                                "name": "MemberAccess",
                                "src": "5341:13:8"
                              }
                            ],
                            "id": 5344,
                            "name": "FunctionCall",
                            "src": "5333:22:8"
                          }
                        ],
                        "id": 5345,
                        "name": "FunctionCall",
                        "src": "5322:34:8"
                      }
                    ],
                    "id": 5346,
                    "name": "VariableDeclarationStatement",
                    "src": "5301:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logStartedLiquidation",
                              "referencedDeclaration": 342,
                              "type": "function (bool) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5339,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5347,
                                "name": "Identifier",
                                "src": "5366:7:8"
                              }
                            ],
                            "id": 5349,
                            "name": "MemberAccess",
                            "src": "5366:29:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5335,
                              "type": "bool",
                              "value": "_wasFraud"
                            },
                            "id": 5350,
                            "name": "Identifier",
                            "src": "5396:9:8"
                          }
                        ],
                        "id": 5351,
                        "name": "FunctionCall",
                        "src": "5366:40:8"
                      }
                    ],
                    "id": 5352,
                    "name": "ExpressionStatement",
                    "src": "5366:40:8"
                  }
                ],
                "id": 5353,
                "name": "Block",
                "src": "5291:122:8"
              }
            ],
            "id": 5354,
            "name": "FunctionDefinition",
            "src": "5180:233:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Redeemed event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRedeemed",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5377,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5355,
                        "name": "UserDefinedTypeName",
                        "src": "5597:20:8"
                      }
                    ],
                    "id": 5356,
                    "name": "VariableDeclaration",
                    "src": "5597:31:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txid",
                      "scope": 5377,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 5357,
                        "name": "ElementaryTypeName",
                        "src": "5630:7:8"
                      }
                    ],
                    "id": 5358,
                    "name": "VariableDeclaration",
                    "src": "5630:13:8"
                  }
                ],
                "id": 5359,
                "name": "ParameterList",
                "src": "5596:48:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5360,
                "name": "ParameterList",
                "src": "5666:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5362
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5376,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5361,
                            "name": "UserDefinedTypeName",
                            "src": "5676:10:8"
                          }
                        ],
                        "id": 5362,
                        "name": "VariableDeclaration",
                        "src": "5676:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5363,
                            "name": "Identifier",
                            "src": "5697:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5364,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5708:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5356,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5365,
                                    "name": "Identifier",
                                    "src": "5716:2:8"
                                  }
                                ],
                                "id": 5366,
                                "name": "MemberAccess",
                                "src": "5716:13:8"
                              }
                            ],
                            "id": 5367,
                            "name": "FunctionCall",
                            "src": "5708:22:8"
                          }
                        ],
                        "id": 5368,
                        "name": "FunctionCall",
                        "src": "5697:34:8"
                      }
                    ],
                    "id": 5369,
                    "name": "VariableDeclarationStatement",
                    "src": "5676:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logRedeemed",
                              "referencedDeclaration": 364,
                              "type": "function (bytes32) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5362,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5370,
                                "name": "Identifier",
                                "src": "5741:7:8"
                              }
                            ],
                            "id": 5372,
                            "name": "MemberAccess",
                            "src": "5741:19:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5358,
                              "type": "bytes32",
                              "value": "_txid"
                            },
                            "id": 5373,
                            "name": "Identifier",
                            "src": "5761:5:8"
                          }
                        ],
                        "id": 5374,
                        "name": "FunctionCall",
                        "src": "5741:26:8"
                      }
                    ],
                    "id": 5375,
                    "name": "ExpressionStatement",
                    "src": "5741:26:8"
                  }
                ],
                "id": 5376,
                "name": "Block",
                "src": "5666:108:8"
              }
            ],
            "id": 5377,
            "name": "FunctionDefinition",
            "src": "5576:198:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Liquidated event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logLiquidated",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5397,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5378,
                        "name": "UserDefinedTypeName",
                        "src": "5962:20:8"
                      }
                    ],
                    "id": 5379,
                    "name": "VariableDeclaration",
                    "src": "5962:31:8"
                  }
                ],
                "id": 5380,
                "name": "ParameterList",
                "src": "5961:33:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5381,
                "name": "ParameterList",
                "src": "6004:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5383
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5396,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5382,
                            "name": "UserDefinedTypeName",
                            "src": "6014:10:8"
                          }
                        ],
                        "id": 5383,
                        "name": "VariableDeclaration",
                        "src": "6014:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5384,
                            "name": "Identifier",
                            "src": "6035:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5385,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6046:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5379,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5386,
                                    "name": "Identifier",
                                    "src": "6054:2:8"
                                  }
                                ],
                                "id": 5387,
                                "name": "MemberAccess",
                                "src": "6054:13:8"
                              }
                            ],
                            "id": 5388,
                            "name": "FunctionCall",
                            "src": "6046:22:8"
                          }
                        ],
                        "id": 5389,
                        "name": "FunctionCall",
                        "src": "6035:34:8"
                      }
                    ],
                    "id": 5390,
                    "name": "VariableDeclarationStatement",
                    "src": "6014:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logLiquidated",
                              "referencedDeclaration": 383,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5383,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5391,
                                "name": "Identifier",
                                "src": "6079:7:8"
                              }
                            ],
                            "id": 5393,
                            "name": "MemberAccess",
                            "src": "6079:21:8"
                          }
                        ],
                        "id": 5394,
                        "name": "FunctionCall",
                        "src": "6079:23:8"
                      }
                    ],
                    "id": 5395,
                    "name": "ExpressionStatement",
                    "src": "6079:23:8"
                  }
                ],
                "id": 5396,
                "name": "Block",
                "src": "6004:105:8"
              }
            ],
            "id": 5397,
            "name": "FunctionDefinition",
            "src": "5939:170:8"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a ExitedCourtesyCall event.\n @dev        The logger is on a system contract, so all logs from all deposits are from the same address.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logExitedCourtesyCall",
              "scope": 5418,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 5417,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 5398,
                        "name": "UserDefinedTypeName",
                        "src": "6313:20:8"
                      }
                    ],
                    "id": 5399,
                    "name": "VariableDeclaration",
                    "src": "6313:31:8"
                  }
                ],
                "id": 5400,
                "name": "ParameterList",
                "src": "6312:33:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 5401,
                "name": "ParameterList",
                "src": "6355:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        5403
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "name": "_logger",
                          "scope": 5416,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract DepositLog",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "DepositLog",
                              "referencedDeclaration": 439,
                              "type": "contract DepositLog"
                            },
                            "id": 5402,
                            "name": "UserDefinedTypeName",
                            "src": "6365:10:8"
                          }
                        ],
                        "id": 5403,
                        "name": "VariableDeclaration",
                        "src": "6365:18:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "contract DepositLog",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 439,
                              "type": "type(contract DepositLog)",
                              "value": "DepositLog"
                            },
                            "id": 5404,
                            "name": "Identifier",
                            "src": "6386:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "address",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_ITBTCSystem_$5511",
                                      "typeString": "contract ITBTCSystem"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(address)",
                                  "value": "address"
                                },
                                "id": 5405,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6397:7:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "tbtcSystem",
                                  "referencedDeclaration": 3828,
                                  "type": "contract ITBTCSystem"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5399,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 5406,
                                    "name": "Identifier",
                                    "src": "6405:2:8"
                                  }
                                ],
                                "id": 5407,
                                "name": "MemberAccess",
                                "src": "6405:13:8"
                              }
                            ],
                            "id": 5408,
                            "name": "FunctionCall",
                            "src": "6397:22:8"
                          }
                        ],
                        "id": 5409,
                        "name": "FunctionCall",
                        "src": "6386:34:8"
                      }
                    ],
                    "id": 5410,
                    "name": "VariableDeclarationStatement",
                    "src": "6365:55:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "logExitedCourtesyCall",
                              "referencedDeclaration": 402,
                              "type": "function () external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5403,
                                  "type": "contract DepositLog",
                                  "value": "_logger"
                                },
                                "id": 5411,
                                "name": "Identifier",
                                "src": "6430:7:8"
                              }
                            ],
                            "id": 5413,
                            "name": "MemberAccess",
                            "src": "6430:29:8"
                          }
                        ],
                        "id": 5414,
                        "name": "FunctionCall",
                        "src": "6430:31:8"
                      }
                    ],
                    "id": 5415,
                    "name": "ExpressionStatement",
                    "src": "6430:31:8"
                  }
                ],
                "id": 5416,
                "name": "Block",
                "src": "6355:113:8"
              }
            ],
            "id": 5417,
            "name": "FunctionDefinition",
            "src": "6282:186:8"
          }
        ],
        "id": 5418,
        "name": "ContractDefinition",
        "src": "121:6349:8"
      }
    ],
    "id": 5419,
    "name": "SourceUnit",
    "src": "0:6471:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xb131FcDE5910d616C6f36421153f4608b6175Bcb",
      "transactionHash": "0x4c97f4f2cf1d1ca53a998e30573367d58e7f75182a6dec1ac10186ab8cb8f502"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.137Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "logCourtesyCalled(DepositUtils.Deposit storage)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logCreated(DepositUtils.Deposit storage,address)": {
        "details": "`DepositLog.logCreated` fires a Created event with                       _keepAddress, msg.sender and block.timestamp.                       msg.sender will be the calling Deposit's address.",
        "params": {
          "_keepAddress": "The address of the associated keep."
        }
      },
      "logExitedCourtesyCall(DepositUtils.Deposit storage)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logFraudDuringSetup(DepositUtils.Deposit storage)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logFunded(DepositUtils.Deposit storage,bytes32)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logFunderRequestedAbort(DepositUtils.Deposit storage,bytes)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logGotRedemptionSignature(DepositUtils.Deposit storage,bytes32,bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_digest": "Signed digest.",
          "_r": "Signature r value.",
          "_s": "Signature s value."
        },
        "return": "True if successful, else revert."
      },
      "logLiquidated(DepositUtils.Deposit storage)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logRedeemed(DepositUtils.Deposit storage,bytes32)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logRedemptionRequested(DepositUtils.Deposit storage,address,bytes32,uint256,bytes,uint256,bytes)": {
        "details": "This is the only event without an explicit timestamp.",
        "params": {
          "_digest": "The calculated sighash digest.",
          "_outpoint": "The 36 byte outpoint.",
          "_redeemer": "The ethereum address of the redeemer.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script.",
          "_requestedFee": "The redeemer or bump-system specified fee.",
          "_utxoValue": "The size of the utxo in sat."
        },
        "return": "True if successful, else revert."
      },
      "logRegisteredPubkey(DepositUtils.Deposit storage,bytes32,bytes32)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logSetupFailed(DepositUtils.Deposit storage)": {
        "details": "The logger is on a system contract, so all logs from all deposits are from the same address."
      },
      "logStartedLiquidation(DepositUtils.Deposit storage,bool)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_wasFraud": "True if liquidating for fraud."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "logCourtesyCalled(DepositUtils.Deposit storage)": {
        "notice": "Fires a CourtesyCalled event."
      },
      "logCreated(DepositUtils.Deposit storage,address)": {
        "notice": "Fires a Created event."
      },
      "logExitedCourtesyCall(DepositUtils.Deposit storage)": {
        "notice": "Fires a ExitedCourtesyCall event."
      },
      "logFraudDuringSetup(DepositUtils.Deposit storage)": {
        "notice": "Fires a FraudDuringSetup event."
      },
      "logFunded(DepositUtils.Deposit storage,bytes32)": {
        "notice": "Fires a Funded event."
      },
      "logFunderRequestedAbort(DepositUtils.Deposit storage,bytes)": {
        "notice": "Fires a FunderAbortRequested event."
      },
      "logGotRedemptionSignature(DepositUtils.Deposit storage,bytes32,bytes32,bytes32)": {
        "notice": "Fires a GotRedemptionSignature event."
      },
      "logLiquidated(DepositUtils.Deposit storage)": {
        "notice": "Fires a Liquidated event."
      },
      "logRedeemed(DepositUtils.Deposit storage,bytes32)": {
        "notice": "Fires a Redeemed event."
      },
      "logRedemptionRequested(DepositUtils.Deposit storage,address,bytes32,uint256,bytes,uint256,bytes)": {
        "notice": "Fires a RedemptionRequested event."
      },
      "logRegisteredPubkey(DepositUtils.Deposit storage,bytes32,bytes32)": {
        "notice": "Fires a RegisteredPubkey event."
      },
      "logSetupFailed(DepositUtils.Deposit storage)": {
        "notice": "Fires a SetupFailed event."
      },
      "logStartedLiquidation(DepositUtils.Deposit storage,bool)": {
        "notice": "Fires a StartedLiquidation event."
      }
    }
  }
}